From ca8bc789026474a912c789008135871c0a6590db Mon Sep 17 00:00:00 2001 From: dtcxzyw <15650457+dtcxzyw@users.noreply.github.com> Date: Wed, 5 Feb 2025 05:25:48 +0800 Subject: [PATCH 1/3] pre-commit: PR125764 --- scripts/setup_pre_commit_patch.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c5409e09ef4..dfe24d5adca 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/125764 export COMPTIME_MODE=0 # Please rebase manually From 720b64754152173dccd0af7d1425f94b158bac5c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 4 Feb 2025 22:02:15 +0000 Subject: [PATCH 2/3] pre-commit: Update --- bench/abc/optimized/extraUtilMaj.ll | 2 +- bench/abc/optimized/mpmTruth.ll | 72 +- .../optimized/DeflateDecompressor.ll | 384 ++++--- bench/darktable/optimized/IiqDecoder.ll | 329 +++--- .../optimized/OlympusDecompressor.ll | 884 ++++++++-------- .../darktable/optimized/PentaxDecompressor.ll | 475 ++++----- bench/darktable/optimized/RafDecoder.ll | 502 ++++----- .../optimized/SamsungV0Decompressor.ll | 642 ++++++------ .../optimized/SamsungV1Decompressor.ll | 291 +++--- bench/gromacs/optimized/lmmin.ll | 951 +++++++++--------- bench/icu/optimized/rematch.ll | 199 ++-- bench/llvm/optimized/TargetLoweringBase.ll | 684 ++++++------- bench/luajit/optimized/minilua.ll | 18 +- bench/miniaudio/optimized/unity.ll | 372 ++++--- .../opencv/optimized/fast_window_binarizer.ll | 292 +++--- bench/opencv/optimized/resize.ll | 3 +- bench/openjdk/optimized/sharedRuntimeTrig.ll | 52 +- .../openjdk/optimized/sharedRuntime_x86_64.ll | 293 +++--- .../optimized/libcrypto-lib-rsa_pk1.ll | 13 +- bench/postgres/optimized/zic.ll | 614 +++++------ bench/qemu/optimized/block_qcow2-cluster.ll | 16 +- bench/raylib/optimized/raudio.ll | 636 ++++++------ 22 files changed, 3866 insertions(+), 3858 deletions(-) diff --git a/bench/abc/optimized/extraUtilMaj.ll b/bench/abc/optimized/extraUtilMaj.ll index cc1f4880b7b..f58652e46d3 100644 --- a/bench/abc/optimized/extraUtilMaj.ll +++ b/bench/abc/optimized/extraUtilMaj.ll @@ -1075,7 +1075,7 @@ Abc_TtCopy.exit: ; preds = %.lr.ph.i39, %Gem_Gr br i1 %70, label %.lr.ph.i43, label %Abc_TtSwapAdjacent.exit, !llvm.loop !67 71: ; preds = %62 - %72 = icmp samesign ult i32 %indvars119, 7 + %72 = icmp samesign ult i64 %indvars.iv, 7 %73 = trunc i64 %indvars.iv to i32 %74 = add i32 %73, -6 %75 = shl nuw i32 1, %74 diff --git a/bench/abc/optimized/mpmTruth.ll b/bench/abc/optimized/mpmTruth.ll index 8a26ee68f68..2cbc5c027c2 100644 --- a/bench/abc/optimized/mpmTruth.ll +++ b/bench/abc/optimized/mpmTruth.ll @@ -107,15 +107,15 @@ define range(i32 0, 2) i32 @Mpm_CutComputeTruth(ptr noundef %0, ptr noundef capt br i1 %82, label %89, label %83 83: ; preds = %76 - %84 = trunc nsw i64 %indvars.iv.next.i.i to i32 - %85 = icmp samesign ult i32 %.017.i.i, %84 - br i1 %85, label %86, label %87 + %84 = icmp samesign ugt i64 %indvars.iv.next.i.i, %77 + br i1 %84, label %85, label %87 -86: ; preds = %83 - call fastcc void @Abc_TtSwapVars(ptr noundef nonnull %11, i32 noundef %16, i32 noundef %.017.i.i, i32 noundef %84) +85: ; preds = %83 + %86 = trunc nsw i64 %indvars.iv.next.i.i to i32 + call fastcc void @Abc_TtSwapVars(ptr noundef nonnull %11, i32 noundef %16, i32 noundef %.017.i.i, i32 noundef %86) br label %87 -87: ; preds = %86, %83 +87: ; preds = %85, %83 %88 = add nsw i32 %.017.i.i, -1 br label %89 @@ -153,15 +153,15 @@ Mpm_TruthStretch.exit.i: ; preds = %89, %50 br i1 %107, label %114, label %108 108: ; preds = %101 - %109 = trunc nsw i64 %indvars.iv.next.i53.i to i32 - %110 = icmp samesign ult i32 %.017.i52.i, %109 - br i1 %110, label %111, label %112 + %109 = icmp samesign ugt i64 %indvars.iv.next.i53.i, %102 + br i1 %109, label %110, label %112 -111: ; preds = %108 - call fastcc void @Abc_TtSwapVars(ptr noundef nonnull %12, i32 noundef %16, i32 noundef %.017.i52.i, i32 noundef %109) +110: ; preds = %108 + %111 = trunc nsw i64 %indvars.iv.next.i53.i to i32 + call fastcc void @Abc_TtSwapVars(ptr noundef nonnull %12, i32 noundef %16, i32 noundef %.017.i52.i, i32 noundef %111) br label %112 -112: ; preds = %111, %108 +112: ; preds = %110, %108 %113 = add nsw i32 %.017.i52.i, -1 br label %114 @@ -224,15 +224,15 @@ Mpm_TruthStretch.exit55.i: ; preds = %114, %Mpm_TruthStre br i1 %152, label %159, label %153 153: ; preds = %146 - %154 = trunc nsw i64 %indvars.iv.next.i59.i to i32 - %155 = icmp samesign ult i32 %.017.i58.i, %154 - br i1 %155, label %156, label %157 + %154 = icmp samesign ugt i64 %indvars.iv.next.i59.i, %147 + br i1 %154, label %155, label %157 -156: ; preds = %153 - call fastcc void @Abc_TtSwapVars(ptr noundef nonnull %13, i32 noundef %16, i32 noundef %.017.i58.i, i32 noundef %154) +155: ; preds = %153 + %156 = trunc nsw i64 %indvars.iv.next.i59.i to i32 + call fastcc void @Abc_TtSwapVars(ptr noundef nonnull %13, i32 noundef %16, i32 noundef %.017.i58.i, i32 noundef %156) br label %157 -157: ; preds = %156, %153 +157: ; preds = %155, %153 %158 = add nsw i32 %.017.i58.i, -1 br label %159 @@ -577,15 +577,15 @@ Abc_TtCopy.exit86.i: ; preds = %.lr.ph.i75.i, %.lr. br i1 %316, label %323, label %317 317: ; preds = %310 - %318 = trunc nsw i64 %indvars.iv.next.i89.i to i32 - %319 = icmp samesign ult i32 %.017.i.i36, %318 - br i1 %319, label %320, label %321 + %318 = icmp samesign ugt i64 %indvars.iv.next.i89.i, %311 + br i1 %318, label %319, label %321 -320: ; preds = %317 - tail call fastcc void @Abc_TtSwapVars(ptr noundef nonnull %270, i32 noundef %16, i32 noundef %.017.i.i36, i32 noundef %318) +319: ; preds = %317 + %320 = trunc nsw i64 %indvars.iv.next.i89.i to i32 + tail call fastcc void @Abc_TtSwapVars(ptr noundef nonnull %270, i32 noundef %16, i32 noundef %.017.i.i36, i32 noundef %320) br label %321 -321: ; preds = %320, %317 +321: ; preds = %319, %317 %322 = add nsw i32 %.017.i.i36, -1 br label %323 @@ -632,15 +632,15 @@ Mpm_TruthStretch.exit.i21: ; preds = %Mpm_TruthStretch.ex br i1 %345, label %352, label %346 346: ; preds = %339 - %347 = trunc nsw i64 %indvars.iv.next.i93.i to i32 - %348 = icmp samesign ult i32 %.017.i92.i, %347 - br i1 %348, label %349, label %350 + %347 = icmp samesign ugt i64 %indvars.iv.next.i93.i, %340 + br i1 %347, label %348, label %350 -349: ; preds = %346 - tail call fastcc void @Abc_TtSwapVars(ptr noundef nonnull %285, i32 noundef %328, i32 noundef %.017.i92.i, i32 noundef %347) +348: ; preds = %346 + %349 = trunc nsw i64 %indvars.iv.next.i93.i to i32 + tail call fastcc void @Abc_TtSwapVars(ptr noundef nonnull %285, i32 noundef %328, i32 noundef %.017.i92.i, i32 noundef %349) br label %350 -350: ; preds = %349, %346 +350: ; preds = %348, %346 %351 = add nsw i32 %.017.i92.i, -1 br label %352 @@ -752,15 +752,15 @@ Abc_TtCopy.exit111.i: ; preds = %.lr.ph.i100.i, %.lr br i1 %408, label %415, label %409 409: ; preds = %402 - %410 = trunc nsw i64 %indvars.iv.next.i115.i to i32 - %411 = icmp samesign ult i32 %.017.i114.i, %410 - br i1 %411, label %412, label %413 + %410 = icmp samesign ugt i64 %indvars.iv.next.i115.i, %403 + br i1 %410, label %411, label %413 -412: ; preds = %409 - tail call fastcc void @Abc_TtSwapVars(ptr noundef nonnull %376, i32 noundef %390, i32 noundef %.017.i114.i, i32 noundef %410) +411: ; preds = %409 + %412 = trunc nsw i64 %indvars.iv.next.i115.i to i32 + tail call fastcc void @Abc_TtSwapVars(ptr noundef nonnull %376, i32 noundef %390, i32 noundef %.017.i114.i, i32 noundef %412) br label %413 -413: ; preds = %412, %409 +413: ; preds = %411, %409 %414 = add nsw i32 %.017.i114.i, -1 br label %415 diff --git a/bench/darktable/optimized/DeflateDecompressor.ll b/bench/darktable/optimized/DeflateDecompressor.ll index bd0e42cd2d9..fdf3b2cd6de 100644 --- a/bench/darktable/optimized/DeflateDecompressor.ll +++ b/bench/darktable/optimized/DeflateDecompressor.ll @@ -178,9 +178,9 @@ define hidden void @_ZN8rawspeed19DeflateDecompressor6decodeEPSt10unique_ptrIA_h %7 = alloca %"struct.std::array.61", align 4 %8 = alloca %"struct.std::array.60", align 2 %9 = alloca i64, align 8 - %.sroa.0158.0.extract.trunc = trunc i64 %2 to i32 - %.sroa.7164.0.extract.shift = lshr i64 %2, 32 - %.sroa.7164.0.extract.trunc = trunc nuw i64 %.sroa.7164.0.extract.shift to i32 + %.sroa.0157.0.extract.trunc = trunc i64 %2 to i32 + %.sroa.7163.0.extract.shift = lshr i64 %2, 32 + %.sroa.7163.0.extract.trunc = trunc nuw i64 %.sroa.7163.0.extract.shift to i32 %.sroa.044.0.extract.trunc = trunc i64 %3 to i32 %.sroa.245.0.extract.shift = lshr i64 %3, 32 %.sroa.245.0.extract.trunc = trunc nuw i64 %.sroa.245.0.extract.shift to i32 @@ -196,16 +196,16 @@ define hidden void @_ZN8rawspeed19DeflateDecompressor6decodeEPSt10unique_ptrIA_h tail call void @llvm.assume(i1 %14) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #16 %15 = zext nneg i32 %12 to i64 - %16 = tail call i32 @llvm.abs.i32(i32 %.sroa.0158.0.extract.trunc, i1 false) + %16 = tail call i32 @llvm.abs.i32(i32 %.sroa.0157.0.extract.trunc, i1 false) %17 = zext i32 %16 to i64 - %18 = tail call i32 @llvm.abs.i32(i32 %.sroa.7164.0.extract.trunc, i1 false) + %18 = tail call i32 @llvm.abs.i32(i32 %.sroa.7163.0.extract.trunc, i1 false) %19 = zext i32 %18 to i64 %20 = mul nuw nsw i64 %19, %17 %21 = mul i64 %20, %15 store i64 %21, ptr %9, align 8, !tbaa !98 %22 = load ptr, ptr %1, align 8, !tbaa !6 - %.not184 = icmp eq ptr %22, null - br i1 %.not184, label %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit, label %24 + %.not183 = icmp eq ptr %22, null + br i1 %.not183, label %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit, label %24 _ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit: ; preds = %5 %23 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %21) #18 @@ -214,8 +214,8 @@ _ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit: ; preds = %5 24: ; preds = %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit, %5 %25 = phi ptr [ %23, %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit ], [ %22, %5 ] - %26 = mul nsw i32 %12, %.sroa.0158.0.extract.trunc - %27 = mul nuw nsw i32 %26, %.sroa.7164.0.extract.trunc + %26 = mul nsw i32 %12, %.sroa.0157.0.extract.trunc + %27 = mul nuw nsw i32 %26, %.sroa.7163.0.extract.trunc %28 = icmp ne i32 %26, 0 tail call void @llvm.assume(i1 %28) %29 = icmp sgt i32 %26, -1 @@ -284,8 +284,8 @@ _ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit: ; preds = %5 %71 = icmp samesign ugt i64 %3, 4294967295 %72 = xor i1 %71, %70 call void @llvm.assume(i1 %72) - %.not189 = icmp samesign ult i64 %3, 4294967296 - br i1 %.not189, label %._crit_edge, label %.lr.ph + %.not188 = icmp samesign ult i64 %3, 4294967296 + br i1 %.not188, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %39 %73 = mul nuw nsw i32 %53, %50 @@ -296,74 +296,74 @@ _ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit: ; preds = %5 %sext = shl i64 %2, 32 %78 = ashr exact i64 %sext, 32 %79 = and i64 %4, 2147483647 - %zext.i79 = zext nneg i32 %48 to i64 - %wide.trip.count.i80 = and i64 %3, 2147483647 - %80 = zext nneg i32 %50 to i64 - %81 = zext nneg i32 %53 to i64 - %82 = zext nneg i32 %73 to i64 - %83 = zext i32 %27 to i64 + %80 = zext nneg i32 %48 to i64 + %wide.trip.count.i79 = and i64 %3, 2147483647 + %81 = zext nneg i32 %50 to i64 + %82 = zext nneg i32 %53 to i64 + %83 = zext nneg i32 %73 to i64 + %84 = zext i32 %27 to i64 %umax = call i32 @llvm.umax.i32(i32 %.sroa.245.0.extract.trunc, i32 1) %wide.trip.count = zext nneg i32 %umax to i64 call void @llvm.assume(i1 %76) call void @llvm.assume(i1 %77) - br label %84 + br label %85 ._crit_edge: ; preds = %_ZN8rawspeed12_GLOBAL__N_116decodeFPDeltaRowINS_13ieee_754_20088Binary16EEEvNS_10Array1DRefIKhEEiNS_17CroppedArray1DRefIfEE.exit, %39 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #16 ret void -84: ; preds = %.lr.ph, %_ZN8rawspeed12_GLOBAL__N_116decodeFPDeltaRowINS_13ieee_754_20088Binary16EEEvNS_10Array1DRefIKhEEiNS_17CroppedArray1DRefIfEE.exit +85: ; preds = %.lr.ph, %_ZN8rawspeed12_GLOBAL__N_116decodeFPDeltaRowINS_13ieee_754_20088Binary16EEEvNS_10Array1DRefIKhEEiNS_17CroppedArray1DRefIfEE.exit %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %_ZN8rawspeed12_GLOBAL__N_116decodeFPDeltaRowINS_13ieee_754_20088Binary16EEEvNS_10Array1DRefIKhEEiNS_17CroppedArray1DRefIfEE.exit ] - %85 = icmp samesign ult i64 %indvars.iv, %.sroa.7164.0.extract.shift - call void @llvm.assume(i1 %85) - %86 = mul nuw nsw i64 %indvars.iv, %75 - %87 = add nuw nsw i64 %86, %75 - %88 = icmp samesign ule i64 %87, %83 - call void @llvm.assume(i1 %88) - %89 = getelementptr inbounds nuw i8, ptr %25, i64 %86 - %90 = load i32, ptr %74, align 8, !tbaa !24 - %91 = icmp slt i32 %90, %26 - br i1 %91, label %.lr.ph.i, label %_ZN8rawspeed12_GLOBAL__N_116decodeDeltaBytesENS_10Array1DRefIhEEiii.exit - -.lr.ph.i: ; preds = %84 - %92 = zext nneg i32 %90 to i64 - %93 = icmp sgt i32 %90, -1 - call void @llvm.assume(i1 %93) - br label %94 - -94: ; preds = %94, %.lr.ph.i - %indvars.iv.i = phi i64 [ %92, %.lr.ph.i ], [ %indvars.iv.next.i, %94 ] - %95 = trunc nuw i64 %indvars.iv.i to i32 - %96 = icmp sgt i32 %26, %95 - call void @llvm.assume(i1 %96) - %97 = getelementptr inbounds nuw i8, ptr %89, i64 %indvars.iv.i - %98 = load i8, ptr %97, align 1, !tbaa !96 - %99 = sub nuw nsw i64 %indvars.iv.i, %92 - %100 = icmp samesign ult i64 %99, %75 - call void @llvm.assume(i1 %100) - %101 = and i64 %99, 2147483648 - %102 = icmp eq i64 %101, 0 - call void @llvm.assume(i1 %102) - %103 = getelementptr inbounds nuw i8, ptr %89, i64 %99 - %104 = load i8, ptr %103, align 1, !tbaa !96 - %105 = add i8 %104, %98 - store i8 %105, ptr %97, align 1, !tbaa !96 + %86 = icmp samesign ult i64 %indvars.iv, %.sroa.7163.0.extract.shift + call void @llvm.assume(i1 %86) + %87 = mul nuw nsw i64 %indvars.iv, %75 + %88 = add nuw nsw i64 %87, %75 + %89 = icmp samesign ule i64 %88, %84 + call void @llvm.assume(i1 %89) + %90 = getelementptr inbounds nuw i8, ptr %25, i64 %87 + %91 = load i32, ptr %74, align 8, !tbaa !24 + %92 = icmp slt i32 %91, %26 + br i1 %92, label %.lr.ph.i, label %_ZN8rawspeed12_GLOBAL__N_116decodeDeltaBytesENS_10Array1DRefIhEEiii.exit + +.lr.ph.i: ; preds = %85 + %93 = zext nneg i32 %91 to i64 + %94 = icmp sgt i32 %91, -1 + call void @llvm.assume(i1 %94) + br label %95 + +95: ; preds = %95, %.lr.ph.i + %indvars.iv.i = phi i64 [ %93, %.lr.ph.i ], [ %indvars.iv.next.i, %95 ] + %96 = trunc nuw i64 %indvars.iv.i to i32 + %97 = icmp sgt i32 %26, %96 + call void @llvm.assume(i1 %97) + %98 = getelementptr inbounds nuw i8, ptr %90, i64 %indvars.iv.i + %99 = load i8, ptr %98, align 1, !tbaa !96 + %100 = sub nuw nsw i64 %indvars.iv.i, %93 + %101 = icmp samesign ult i64 %100, %75 + call void @llvm.assume(i1 %101) + %102 = and i64 %100, 2147483648 + %103 = icmp eq i64 %102, 0 + call void @llvm.assume(i1 %103) + %104 = getelementptr inbounds nuw i8, ptr %90, i64 %100 + %105 = load i8, ptr %104, align 1, !tbaa !96 + %106 = add i8 %105, %99 + store i8 %106, ptr %98, align 1, !tbaa !96 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 - %106 = trunc nuw i64 %indvars.iv.next.i to i32 - %107 = icmp sgt i32 %26, %106 - br i1 %107, label %94, label %_ZN8rawspeed12_GLOBAL__N_116decodeDeltaBytesENS_10Array1DRefIhEEiii.exit, !llvm.loop !109 - -_ZN8rawspeed12_GLOBAL__N_116decodeDeltaBytesENS_10Array1DRefIhEEiii.exit: ; preds = %94, %84 - %108 = icmp samesign ult i64 %indvars.iv, %.sroa.245.0.extract.shift - call void @llvm.assume(i1 %108) - %109 = add nuw nsw i64 %indvars.iv, %.sroa.243.0.extract.shift - %110 = icmp samesign ult i64 %109, %80 - call void @llvm.assume(i1 %110) - %111 = mul nuw nsw i64 %109, %81 - %112 = add nuw nsw i64 %111, %zext.i79 - %113 = icmp samesign ule i64 %112, %82 - call void @llvm.assume(i1 %113) - %114 = getelementptr inbounds nuw float, ptr %43, i64 %111 + %107 = trunc nuw i64 %indvars.iv.next.i to i32 + %108 = icmp sgt i32 %26, %107 + br i1 %108, label %95, label %_ZN8rawspeed12_GLOBAL__N_116decodeDeltaBytesENS_10Array1DRefIhEEiii.exit, !llvm.loop !109 + +_ZN8rawspeed12_GLOBAL__N_116decodeDeltaBytesENS_10Array1DRefIhEEiii.exit: ; preds = %95, %85 + %109 = icmp samesign ult i64 %indvars.iv, %.sroa.245.0.extract.shift + call void @llvm.assume(i1 %109) + %110 = add nuw nsw i64 %indvars.iv, %.sroa.243.0.extract.shift + %111 = icmp samesign ult i64 %110, %81 + call void @llvm.assume(i1 %111) + %112 = mul nuw nsw i64 %110, %82 + %113 = add nuw nsw i64 %112, %80 + %114 = icmp samesign ule i64 %113, %83 + call void @llvm.assume(i1 %114) + %115 = getelementptr inbounds nuw float, ptr %43, i64 %112 switch i32 %12, label %default.unreachable [ i32 2, label %.lr.ph.i51 i32 3, label %.lr.ph.i59 @@ -373,176 +373,174 @@ _ZN8rawspeed12_GLOBAL__N_116decodeDeltaBytesENS_10Array1DRefIhEEiii.exit: ; pred .lr.ph.i51: ; preds = %_ZN8rawspeed12_GLOBAL__N_116decodeDeltaBytesENS_10Array1DRefIhEEiii.exit, %_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary16ENS1_8Binary32EEEjj.exit.i %indvars.iv21.i = phi i64 [ %indvars.iv.next22.i, %_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary16ENS1_8Binary32EEEjj.exit.i ], [ 0, %_ZN8rawspeed12_GLOBAL__N_116decodeDeltaBytesENS_10Array1DRefIhEEiii.exit ] call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %8) #16 - %115 = trunc nuw nsw i64 %indvars.iv21.i to i32 - br label %139 + %116 = trunc nuw nsw i64 %indvars.iv21.i to i32 + br label %140 -116: ; preds = %139 +117: ; preds = %140 %.0.copyload.i.i.i = load i16, ptr %8, align 2 - %117 = call noundef i16 @llvm.bswap.i16(i16 %.0.copyload.i.i.i) - %118 = zext i16 %117 to i32 - %119 = lshr i32 %118, 10 - %120 = and i32 %119, 31 - %121 = and i32 %118, 1023 - %122 = shl nuw nsw i32 %121, 13 - %123 = icmp eq i32 %120, 31 - br i1 %123, label %_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary16ENS1_8Binary32EEEjj.exit.i, label %124 - -124: ; preds = %116 - %125 = add nuw nsw i32 %120, 112 - %126 = icmp eq i32 %120, 0 - br i1 %126, label %127, label %_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary16ENS1_8Binary32EEEjj.exit.i - -127: ; preds = %124 - %128 = icmp eq i32 %121, 0 - br i1 %128, label %_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary16ENS1_8Binary32EEEjj.exit.i, label %._crit_edge.i.i - -._crit_edge.i.i: ; preds = %127 - %.masked.numleadingzeros.i.i = call range(i32 9, 33) i32 @llvm.ctlz.i32(i32 %122, i1 true) - %129 = sub nuw nsw i32 121, %.masked.numleadingzeros.i.i + %118 = call noundef i16 @llvm.bswap.i16(i16 %.0.copyload.i.i.i) + %119 = zext i16 %118 to i32 + %120 = lshr i32 %119, 10 + %121 = and i32 %120, 31 + %122 = and i32 %119, 1023 + %123 = shl nuw nsw i32 %122, 13 + %124 = icmp eq i32 %121, 31 + br i1 %124, label %_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary16ENS1_8Binary32EEEjj.exit.i, label %125 + +125: ; preds = %117 + %126 = add nuw nsw i32 %121, 112 + %127 = icmp eq i32 %121, 0 + br i1 %127, label %128, label %_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary16ENS1_8Binary32EEEjj.exit.i + +128: ; preds = %125 + %129 = icmp eq i32 %122, 0 + br i1 %129, label %_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary16ENS1_8Binary32EEEjj.exit.i, label %._crit_edge.i.i + +._crit_edge.i.i: ; preds = %128 + %.masked.numleadingzeros.i.i = call range(i32 9, 33) i32 @llvm.ctlz.i32(i32 %123, i1 true) + %130 = sub nuw nsw i32 121, %.masked.numleadingzeros.i.i %.masked.leadingonepos.i.i = xor i32 %.masked.numleadingzeros.i.i, 31 %.lr.ph.tripcount.i.i = sub nuw nsw i32 23, %.masked.leadingonepos.i.i - %130 = shl i32 %122, %.lr.ph.tripcount.i.i - %131 = and i32 %130, 8380416 + %131 = shl i32 %123, %.lr.ph.tripcount.i.i + %132 = and i32 %131, 8380416 br label %_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary16ENS1_8Binary32EEEjj.exit.i -_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary16ENS1_8Binary32EEEjj.exit.i: ; preds = %._crit_edge.i.i, %127, %124, %116 - %.015.i.i = phi i32 [ %129, %._crit_edge.i.i ], [ %125, %124 ], [ 255, %116 ], [ 0, %127 ] - %.0.i.i = phi i32 [ %131, %._crit_edge.i.i ], [ %122, %124 ], [ %122, %116 ], [ 0, %127 ] - %.signext.i = sext i16 %117 to i32 - %132 = and i32 %.signext.i, -2147483648 - %133 = shl nuw nsw i32 %.015.i.i, 23 - %134 = or disjoint i32 %133, %132 - %135 = or i32 %134, %.0.i.i - %136 = add nuw nsw i64 %indvars.iv21.i, %79 - %137 = icmp samesign ule i64 %136, %zext.i79 - call void @llvm.assume(i1 %137) - %138 = getelementptr inbounds nuw float, ptr %114, i64 %136 - store i32 %135, ptr %138, align 4, !tbaa !111 +_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary16ENS1_8Binary32EEEjj.exit.i: ; preds = %._crit_edge.i.i, %128, %125, %117 + %.015.i.i = phi i32 [ %130, %._crit_edge.i.i ], [ %126, %125 ], [ 255, %117 ], [ 0, %128 ] + %.0.i.i = phi i32 [ %132, %._crit_edge.i.i ], [ %123, %125 ], [ %123, %117 ], [ 0, %128 ] + %.signext.i = sext i16 %118 to i32 + %133 = and i32 %.signext.i, -2147483648 + %134 = shl nuw nsw i32 %.015.i.i, 23 + %135 = or disjoint i32 %134, %133 + %136 = or i32 %135, %.0.i.i + %137 = add nuw nsw i64 %indvars.iv21.i, %79 + %138 = icmp samesign ule i64 %137, %80 + call void @llvm.assume(i1 %138) + %139 = getelementptr inbounds nuw float, ptr %115, i64 %137 + store i32 %136, ptr %139, align 4, !tbaa !111 call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %8) #16 %indvars.iv.next22.i = add nuw nsw i64 %indvars.iv21.i, 1 - %exitcond.not.i = icmp eq i64 %indvars.iv.next22.i, %wide.trip.count.i80 + %exitcond.not.i = icmp eq i64 %indvars.iv.next22.i, %wide.trip.count.i79 br i1 %exitcond.not.i, label %_ZN8rawspeed12_GLOBAL__N_116decodeFPDeltaRowINS_13ieee_754_20088Binary16EEEvNS_10Array1DRefIKhEEiNS_17CroppedArray1DRefIfEE.exit, label %.lr.ph.i51, !llvm.loop !113 -139: ; preds = %139, %.lr.ph.i51 - %indvars.iv.i52 = phi i64 [ 0, %.lr.ph.i51 ], [ %indvars.iv.next.i53, %139 ] - %140 = trunc i64 %indvars.iv.i52 to i32 - %141 = mul i32 %140, %.sroa.0158.0.extract.trunc - %142 = add nsw i32 %141, %115 - %143 = icmp samesign ult i32 %142, %26 - call void @llvm.assume(i1 %143) - %144 = icmp sgt i32 %142, -1 +140: ; preds = %140, %.lr.ph.i51 + %indvars.iv.i52 = phi i64 [ 0, %.lr.ph.i51 ], [ %indvars.iv.next.i53, %140 ] + %141 = trunc i64 %indvars.iv.i52 to i32 + %142 = mul i32 %141, %.sroa.0157.0.extract.trunc + %143 = add nsw i32 %142, %116 + %144 = icmp samesign ult i32 %143, %26 call void @llvm.assume(i1 %144) - %145 = zext nneg i32 %142 to i64 - %146 = getelementptr inbounds nuw i8, ptr %89, i64 %145 - %147 = load i8, ptr %146, align 1, !tbaa !96 - %148 = getelementptr inbounds nuw [2 x i8], ptr %8, i64 0, i64 %indvars.iv.i52 - store i8 %147, ptr %148, align 1, !tbaa !96 + %145 = icmp sgt i32 %143, -1 + call void @llvm.assume(i1 %145) + %146 = zext nneg i32 %143 to i64 + %147 = getelementptr inbounds nuw i8, ptr %90, i64 %146 + %148 = load i8, ptr %147, align 1, !tbaa !96 + %149 = getelementptr inbounds nuw [2 x i8], ptr %8, i64 0, i64 %indvars.iv.i52 + store i8 %148, ptr %149, align 1, !tbaa !96 %indvars.iv.next.i53 = add nuw nsw i64 %indvars.iv.i52, 1 %.not.i54 = icmp eq i64 %indvars.iv.next.i53, 2 - br i1 %.not.i54, label %116, label %139, !llvm.loop !114 + br i1 %.not.i54, label %117, label %140, !llvm.loop !114 .lr.ph.i59: ; preds = %_ZN8rawspeed12_GLOBAL__N_116decodeDeltaBytesENS_10Array1DRefIhEEiii.exit, %_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary24ENS1_8Binary32EEEjj.exit.i %indvars.iv21.i61 = phi i64 [ %indvars.iv.next22.i68, %_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary24ENS1_8Binary32EEEjj.exit.i ], [ 0, %_ZN8rawspeed12_GLOBAL__N_116decodeDeltaBytesENS_10Array1DRefIhEEiii.exit ] call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #16 - br label %172 + br label %173 -149: ; preds = %172 +150: ; preds = %173 %.0.copyload.i.i.i65 = load i32, ptr %7, align 4 - %150 = call noundef i32 @llvm.bswap.i32(i32 %.0.copyload.i.i.i65) - %151 = lshr i32 %150, 8 - %152 = lshr i32 %150, 24 - %153 = and i32 %152, 127 - %154 = and i32 %151, 65535 - %155 = shl nuw nsw i32 %154, 7 - %156 = icmp eq i32 %153, 127 - br i1 %156, label %_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary24ENS1_8Binary32EEEjj.exit.i, label %157 - -157: ; preds = %149 - %158 = add nuw nsw i32 %153, 64 - %159 = icmp eq i32 %153, 0 - br i1 %159, label %160, label %_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary24ENS1_8Binary32EEEjj.exit.i - -160: ; preds = %157 - %161 = icmp eq i32 %154, 0 - br i1 %161, label %_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary24ENS1_8Binary32EEEjj.exit.i, label %._crit_edge.i.i70 - -._crit_edge.i.i70: ; preds = %160 - %.masked.numleadingzeros.i.i71 = call range(i32 9, 33) i32 @llvm.ctlz.i32(i32 %155, i1 true) - %162 = sub nuw nsw i32 73, %.masked.numleadingzeros.i.i71 + %151 = call noundef i32 @llvm.bswap.i32(i32 %.0.copyload.i.i.i65) + %152 = lshr i32 %151, 8 + %153 = lshr i32 %151, 24 + %154 = and i32 %153, 127 + %155 = and i32 %152, 65535 + %156 = shl nuw nsw i32 %155, 7 + %157 = icmp eq i32 %154, 127 + br i1 %157, label %_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary24ENS1_8Binary32EEEjj.exit.i, label %158 + +158: ; preds = %150 + %159 = add nuw nsw i32 %154, 64 + %160 = icmp eq i32 %154, 0 + br i1 %160, label %161, label %_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary24ENS1_8Binary32EEEjj.exit.i + +161: ; preds = %158 + %162 = icmp eq i32 %155, 0 + br i1 %162, label %_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary24ENS1_8Binary32EEEjj.exit.i, label %._crit_edge.i.i70 + +._crit_edge.i.i70: ; preds = %161 + %.masked.numleadingzeros.i.i71 = call range(i32 9, 33) i32 @llvm.ctlz.i32(i32 %156, i1 true) + %163 = sub nuw nsw i32 73, %.masked.numleadingzeros.i.i71 %.masked.leadingonepos.i.i72 = xor i32 %.masked.numleadingzeros.i.i71, 31 %.lr.ph.tripcount.i.i73 = sub nuw nsw i32 23, %.masked.leadingonepos.i.i72 - %163 = shl i32 %155, %.lr.ph.tripcount.i.i73 - %164 = and i32 %163, 8388480 + %164 = shl i32 %156, %.lr.ph.tripcount.i.i73 + %165 = and i32 %164, 8388480 br label %_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary24ENS1_8Binary32EEEjj.exit.i -_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary24ENS1_8Binary32EEEjj.exit.i: ; preds = %._crit_edge.i.i70, %160, %157, %149 - %.015.i.i66 = phi i32 [ %162, %._crit_edge.i.i70 ], [ %158, %157 ], [ 255, %149 ], [ 0, %160 ] - %.0.i.i67 = phi i32 [ %164, %._crit_edge.i.i70 ], [ %155, %157 ], [ %155, %149 ], [ 0, %160 ] - %165 = and i32 %150, -2147483648 - %166 = shl nuw nsw i32 %.015.i.i66, 23 - %167 = or disjoint i32 %166, %165 - %168 = or i32 %167, %.0.i.i67 - %169 = add nuw nsw i64 %indvars.iv21.i61, %79 - %170 = icmp samesign ule i64 %169, %zext.i79 - call void @llvm.assume(i1 %170) - %171 = getelementptr inbounds nuw float, ptr %114, i64 %169 - store i32 %168, ptr %171, align 4, !tbaa !111 +_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary24ENS1_8Binary32EEEjj.exit.i: ; preds = %._crit_edge.i.i70, %161, %158, %150 + %.015.i.i66 = phi i32 [ %163, %._crit_edge.i.i70 ], [ %159, %158 ], [ 255, %150 ], [ 0, %161 ] + %.0.i.i67 = phi i32 [ %165, %._crit_edge.i.i70 ], [ %156, %158 ], [ %156, %150 ], [ 0, %161 ] + %166 = and i32 %151, -2147483648 + %167 = shl nuw nsw i32 %.015.i.i66, 23 + %168 = or disjoint i32 %167, %166 + %169 = or i32 %168, %.0.i.i67 + %170 = add nuw nsw i64 %indvars.iv21.i61, %79 + %171 = icmp samesign ule i64 %170, %80 + call void @llvm.assume(i1 %171) + %172 = getelementptr inbounds nuw float, ptr %115, i64 %170 + store i32 %169, ptr %172, align 4, !tbaa !111 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #16 %indvars.iv.next22.i68 = add nuw nsw i64 %indvars.iv21.i61, 1 - %exitcond.not.i69 = icmp eq i64 %indvars.iv.next22.i68, %wide.trip.count.i80 + %exitcond.not.i69 = icmp eq i64 %indvars.iv.next22.i68, %wide.trip.count.i79 br i1 %exitcond.not.i69, label %_ZN8rawspeed12_GLOBAL__N_116decodeFPDeltaRowINS_13ieee_754_20088Binary16EEEvNS_10Array1DRefIKhEEiNS_17CroppedArray1DRefIfEE.exit, label %.lr.ph.i59, !llvm.loop !115 -172: ; preds = %172, %.lr.ph.i59 - %indvars.iv.i62 = phi i64 [ 0, %.lr.ph.i59 ], [ %indvars.iv.next.i63, %172 ] - %173 = mul nsw i64 %indvars.iv.i62, %78 - %174 = add nsw i64 %173, %indvars.iv21.i61 - %175 = trunc nsw i64 %174 to i32 - %176 = icmp samesign ugt i32 %26, %175 +173: ; preds = %173, %.lr.ph.i59 + %indvars.iv.i62 = phi i64 [ 0, %.lr.ph.i59 ], [ %indvars.iv.next.i63, %173 ] + %174 = mul nsw i64 %indvars.iv.i62, %78 + %175 = add nsw i64 %174, %indvars.iv21.i61 + %176 = icmp samesign ult i64 %175, %75 call void @llvm.assume(i1 %176) - %177 = icmp sgt i64 %174, -1 + %177 = icmp sgt i64 %175, -1 call void @llvm.assume(i1 %177) - %178 = getelementptr inbounds nuw i8, ptr %89, i64 %174 + %178 = getelementptr inbounds nuw i8, ptr %90, i64 %175 %179 = load i8, ptr %178, align 1, !tbaa !96 %180 = getelementptr inbounds nuw [4 x i8], ptr %7, i64 0, i64 %indvars.iv.i62 store i8 %179, ptr %180, align 1, !tbaa !96 %indvars.iv.next.i63 = add nuw nsw i64 %indvars.iv.i62, 1 %.not.i64 = icmp eq i64 %indvars.iv.next.i63, 3 - br i1 %.not.i64, label %149, label %172, !llvm.loop !116 + br i1 %.not.i64, label %150, label %173, !llvm.loop !116 .lr.ph.i78: ; preds = %_ZN8rawspeed12_GLOBAL__N_116decodeDeltaBytesENS_10Array1DRefIhEEiii.exit, %181 - %indvars.iv21.i81 = phi i64 [ %indvars.iv.next22.i86, %181 ], [ 0, %_ZN8rawspeed12_GLOBAL__N_116decodeDeltaBytesENS_10Array1DRefIhEEiii.exit ] + %indvars.iv21.i80 = phi i64 [ %indvars.iv.next22.i85, %181 ], [ 0, %_ZN8rawspeed12_GLOBAL__N_116decodeDeltaBytesENS_10Array1DRefIhEEiii.exit ] call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #16 br label %186 181: ; preds = %186 - %.0.copyload.i.i.i85 = load i32, ptr %6, align 4 - %182 = call noundef i32 @llvm.bswap.i32(i32 %.0.copyload.i.i.i85) - %183 = add nuw nsw i64 %indvars.iv21.i81, %79 - %184 = icmp samesign ule i64 %183, %zext.i79 + %.0.copyload.i.i.i84 = load i32, ptr %6, align 4 + %182 = call noundef i32 @llvm.bswap.i32(i32 %.0.copyload.i.i.i84) + %183 = add nuw nsw i64 %indvars.iv21.i80, %79 + %184 = icmp samesign ule i64 %183, %80 call void @llvm.assume(i1 %184) - %185 = getelementptr inbounds nuw float, ptr %114, i64 %183 + %185 = getelementptr inbounds nuw float, ptr %115, i64 %183 store i32 %182, ptr %185, align 4, !tbaa !111 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #16 - %indvars.iv.next22.i86 = add nuw nsw i64 %indvars.iv21.i81, 1 - %exitcond.not.i87 = icmp eq i64 %indvars.iv.next22.i86, %wide.trip.count.i80 - br i1 %exitcond.not.i87, label %_ZN8rawspeed12_GLOBAL__N_116decodeFPDeltaRowINS_13ieee_754_20088Binary16EEEvNS_10Array1DRefIKhEEiNS_17CroppedArray1DRefIfEE.exit, label %.lr.ph.i78, !llvm.loop !117 + %indvars.iv.next22.i85 = add nuw nsw i64 %indvars.iv21.i80, 1 + %exitcond.not.i86 = icmp eq i64 %indvars.iv.next22.i85, %wide.trip.count.i79 + br i1 %exitcond.not.i86, label %_ZN8rawspeed12_GLOBAL__N_116decodeFPDeltaRowINS_13ieee_754_20088Binary16EEEvNS_10Array1DRefIKhEEiNS_17CroppedArray1DRefIfEE.exit, label %.lr.ph.i78, !llvm.loop !117 186: ; preds = %186, %.lr.ph.i78 - %indvars.iv.i82 = phi i64 [ 0, %.lr.ph.i78 ], [ %indvars.iv.next.i83, %186 ] - %187 = mul nsw i64 %indvars.iv.i82, %78 - %188 = add nsw i64 %187, %indvars.iv21.i81 - %189 = trunc nsw i64 %188 to i32 - %190 = icmp samesign ugt i32 %26, %189 + %indvars.iv.i81 = phi i64 [ 0, %.lr.ph.i78 ], [ %indvars.iv.next.i82, %186 ] + %187 = mul nsw i64 %indvars.iv.i81, %78 + %188 = add nsw i64 %187, %indvars.iv21.i80 + %189 = icmp samesign ult i64 %188, %75 + call void @llvm.assume(i1 %189) + %190 = icmp sgt i64 %188, -1 call void @llvm.assume(i1 %190) - %191 = icmp sgt i64 %188, -1 - call void @llvm.assume(i1 %191) - %192 = getelementptr inbounds nuw i8, ptr %89, i64 %188 - %193 = load i8, ptr %192, align 1, !tbaa !96 - %194 = getelementptr inbounds nuw [4 x i8], ptr %6, i64 0, i64 %indvars.iv.i82 - store i8 %193, ptr %194, align 1, !tbaa !96 - %indvars.iv.next.i83 = add nuw nsw i64 %indvars.iv.i82, 1 - %.not.i84 = icmp eq i64 %indvars.iv.next.i83, 4 - br i1 %.not.i84, label %181, label %186, !llvm.loop !118 + %191 = getelementptr inbounds nuw i8, ptr %90, i64 %188 + %192 = load i8, ptr %191, align 1, !tbaa !96 + %193 = getelementptr inbounds nuw [4 x i8], ptr %6, i64 0, i64 %indvars.iv.i81 + store i8 %192, ptr %193, align 1, !tbaa !96 + %indvars.iv.next.i82 = add nuw nsw i64 %indvars.iv.i81, 1 + %.not.i83 = icmp eq i64 %indvars.iv.next.i82, 4 + br i1 %.not.i83, label %181, label %186, !llvm.loop !118 default.unreachable: ; preds = %_ZN8rawspeed12_GLOBAL__N_116decodeDeltaBytesENS_10Array1DRefIhEEiii.exit unreachable @@ -550,7 +548,7 @@ default.unreachable: ; preds = %_ZN8rawspeed12_GLOB _ZN8rawspeed12_GLOBAL__N_116decodeFPDeltaRowINS_13ieee_754_20088Binary16EEEvNS_10Array1DRefIKhEEiNS_17CroppedArray1DRefIfEE.exit: ; preds = %181, %_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary24ENS1_8Binary32EEEjj.exit.i, %_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary16ENS1_8Binary32EEEjj.exit.i %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond.not, label %._crit_edge, label %84, !llvm.loop !119 + br i1 %exitcond.not, label %._crit_edge, label %85, !llvm.loop !119 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) diff --git a/bench/darktable/optimized/IiqDecoder.ll b/bench/darktable/optimized/IiqDecoder.ll index aa02c57db45..4f8c426a5b9 100644 --- a/bench/darktable/optimized/IiqDecoder.ll +++ b/bench/darktable/optimized/IiqDecoder.ll @@ -4324,27 +4324,27 @@ define hidden void @_ZNK8rawspeed10IiqDecoder16correctBadColumnEt(ptr noundef no %16 = getelementptr inbounds nuw i8, ptr %6, i64 48 %17 = load i32, ptr %16, align 8, !tbaa !220, !noalias !311 %18 = ashr i32 %17, 1 - %19 = mul nuw nsw i32 %18, %15 - %20 = icmp sgt i32 %13, -1 + %19 = icmp sgt i32 %13, -1 + tail call void @llvm.assume(i1 %19) + %20 = icmp sgt i32 %15, -1 tail call void @llvm.assume(i1 %20) - %21 = icmp sgt i32 %15, -1 + %21 = icmp ugt i32 %17, 1 tail call void @llvm.assume(i1 %21) - %22 = icmp ugt i32 %17, 1 + %22 = icmp sgt i32 %18, -1 tail call void @llvm.assume(i1 %22) - %23 = icmp sgt i32 %18, -1 + %23 = icmp samesign uge i32 %18, %13 tail call void @llvm.assume(i1 %23) - %24 = icmp samesign uge i32 %18, %13 - tail call void @llvm.assume(i1 %24) - %25 = icmp eq i32 %13, 0 - %26 = icmp ne i32 %15, 0 - %27 = xor i1 %25, %26 - tail call void @llvm.assume(i1 %27) - %28 = getelementptr inbounds nuw i8, ptr %6, i64 44 - %29 = load i32, ptr %28, align 4, !tbaa !229 - %30 = icmp sgt i32 %29, 4 - br i1 %30, label %.lr.ph, label %._crit_edge + %24 = icmp eq i32 %13, 0 + %25 = icmp ne i32 %15, 0 + %26 = xor i1 %24, %25 + tail call void @llvm.assume(i1 %26) + %27 = getelementptr inbounds nuw i8, ptr %6, i64 44 + %28 = load i32, ptr %27, align 4, !tbaa !229 + %29 = icmp sgt i32 %28, 4 + br i1 %29, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %2 + %30 = mul nuw nsw i32 %18, %15 %31 = zext i16 %1 to i32 %32 = add nsw i32 %31, -2 %33 = icmp samesign ult i32 %32, %13 @@ -4366,175 +4366,176 @@ define hidden void @_ZNK8rawspeed10IiqDecoder16correctBadColumnEt(ptr noundef no %invariant.gep = getelementptr inbounds nuw i16, ptr %8, i64 %39 %49 = zext nneg i32 %18 to i64 %50 = zext nneg i32 %13 to i64 - %51 = zext nneg i32 %19 to i64 + %51 = zext nneg i32 %30 to i64 %52 = zext nneg i32 %15 to i64 %53 = zext nneg i32 %18 to i64 - br label %54 + %54 = zext nneg i32 %13 to i64 + %55 = zext nneg i32 %30 to i64 + %56 = zext nneg i32 %15 to i64 + br label %57 -._crit_edge: ; preds = %161, %2 +._crit_edge: ; preds = %162, %2 ret void -54: ; preds = %.lr.ph, %161 - %indvars.iv436 = phi i64 [ 2, %.lr.ph ], [ %indvars.iv.next437.pre-phi, %161 ] - %55 = phi ptr [ %6, %.lr.ph ], [ %162, %161 ] - %56 = getelementptr inbounds nuw i8, ptr %55, i64 64 - %57 = trunc nuw nsw i64 %indvars.iv436 to i32 - %58 = tail call noundef zeroext i8 @_ZNK8rawspeed16ColorFilterArray10getColorAtEii(ptr noundef nonnull align 8 dereferenceable(32) %56, i32 noundef %31, i32 noundef %57) - %59 = icmp eq i8 %58, 1 - br i1 %59, label %60, label %114 +57: ; preds = %.lr.ph, %162 + %indvars.iv436 = phi i64 [ 2, %.lr.ph ], [ %indvars.iv.next437.pre-phi, %162 ] + %58 = phi ptr [ %6, %.lr.ph ], [ %163, %162 ] + %59 = getelementptr inbounds nuw i8, ptr %58, i64 64 + %60 = trunc nuw nsw i64 %indvars.iv436 to i32 + %61 = tail call noundef zeroext i8 @_ZNK8rawspeed16ColorFilterArray10getColorAtEii(ptr noundef nonnull align 8 dereferenceable(32) %59, i32 noundef %31, i32 noundef %60) + %62 = icmp eq i8 %61, 1 + br i1 %62, label %63, label %116 -60: ; preds = %54 +63: ; preds = %57 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #25 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #25 - %61 = add nsw i64 %indvars.iv436, -1 + %64 = add nsw i64 %indvars.iv436, -1 tail call void @llvm.assume(i1 %41) - %62 = icmp samesign ult i64 %61, %52 - tail call void @llvm.assume(i1 %62) - %63 = mul nuw nsw i64 %61, %53 - %64 = trunc i64 %63 to i32 - %65 = add i32 %13, %64 - %66 = icmp samesign ule i32 %65, %19 - tail call void @llvm.assume(i1 %66) - %67 = getelementptr inbounds nuw i16, ptr %8, i64 %63 - %68 = getelementptr inbounds nuw i16, ptr %67, i64 %42 - %69 = load i16, ptr %68, align 2, !tbaa !221 - store i16 %69, ptr %3, align 2, !tbaa !221 - %70 = zext i16 %69 to i32 - %71 = add nuw nsw i64 %indvars.iv436, 1 - %72 = icmp samesign ult i64 %71, %52 - tail call void @llvm.assume(i1 %72) - %73 = mul nuw nsw i64 %71, %49 - %74 = add nuw nsw i64 %73, %50 - %75 = icmp samesign ule i64 %74, %51 - tail call void @llvm.assume(i1 %75) - %76 = getelementptr inbounds nuw i16, ptr %8, i64 %73 - %77 = getelementptr inbounds nuw i16, ptr %76, i64 %42 - %78 = load i16, ptr %77, align 2, !tbaa !221 - store i16 %78, ptr %43, align 2, !tbaa !221 - %79 = zext i16 %78 to i32 - %80 = add nuw nsw i32 %79, %70 + %65 = icmp samesign ult i64 %64, %52 + tail call void @llvm.assume(i1 %65) + %66 = mul nuw nsw i64 %64, %53 + %67 = add nuw nsw i64 %66, %54 + %68 = icmp samesign ule i64 %67, %55 + tail call void @llvm.assume(i1 %68) + %69 = getelementptr inbounds nuw i16, ptr %8, i64 %66 + %70 = getelementptr inbounds nuw i16, ptr %69, i64 %42 + %71 = load i16, ptr %70, align 2, !tbaa !221 + store i16 %71, ptr %3, align 2, !tbaa !221 + %72 = zext i16 %71 to i32 + %73 = add nuw nsw i64 %indvars.iv436, 1 + %74 = icmp samesign ult i64 %73, %56 + tail call void @llvm.assume(i1 %74) + %75 = mul nuw nsw i64 %73, %49 + %76 = add nuw nsw i64 %75, %50 + %77 = icmp samesign ule i64 %76, %51 + tail call void @llvm.assume(i1 %77) + %78 = getelementptr inbounds nuw i16, ptr %8, i64 %75 + %79 = getelementptr inbounds nuw i16, ptr %78, i64 %42 + %80 = load i16, ptr %79, align 2, !tbaa !221 + store i16 %80, ptr %43, align 2, !tbaa !221 + %81 = zext i16 %80 to i32 + %82 = add nuw nsw i32 %81, %72 tail call void @llvm.assume(i1 %45) - %81 = getelementptr inbounds nuw i16, ptr %67, i64 %46 - %82 = load i16, ptr %81, align 2, !tbaa !221 - store i16 %82, ptr %47, align 2, !tbaa !221 - %83 = zext i16 %82 to i32 - %84 = add nuw nsw i32 %80, %83 - %85 = getelementptr inbounds nuw i16, ptr %76, i64 %46 - %86 = load i16, ptr %85, align 2, !tbaa !221 - store i16 %86, ptr %48, align 2, !tbaa !221 - %87 = zext i16 %86 to i32 - %88 = add nuw nsw i32 %84, %87 - br label %101 - -89: ; preds = %101 - %90 = zext nneg i32 %spec.select to i64 - %91 = getelementptr inbounds nuw [4 x i16], ptr %3, i64 0, i64 %90 - %92 = load i16, ptr %91, align 2, !tbaa !221 - %93 = zext i16 %92 to i32 - %94 = add nuw nsw i32 %88, 1 - %95 = sub nsw i32 %94, %93 - %96 = sdiv i32 %95, 3 - %97 = trunc i32 %96 to i16 - %98 = mul nuw nsw i64 %indvars.iv436, %49 - %99 = add nuw nsw i64 %98, %50 - %100 = icmp samesign ule i64 %99, %51 - tail call void @llvm.assume(i1 %100) + %83 = getelementptr inbounds nuw i16, ptr %69, i64 %46 + %84 = load i16, ptr %83, align 2, !tbaa !221 + store i16 %84, ptr %47, align 2, !tbaa !221 + %85 = zext i16 %84 to i32 + %86 = add nuw nsw i32 %82, %85 + %87 = getelementptr inbounds nuw i16, ptr %78, i64 %46 + %88 = load i16, ptr %87, align 2, !tbaa !221 + store i16 %88, ptr %48, align 2, !tbaa !221 + %89 = zext i16 %88 to i32 + %90 = add nuw nsw i32 %86, %89 + br label %103 + +91: ; preds = %103 + %92 = zext nneg i32 %spec.select to i64 + %93 = getelementptr inbounds nuw [4 x i16], ptr %3, i64 0, i64 %92 + %94 = load i16, ptr %93, align 2, !tbaa !221 + %95 = zext i16 %94 to i32 + %96 = add nuw nsw i32 %90, 1 + %97 = sub nsw i32 %96, %95 + %98 = sdiv i32 %97, 3 + %99 = trunc i32 %98 to i16 + %100 = mul nuw nsw i64 %indvars.iv436, %49 + %101 = add nuw nsw i64 %100, %50 + %102 = icmp samesign ule i64 %101, %51 + tail call void @llvm.assume(i1 %102) tail call void @llvm.assume(i1 %38) - %gep = getelementptr inbounds nuw i16, ptr %invariant.gep, i64 %98 - store i16 %97, ptr %gep, align 2, !tbaa !221 + %gep = getelementptr inbounds nuw i16, ptr %invariant.gep, i64 %100 + store i16 %99, ptr %gep, align 2, !tbaa !221 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #25 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #25 - br label %161 - -101: ; preds = %60, %101 - %indvars.iv = phi i64 [ 0, %60 ], [ %indvars.iv.next, %101 ] - %.045433 = phi i32 [ 0, %60 ], [ %spec.select, %101 ] - %102 = getelementptr inbounds nuw [4 x i16], ptr %3, i64 0, i64 %indvars.iv - %103 = load i16, ptr %102, align 2, !tbaa !221 - %104 = zext i16 %103 to i32 - %105 = shl nuw nsw i32 %104, 2 - %106 = sub nsw i32 %105, %88 - %107 = tail call i32 @llvm.abs.i32(i32 %106, i1 true) - %108 = getelementptr inbounds nuw [4 x i32], ptr %4, i64 0, i64 %indvars.iv - store i32 %107, ptr %108, align 4, !tbaa !30 - %109 = zext nneg i32 %.045433 to i64 - %110 = getelementptr inbounds nuw [4 x i32], ptr %4, i64 0, i64 %109 - %111 = load i32, ptr %110, align 4, !tbaa !30 - %112 = icmp slt i32 %111, %107 - %113 = trunc nuw nsw i64 %indvars.iv to i32 - %spec.select = select i1 %112, i32 %113, i32 %.045433 + br label %162 + +103: ; preds = %63, %103 + %indvars.iv = phi i64 [ 0, %63 ], [ %indvars.iv.next, %103 ] + %.045433 = phi i32 [ 0, %63 ], [ %spec.select, %103 ] + %104 = getelementptr inbounds nuw [4 x i16], ptr %3, i64 0, i64 %indvars.iv + %105 = load i16, ptr %104, align 2, !tbaa !221 + %106 = zext i16 %105 to i32 + %107 = shl nuw nsw i32 %106, 2 + %108 = sub nsw i32 %107, %90 + %109 = tail call i32 @llvm.abs.i32(i32 %108, i1 true) + %110 = getelementptr inbounds nuw [4 x i32], ptr %4, i64 0, i64 %indvars.iv + store i32 %109, ptr %110, align 4, !tbaa !30 + %111 = zext nneg i32 %.045433 to i64 + %112 = getelementptr inbounds nuw [4 x i32], ptr %4, i64 0, i64 %111 + %113 = load i32, ptr %112, align 4, !tbaa !30 + %114 = icmp slt i32 %113, %109 + %115 = trunc nuw nsw i64 %indvars.iv to i32 + %spec.select = select i1 %114, i32 %115, i32 %.045433 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 4 - br i1 %exitcond.not, label %89, label %101, !llvm.loop !314 + br i1 %exitcond.not, label %91, label %103, !llvm.loop !314 -114: ; preds = %54 - %115 = add nuw nsw i64 %indvars.iv436, 2 +116: ; preds = %57 + %117 = add nuw nsw i64 %indvars.iv436, 2 tail call void @llvm.assume(i1 %33) - %116 = icmp samesign ult i64 %115, %52 - tail call void @llvm.assume(i1 %116) - %117 = mul nuw nsw i64 %115, %49 - %118 = add nuw nsw i64 %117, %50 - %119 = icmp samesign ule i64 %118, %51 - tail call void @llvm.assume(i1 %119) - %120 = getelementptr inbounds nuw i16, ptr %8, i64 %117 - %121 = getelementptr inbounds nuw i16, ptr %120, i64 %34 - %122 = load i16, ptr %121, align 2, !tbaa !221 - %123 = zext i16 %122 to i32 - %124 = add nsw i64 %indvars.iv436, -2 - %125 = icmp samesign ult i64 %124, %52 - tail call void @llvm.assume(i1 %125) - %126 = mul nuw nsw i64 %124, %53 - %127 = trunc i64 %126 to i32 - %128 = add i32 %13, %127 - %129 = icmp samesign ule i32 %128, %19 - tail call void @llvm.assume(i1 %129) - %130 = getelementptr inbounds nuw i16, ptr %8, i64 %126 - %131 = getelementptr inbounds nuw i16, ptr %130, i64 %34 - %132 = load i16, ptr %131, align 2, !tbaa !221 - %133 = zext i16 %132 to i32 - %134 = add nuw nsw i32 %133, %123 + %118 = icmp samesign ult i64 %117, %56 + tail call void @llvm.assume(i1 %118) + %119 = mul nuw nsw i64 %117, %49 + %120 = add nuw nsw i64 %119, %50 + %121 = icmp samesign ule i64 %120, %51 + tail call void @llvm.assume(i1 %121) + %122 = getelementptr inbounds nuw i16, ptr %8, i64 %119 + %123 = getelementptr inbounds nuw i16, ptr %122, i64 %34 + %124 = load i16, ptr %123, align 2, !tbaa !221 + %125 = zext i16 %124 to i32 + %126 = add nsw i64 %indvars.iv436, -2 + %127 = icmp samesign ult i64 %126, %52 + tail call void @llvm.assume(i1 %127) + %128 = mul nuw nsw i64 %126, %53 + %129 = add nuw nsw i64 %128, %54 + %130 = icmp samesign ule i64 %129, %55 + tail call void @llvm.assume(i1 %130) + %131 = getelementptr inbounds nuw i16, ptr %8, i64 %128 + %132 = getelementptr inbounds nuw i16, ptr %131, i64 %34 + %133 = load i16, ptr %132, align 2, !tbaa !221 + %134 = zext i16 %133 to i32 + %135 = add nuw nsw i32 %134, %125 tail call void @llvm.assume(i1 %36) - %135 = getelementptr inbounds nuw i16, ptr %120, i64 %37 - %136 = load i16, ptr %135, align 2, !tbaa !221 - %137 = zext i16 %136 to i32 - %138 = add nuw nsw i32 %134, %137 - %139 = getelementptr inbounds nuw i16, ptr %130, i64 %37 - %140 = load i16, ptr %139, align 2, !tbaa !221 - %141 = zext i16 %140 to i32 - %142 = add nuw nsw i32 %138, %141 - %143 = mul nuw nsw i64 %indvars.iv436, %49 - %144 = add nuw nsw i64 %143, %50 - %145 = icmp samesign ule i64 %144, %51 - tail call void @llvm.assume(i1 %145) - %146 = getelementptr inbounds nuw i16, ptr %8, i64 %143 - %147 = getelementptr inbounds nuw i16, ptr %146, i64 %34 - %148 = load i16, ptr %147, align 2, !tbaa !221 - %149 = zext i16 %148 to i32 - %150 = getelementptr inbounds nuw i16, ptr %146, i64 %37 - %151 = load i16, ptr %150, align 2, !tbaa !221 - %152 = zext i16 %151 to i32 - %153 = add nuw nsw i32 %152, %149 - %154 = uitofp nneg i32 %142 to double - %155 = uitofp nneg i32 %153 to double - %156 = fmul double %155, 0x3FD6A09E7098EF50 - %157 = tail call double @llvm.fmuladd.f64(double %154, double 7.322330e-02, double %156) - %158 = tail call i64 @lround(double noundef %157) #25, !tbaa !30 - %159 = trunc i64 %158 to i16 + %136 = getelementptr inbounds nuw i16, ptr %122, i64 %37 + %137 = load i16, ptr %136, align 2, !tbaa !221 + %138 = zext i16 %137 to i32 + %139 = add nuw nsw i32 %135, %138 + %140 = getelementptr inbounds nuw i16, ptr %131, i64 %37 + %141 = load i16, ptr %140, align 2, !tbaa !221 + %142 = zext i16 %141 to i32 + %143 = add nuw nsw i32 %139, %142 + %144 = mul nuw nsw i64 %indvars.iv436, %49 + %145 = add nuw nsw i64 %144, %50 + %146 = icmp samesign ule i64 %145, %51 + tail call void @llvm.assume(i1 %146) + %147 = getelementptr inbounds nuw i16, ptr %8, i64 %144 + %148 = getelementptr inbounds nuw i16, ptr %147, i64 %34 + %149 = load i16, ptr %148, align 2, !tbaa !221 + %150 = zext i16 %149 to i32 + %151 = getelementptr inbounds nuw i16, ptr %147, i64 %37 + %152 = load i16, ptr %151, align 2, !tbaa !221 + %153 = zext i16 %152 to i32 + %154 = add nuw nsw i32 %153, %150 + %155 = uitofp nneg i32 %143 to double + %156 = uitofp nneg i32 %154 to double + %157 = fmul double %156, 0x3FD6A09E7098EF50 + %158 = tail call double @llvm.fmuladd.f64(double %155, double 7.322330e-02, double %157) + %159 = tail call i64 @lround(double noundef %158) #25, !tbaa !30 + %160 = trunc i64 %159 to i16 tail call void @llvm.assume(i1 %38) - %160 = getelementptr inbounds nuw i16, ptr %146, i64 %39 - store i16 %159, ptr %160, align 2, !tbaa !221 + %161 = getelementptr inbounds nuw i16, ptr %147, i64 %39 + store i16 %160, ptr %161, align 2, !tbaa !221 %.pre = add nuw nsw i64 %indvars.iv436, 1 - br label %161 - -161: ; preds = %89, %114 - %indvars.iv.next437.pre-phi = phi i64 [ %71, %89 ], [ %.pre, %114 ] - %162 = load ptr, ptr %5, align 8, !tbaa !110 - %163 = getelementptr inbounds nuw i8, ptr %162, i64 44 - %164 = load i32, ptr %163, align 4, !tbaa !229 - %165 = add nsw i32 %164, -2 - %166 = sext i32 %165 to i64 - %167 = icmp slt i64 %indvars.iv.next437.pre-phi, %166 - br i1 %167, label %54, label %._crit_edge, !llvm.loop !315 + br label %162 + +162: ; preds = %91, %116 + %indvars.iv.next437.pre-phi = phi i64 [ %73, %91 ], [ %.pre, %116 ] + %163 = load ptr, ptr %5, align 8, !tbaa !110 + %164 = getelementptr inbounds nuw i8, ptr %163, i64 44 + %165 = load i32, ptr %164, align 4, !tbaa !229 + %166 = add nsw i32 %165, -2 + %167 = sext i32 %166 to i64 + %168 = icmp slt i64 %indvars.iv.next437.pre-phi, %167 + br i1 %168, label %57, label %._crit_edge, !llvm.loop !315 } ; Function Attrs: mustprogress uwtable diff --git a/bench/darktable/optimized/OlympusDecompressor.ll b/bench/darktable/optimized/OlympusDecompressor.ll index 938dcd7eb22..dcc25005ac0 100644 --- a/bench/darktable/optimized/OlympusDecompressor.ll +++ b/bench/darktable/optimized/OlympusDecompressor.ll @@ -497,421 +497,419 @@ _ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequen call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(12) %scevgep.i29.i.i, i8 0, i64 12, i1 false), !tbaa !92 %117 = icmp samesign ult i64 %indvars.iv.i, 2 %118 = add nsw i64 %indvars.iv.i, -2 - %119 = trunc nsw i64 %118 to i32 - %120 = icmp samesign ugt i32 %94, %119 - %121 = mul nuw nsw i64 %118, %113 - %122 = trunc i64 %121 to i32 - %123 = add i32 %92, %122 - %124 = icmp samesign ule i32 %123, %98 - %125 = getelementptr inbounds nuw i16, ptr %87, i64 %121 - %126 = icmp samesign ult i64 %indvars.iv.i, %115 - %127 = mul nuw nsw i64 %indvars.iv.i, %113 - %128 = add nuw nsw i64 %127, %111 - %129 = icmp samesign ule i64 %128, %114 - %130 = getelementptr inbounds nuw i16, ptr %87, i64 %127 - br label %131 + %119 = icmp samesign ult i64 %118, %115 + %120 = mul nuw nsw i64 %118, %113 + %121 = add nuw nsw i64 %120, %111 + %122 = icmp samesign ule i64 %121, %114 + %123 = getelementptr inbounds nuw i16, ptr %87, i64 %120 + %124 = icmp samesign ult i64 %indvars.iv.i, %115 + %125 = mul nuw nsw i64 %indvars.iv.i, %113 + %126 = add nuw nsw i64 %125, %111 + %127 = icmp samesign ule i64 %126, %114 + %128 = getelementptr inbounds nuw i16, ptr %87, i64 %125 + br label %129 _ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit.preheader.i.i: ; preds = %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit25.i.i br i1 %.not254.i.i, label %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl13decompressRowERNS_14BitStreamerMSBEi.exit.i, label %.preheader.i.i -131: ; preds = %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit25.i.i, %116 +129: ; preds = %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit25.i.i, %116 %.sroa.1915.1.i = phi i32 [ %.sroa.1915.022.i, %116 ], [ %.sroa.1915.2.i, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit25.i.i ] %indvars.iv.i.i = phi i64 [ 0, %116 ], [ %indvars.iv.next.i.i, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit25.i.i ] - %132 = phi i32 [ %.sroa.9.021.i, %116 ], [ %200, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit25.i.i ] - %133 = phi i32 [ %.sroa.1915.022.i, %116 ], [ %.promoted258.i.i, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit25.i.i ] - %storemerge244245.i.i = phi i64 [ %.sroa.012.020.i, %116 ], [ %202, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit25.i.i ] - %134 = getelementptr inbounds nuw [2 x %"class.rawspeed::(anonymous namespace)::OlympusDifferenceDecoder"], ptr %3, i64 0, i64 %indvars.iv.i.i - %135 = icmp samesign ult i32 %132, 65 - call void @llvm.assume(i1 %135) - %.not.i31.i.i = icmp samesign ult i32 %132, 32 - br i1 %.not.i31.i.i, label %136, label %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.i - -136: ; preds = %131 + %130 = phi i32 [ %.sroa.9.021.i, %116 ], [ %198, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit25.i.i ] + %131 = phi i32 [ %.sroa.1915.022.i, %116 ], [ %.promoted258.i.i, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit25.i.i ] + %storemerge244245.i.i = phi i64 [ %.sroa.012.020.i, %116 ], [ %200, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit25.i.i ] + %132 = getelementptr inbounds nuw [2 x %"class.rawspeed::(anonymous namespace)::OlympusDifferenceDecoder"], ptr %3, i64 0, i64 %indvars.iv.i.i + %133 = icmp samesign ult i32 %130, 65 + call void @llvm.assume(i1 %133) + %.not.i31.i.i = icmp samesign ult i32 %130, 32 + br i1 %.not.i31.i.i, label %134, label %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.i + +134: ; preds = %129 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %.sroa.0.i.i.i.i) - %137 = add nuw nsw i32 %133, 4 - %.not.i.i.i.i6 = icmp samesign ugt i32 %137, %78 - br i1 %.not.i.i.i.i6, label %141, label %138, !prof !93 + %135 = add nuw nsw i32 %131, 4 + %.not.i.i.i.i6 = icmp samesign ugt i32 %135, %78 + br i1 %.not.i.i.i.i6, label %139, label %136, !prof !93 -138: ; preds = %136 - %139 = zext nneg i32 %133 to i64 - %140 = getelementptr inbounds nuw i8, ptr %84, i64 %139 +136: ; preds = %134 + %137 = zext nneg i32 %131 to i64 + %138 = getelementptr inbounds nuw i8, ptr %84, i64 %137 br label %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.i -141: ; preds = %136 - %142 = icmp samesign ugt i32 %133, %110 - br i1 %142, label %.invoke, label %143, !prof !93 +139: ; preds = %134 + %140 = icmp samesign ugt i32 %131, %110 + br i1 %140, label %.invoke, label %141, !prof !93 -143: ; preds = %141 +141: ; preds = %139 store i32 0, ptr %.sroa.0.i.i.i.i, align 4 - %.sroa.speculated26.i.i.i.i.i = call i32 @llvm.umin.i32(i32 %78, i32 %133) - %144 = add nuw nsw i32 %.sroa.speculated26.i.i.i.i.i, 4 - %.sroa.speculated.i.i.i.i.i = call i32 @llvm.umin.i32(i32 %78, i32 %144) - %145 = sub nsw i32 %.sroa.speculated.i.i.i.i.i, %.sroa.speculated26.i.i.i.i.i - %146 = icmp ult i32 %145, 5 - call void @llvm.assume(i1 %146) - %147 = zext nneg i32 %.sroa.speculated26.i.i.i.i.i to i64 - %148 = getelementptr inbounds nuw i8, ptr %84, i64 %147 - %149 = zext nneg i32 %145 to i64 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %.sroa.0.i.i.i.i, ptr nonnull align 1 %148, i64 %149, i1 false) + %.sroa.speculated26.i.i.i.i.i = call i32 @llvm.umin.i32(i32 %78, i32 %131) + %142 = add nuw nsw i32 %.sroa.speculated26.i.i.i.i.i, 4 + %.sroa.speculated.i.i.i.i.i = call i32 @llvm.umin.i32(i32 %78, i32 %142) + %143 = sub nsw i32 %.sroa.speculated.i.i.i.i.i, %.sroa.speculated26.i.i.i.i.i + %144 = icmp ult i32 %143, 5 + call void @llvm.assume(i1 %144) + %145 = zext nneg i32 %.sroa.speculated26.i.i.i.i.i to i64 + %146 = getelementptr inbounds nuw i8, ptr %84, i64 %145 + %147 = zext nneg i32 %143 to i64 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %.sroa.0.i.i.i.i, ptr nonnull align 1 %146, i64 %147, i1 false) br label %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.i -_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.i: ; preds = %143, %138 - %.sroa.0.0..sroa.0.0..in.i.i.i.i = phi ptr [ %.sroa.0.i.i.i.i, %143 ], [ %140, %138 ] +_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.i: ; preds = %141, %136 + %.sroa.0.0..sroa.0.0..in.i.i.i.i = phi ptr [ %.sroa.0.i.i.i.i, %141 ], [ %138, %136 ] %.sroa.0.0..sroa.0.0..i.i.i.i = load i32, ptr %.sroa.0.0..sroa.0.0..in.i.i.i.i, align 1 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %.sroa.0.i.i.i.i) - %150 = call i32 @llvm.bswap.i32(i32 %.sroa.0.0..sroa.0.0..i.i.i.i) - %151 = zext i32 %150 to i64 - %152 = or disjoint i32 %132, 32 - %153 = sub nuw nsw i32 32, %132 - %154 = zext nneg i32 %153 to i64 - %155 = shl nuw i64 %151, %154 - %156 = or i64 %155, %storemerge244245.i.i + %148 = call i32 @llvm.bswap.i32(i32 %.sroa.0.0..sroa.0.0..i.i.i.i) + %149 = zext i32 %148 to i64 + %150 = or disjoint i32 %130, 32 + %151 = sub nuw nsw i32 32, %130 + %152 = zext nneg i32 %151 to i64 + %153 = shl nuw i64 %149, %152 + %154 = or i64 %153, %storemerge244245.i.i br label %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.i -_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.i: ; preds = %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.i, %131 - %.sroa.1915.2.i = phi i32 [ %137, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.i ], [ %.sroa.1915.1.i, %131 ] - %storemerge243.i.i = phi i64 [ %156, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.i ], [ %storemerge244245.i.i, %131 ] - %.promoted258.i.i = phi i32 [ %137, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.i ], [ %133, %131 ] - %157 = phi i32 [ %152, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.i ], [ %132, %131 ] - %158 = getelementptr inbounds nuw i8, ptr %134, i64 8 - %159 = getelementptr inbounds nuw i8, ptr %134, i64 16 - %160 = load i32, ptr %159, align 8, !tbaa !92 - %.inv.i15.i.i = icmp sgt i32 %160, 2 - %161 = load i32, ptr %158, align 8, !tbaa !92 - %162 = and i32 %161, 65535 - %163 = call noundef range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %162, i1 false) +_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.i: ; preds = %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.i, %129 + %.sroa.1915.2.i = phi i32 [ %135, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.i ], [ %.sroa.1915.1.i, %129 ] + %storemerge243.i.i = phi i64 [ %154, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.i ], [ %storemerge244245.i.i, %129 ] + %.promoted258.i.i = phi i32 [ %135, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.i ], [ %131, %129 ] + %155 = phi i32 [ %150, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.i ], [ %130, %129 ] + %156 = getelementptr inbounds nuw i8, ptr %132, i64 8 + %157 = getelementptr inbounds nuw i8, ptr %132, i64 16 + %158 = load i32, ptr %157, align 8, !tbaa !92 + %.inv.i15.i.i = icmp sgt i32 %158, 2 + %159 = load i32, ptr %156, align 8, !tbaa !92 + %160 = and i32 %159, 65535 + %161 = call noundef range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %160, i1 false) %.neg237.i.i = select i1 %.inv.i15.i.i, i32 32, i32 30 - %164 = sub nsw i32 %.neg237.i.i, %163 - %165 = select i1 %.inv.i15.i.i, i32 2, i32 4 - %.sroa.speculated112.i.i = call i32 @llvm.smax.i32(i32 %164, i32 %165) - %166 = icmp sgt i32 %.promoted258.i.i, -1 - call void @llvm.assume(i1 %166) - %167 = lshr i64 %storemerge243.i.i, 49 - %168 = trunc nuw nsw i64 %167 to i32 - %169 = lshr i32 %168, 14 - %170 = sub nsw i32 0, %169 - %171 = load ptr, ptr %134, align 8, !tbaa !112 - %172 = and i64 %167, 4095 - %173 = load ptr, ptr %171, align 8, !tbaa !94 - %174 = getelementptr inbounds nuw i8, ptr %173, i64 %172 - %175 = load i8, ptr %174, align 1, !tbaa !91 - %.not.i16.i.i = icmp eq i8 %175, 12 - br i1 %.not.i16.i.i, label %181, label %176, !prof !93 - -176: ; preds = %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.i - %177 = sext i8 %175 to i32 - %178 = add nsw i32 %177, 4 - %179 = icmp samesign ule i32 %178, %157 - call void @llvm.assume(i1 %179) - %180 = sub nsw i32 %157, %178 + %162 = sub nsw i32 %.neg237.i.i, %161 + %163 = select i1 %.inv.i15.i.i, i32 2, i32 4 + %.sroa.speculated112.i.i = call i32 @llvm.smax.i32(i32 %162, i32 %163) + %164 = icmp sgt i32 %.promoted258.i.i, -1 + call void @llvm.assume(i1 %164) + %165 = lshr i64 %storemerge243.i.i, 49 + %166 = trunc nuw nsw i64 %165 to i32 + %167 = lshr i32 %166, 14 + %168 = sub nsw i32 0, %167 + %169 = load ptr, ptr %132, align 8, !tbaa !112 + %170 = and i64 %165, 4095 + %171 = load ptr, ptr %169, align 8, !tbaa !94 + %172 = getelementptr inbounds nuw i8, ptr %171, i64 %170 + %173 = load i8, ptr %172, align 1, !tbaa !91 + %.not.i16.i.i = icmp eq i8 %173, 12 + br i1 %.not.i16.i.i, label %179, label %174, !prof !93 + +174: ; preds = %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.i + %175 = sext i8 %173 to i32 + %176 = add nsw i32 %175, 4 + %177 = icmp samesign ule i32 %176, %155 + call void @llvm.assume(i1 %177) + %178 = sub nsw i32 %155, %176 br label %_ZN8rawspeed12_GLOBAL__N_124OlympusDifferenceDecoder7getDiffERNS_14BitStreamerMSBE.exit18.i.i -181: ; preds = %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.i - %182 = shl i64 %storemerge243.i.i, 15 - %183 = icmp slt i32 %164, 16 - call void @llvm.assume(i1 %183) - %184 = icmp ne i32 %164, 15 - call void @llvm.assume(i1 %184) - %185 = add nuw nsw i32 %.sroa.speculated112.i.i, 49 - %186 = zext nneg i32 %185 to i64 - %187 = lshr i64 %182, %186 - %188 = trunc nuw nsw i64 %187 to i32 - %189 = sub nuw nsw i32 16, %.sroa.speculated112.i.i - %.neg24.i = add nsw i32 %157, -31 - %190 = add nuw nsw i32 %.neg24.i, %.sroa.speculated112.i.i +179: ; preds = %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.i + %180 = shl i64 %storemerge243.i.i, 15 + %181 = icmp slt i32 %162, 16 + call void @llvm.assume(i1 %181) + %182 = icmp ne i32 %162, 15 + call void @llvm.assume(i1 %182) + %183 = add nuw nsw i32 %.sroa.speculated112.i.i, 49 + %184 = zext nneg i32 %183 to i64 + %185 = lshr i64 %180, %184 + %186 = trunc nuw nsw i64 %185 to i32 + %187 = sub nuw nsw i32 16, %.sroa.speculated112.i.i + %.neg24.i = add nsw i32 %155, -31 + %188 = add nuw nsw i32 %.neg24.i, %.sroa.speculated112.i.i br label %_ZN8rawspeed12_GLOBAL__N_124OlympusDifferenceDecoder7getDiffERNS_14BitStreamerMSBE.exit18.i.i -_ZN8rawspeed12_GLOBAL__N_124OlympusDifferenceDecoder7getDiffERNS_14BitStreamerMSBE.exit18.i.i: ; preds = %181, %176 - %.sink274.i.i = phi i32 [ %189, %181 ], [ %178, %176 ] - %.sink272.i.i = phi i64 [ %182, %181 ], [ %storemerge243.i.i, %176 ] - %.sink.i.i = phi i32 [ %190, %181 ], [ %180, %176 ] - %.0.i17.i.i = phi i32 [ %188, %181 ], [ %177, %176 ] - %191 = zext nneg i32 %.sink274.i.i to i64 - %192 = shl i64 %.sink272.i.i, %191 - %193 = shl nsw i32 %.0.i17.i.i, %.sroa.speculated112.i.i - %194 = icmp samesign ult i32 %.sink.i.i, 65 - call void @llvm.assume(i1 %194) - %195 = icmp samesign ule i32 %.sroa.speculated112.i.i, %.sink.i.i - call void @llvm.assume(i1 %195) - %196 = sub nuw nsw i32 64, %.sroa.speculated112.i.i - %197 = zext nneg i32 %196 to i64 - %198 = lshr i64 %192, %197 - %199 = trunc nuw nsw i64 %198 to i32 - %200 = sub nsw i32 %.sink.i.i, %.sroa.speculated112.i.i - %201 = zext nneg i32 %.sroa.speculated112.i.i to i64 - %202 = shl i64 %192, %201 - %203 = or i32 %193, %199 - store i32 %203, ptr %158, align 8, !tbaa !92 - %204 = xor i32 %203, %170 - %205 = getelementptr inbounds nuw i8, ptr %134, i64 12 - %206 = load i32, ptr %205, align 4, !tbaa !92 +_ZN8rawspeed12_GLOBAL__N_124OlympusDifferenceDecoder7getDiffERNS_14BitStreamerMSBE.exit18.i.i: ; preds = %179, %174 + %.sink274.i.i = phi i32 [ %187, %179 ], [ %176, %174 ] + %.sink272.i.i = phi i64 [ %180, %179 ], [ %storemerge243.i.i, %174 ] + %.sink.i.i = phi i32 [ %188, %179 ], [ %178, %174 ] + %.0.i17.i.i = phi i32 [ %186, %179 ], [ %175, %174 ] + %189 = zext nneg i32 %.sink274.i.i to i64 + %190 = shl i64 %.sink272.i.i, %189 + %191 = shl nsw i32 %.0.i17.i.i, %.sroa.speculated112.i.i + %192 = icmp samesign ult i32 %.sink.i.i, 65 + call void @llvm.assume(i1 %192) + %193 = icmp samesign ule i32 %.sroa.speculated112.i.i, %.sink.i.i + call void @llvm.assume(i1 %193) + %194 = sub nuw nsw i32 64, %.sroa.speculated112.i.i + %195 = zext nneg i32 %194 to i64 + %196 = lshr i64 %190, %195 + %197 = trunc nuw nsw i64 %196 to i32 + %198 = sub nsw i32 %.sink.i.i, %.sroa.speculated112.i.i + %199 = zext nneg i32 %.sroa.speculated112.i.i to i64 + %200 = shl i64 %190, %199 + %201 = or i32 %191, %197 + store i32 %201, ptr %156, align 8, !tbaa !92 + %202 = xor i32 %201, %168 + %203 = getelementptr inbounds nuw i8, ptr %132, i64 12 + %204 = load i32, ptr %203, align 4, !tbaa !92 + %205 = add nsw i32 %204, %202 + %206 = mul nsw i32 %205, 3 %207 = add nsw i32 %206, %204 - %208 = mul nsw i32 %207, 3 - %209 = add nsw i32 %208, %206 - %210 = ashr i32 %209, 5 - store i32 %210, ptr %205, align 4, !tbaa !92 - %211 = icmp sgt i32 %203, 16 - %212 = add nsw i32 %160, 1 - %spec.select.i.i = select i1 %211, i32 0, i32 %212 - %213 = lshr i32 %168, 12 - %214 = and i32 %213, 3 - store i32 %spec.select.i.i, ptr %159, align 8, !tbaa !92 - %215 = shl nsw i32 %207, 2 - %216 = or disjoint i32 %215, %214 - br i1 %117, label %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit25.i.i, label %217 - -217: ; preds = %_ZN8rawspeed12_GLOBAL__N_124OlympusDifferenceDecoder7getDiffERNS_14BitStreamerMSBE.exit18.i.i - %218 = icmp samesign ult i64 %indvars.iv.i.i, %111 - call void @llvm.assume(i1 %218) - call void @llvm.assume(i1 %120) - call void @llvm.assume(i1 %124) - %219 = getelementptr inbounds nuw i16, ptr %125, i64 %indvars.iv.i.i - %220 = load i16, ptr %219, align 2, !tbaa !115 - %221 = zext i16 %220 to i32 + %208 = ashr i32 %207, 5 + store i32 %208, ptr %203, align 4, !tbaa !92 + %209 = icmp sgt i32 %201, 16 + %210 = add nsw i32 %158, 1 + %spec.select.i.i = select i1 %209, i32 0, i32 %210 + %211 = lshr i32 %166, 12 + %212 = and i32 %211, 3 + store i32 %spec.select.i.i, ptr %157, align 8, !tbaa !92 + %213 = shl nsw i32 %205, 2 + %214 = or disjoint i32 %213, %212 + br i1 %117, label %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit25.i.i, label %215 + +215: ; preds = %_ZN8rawspeed12_GLOBAL__N_124OlympusDifferenceDecoder7getDiffERNS_14BitStreamerMSBE.exit18.i.i + %216 = icmp samesign ult i64 %indvars.iv.i.i, %111 + call void @llvm.assume(i1 %216) + call void @llvm.assume(i1 %119) + call void @llvm.assume(i1 %122) + %217 = getelementptr inbounds nuw i16, ptr %123, i64 %indvars.iv.i.i + %218 = load i16, ptr %217, align 2, !tbaa !115 + %219 = zext i16 %218 to i32 br label %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit25.i.i -_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit25.i.i: ; preds = %217, %_ZN8rawspeed12_GLOBAL__N_124OlympusDifferenceDecoder7getDiffERNS_14BitStreamerMSBE.exit18.i.i - %.0.i23.i.i = phi i32 [ %221, %217 ], [ 0, %_ZN8rawspeed12_GLOBAL__N_124OlympusDifferenceDecoder7getDiffERNS_14BitStreamerMSBE.exit18.i.i ] - %222 = add nsw i32 %216, %.0.i23.i.i - %223 = trunc i32 %222 to i16 - %224 = icmp samesign ult i64 %indvars.iv.i.i, %111 - call void @llvm.assume(i1 %224) - call void @llvm.assume(i1 %126) - call void @llvm.assume(i1 %129) - %225 = getelementptr inbounds nuw i16, ptr %130, i64 %indvars.iv.i.i - store i16 %223, ptr %225, align 2, !tbaa !115 +_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit25.i.i: ; preds = %215, %_ZN8rawspeed12_GLOBAL__N_124OlympusDifferenceDecoder7getDiffERNS_14BitStreamerMSBE.exit18.i.i + %.0.i23.i.i = phi i32 [ %219, %215 ], [ 0, %_ZN8rawspeed12_GLOBAL__N_124OlympusDifferenceDecoder7getDiffERNS_14BitStreamerMSBE.exit18.i.i ] + %220 = add nsw i32 %214, %.0.i23.i.i + %221 = trunc i32 %220 to i16 + %222 = icmp samesign ult i64 %indvars.iv.i.i, %111 + call void @llvm.assume(i1 %222) + call void @llvm.assume(i1 %124) + call void @llvm.assume(i1 %127) + %223 = getelementptr inbounds nuw i16, ptr %128, i64 %indvars.iv.i.i + store i16 %221, ptr %223, align 2, !tbaa !115 %indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1 %.not.i.i10.i = icmp eq i64 %indvars.iv.next.i.i, 2 - br i1 %.not.i.i10.i, label %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit.preheader.i.i, label %131, !llvm.loop !117 + br i1 %.not.i.i10.i, label %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit.preheader.i.i, label %129, !llvm.loop !117 .preheader.i.i: ; preds = %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit.preheader.i.i, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit12.i.i - %.sroa.012.1.i = phi i64 [ %302, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit12.i.i ], [ %202, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit.preheader.i.i ] + %.sroa.012.1.i = phi i64 [ %300, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit12.i.i ], [ %200, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit.preheader.i.i ] %.sroa.1915.3.i = phi i32 [ %.sroa.1915.5.i, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit12.i.i ], [ %.sroa.1915.2.i, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit.preheader.i.i ] %indvars.iv267.i.i = phi i64 [ %indvars.iv.next268.i.i, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit12.i.i ], [ 1, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit.preheader.i.i ] %.promoted248261.i.i = phi i32 [ %.promoted248259.i.i, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit12.i.i ], [ %.promoted258.i.i, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit.preheader.i.i ] - %.promoted247257.i.i = phi i32 [ %300, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit12.i.i ], [ %200, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit.preheader.i.i ] - %226 = shl nuw nsw i64 %indvars.iv267.i.i, 1 - br label %227 + %.promoted247257.i.i = phi i32 [ %298, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit12.i.i ], [ %198, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit.preheader.i.i ] + %224 = shl nuw nsw i64 %indvars.iv267.i.i, 1 + br label %225 -227: ; preds = %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit.i.i, %.preheader.i.i +225: ; preds = %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit.i.i, %.preheader.i.i %.sroa.1915.4.i = phi i32 [ %.sroa.1915.3.i, %.preheader.i.i ], [ %.sroa.1915.5.i, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit.i.i ] %indvars.iv264.i.i = phi i64 [ 0, %.preheader.i.i ], [ %indvars.iv.next265.i.i, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit.i.i ] %.promoted248260.i.i = phi i32 [ %.promoted248261.i.i, %.preheader.i.i ], [ %.promoted248259.i.i, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit.i.i ] - %228 = phi i32 [ %.promoted247257.i.i, %.preheader.i.i ], [ %300, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit.i.i ] - %229 = phi i32 [ %.promoted248261.i.i, %.preheader.i.i ], [ %256, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit.i.i ] - %storemerge235251252.i.i = phi i64 [ %.sroa.012.1.i, %.preheader.i.i ], [ %302, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit.i.i ] - %230 = add nuw nsw i64 %indvars.iv264.i.i, %226 - %231 = getelementptr inbounds nuw [2 x %"class.rawspeed::(anonymous namespace)::OlympusDifferenceDecoder"], ptr %3, i64 0, i64 %indvars.iv264.i.i - %232 = icmp samesign ult i32 %228, 65 - call void @llvm.assume(i1 %232) - %.not.i34.i.i = icmp samesign ult i32 %228, 32 - br i1 %.not.i34.i.i, label %233, label %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit41.i.i - -233: ; preds = %227 + %226 = phi i32 [ %.promoted247257.i.i, %.preheader.i.i ], [ %298, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit.i.i ] + %227 = phi i32 [ %.promoted248261.i.i, %.preheader.i.i ], [ %254, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit.i.i ] + %storemerge235251252.i.i = phi i64 [ %.sroa.012.1.i, %.preheader.i.i ], [ %300, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit.i.i ] + %228 = add nuw nsw i64 %indvars.iv264.i.i, %224 + %229 = getelementptr inbounds nuw [2 x %"class.rawspeed::(anonymous namespace)::OlympusDifferenceDecoder"], ptr %3, i64 0, i64 %indvars.iv264.i.i + %230 = icmp samesign ult i32 %226, 65 + call void @llvm.assume(i1 %230) + %.not.i34.i.i = icmp samesign ult i32 %226, 32 + br i1 %.not.i34.i.i, label %231, label %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit41.i.i + +231: ; preds = %225 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %.sroa.0.i.i33.i.i) - %234 = add nuw nsw i32 %229, 4 - %.not.i.i35.i.i = icmp samesign ugt i32 %234, %78 - br i1 %.not.i.i35.i.i, label %238, label %235, !prof !93 + %232 = add nuw nsw i32 %227, 4 + %.not.i.i35.i.i = icmp samesign ugt i32 %232, %78 + br i1 %.not.i.i35.i.i, label %236, label %233, !prof !93 -235: ; preds = %233 - %236 = zext nneg i32 %229 to i64 - %237 = getelementptr inbounds nuw i8, ptr %84, i64 %236 +233: ; preds = %231 + %234 = zext nneg i32 %227 to i64 + %235 = getelementptr inbounds nuw i8, ptr %84, i64 %234 br label %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i36.i.i -238: ; preds = %233 - %239 = icmp samesign ugt i32 %229, %110 - br i1 %239, label %.invoke, label %242, !prof !93 +236: ; preds = %231 + %237 = icmp samesign ugt i32 %227, %110 + br i1 %237, label %.invoke, label %240, !prof !93 -.invoke: ; preds = %141, %238, %_ZNK8rawspeed10ByteStream19peekRemainingBufferEv.exit.i, %_ZN8rawspeed10ByteStream9skipBytesEj.exit.i, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImplC2ENS_8RawImageE.exit - %240 = phi ptr [ @.str.4, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImplC2ENS_8RawImageE.exit ], [ @.str.6, %_ZN8rawspeed10ByteStream9skipBytesEj.exit.i ], [ @.str.7, %_ZNK8rawspeed10ByteStream19peekRemainingBufferEv.exit.i ], [ @.str.8, %238 ], [ @.str.8, %141 ] - %241 = phi ptr [ @__PRETTY_FUNCTION__._ZNK8rawspeed10ByteStream5checkEj, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImplC2ENS_8RawImageE.exit ], [ @__PRETTY_FUNCTION__._ZNK8rawspeed6Buffer10getSubViewEjj, %_ZN8rawspeed10ByteStream9skipBytesEj.exit.i ], [ @__PRETTY_FUNCTION__._ZN8rawspeed26BitStreamerReplenisherBaseINS_14BitStreamerMSBEEC2ENS_10Array1DRefIKSt4byteEE, %_ZNK8rawspeed10ByteStream19peekRemainingBufferEv.exit.i ], [ @__PRETTY_FUNCTION__._ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv, %238 ], [ @__PRETTY_FUNCTION__._ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv, %141 ] - invoke void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_11IOExceptionEEEvPKcz(ptr noundef nonnull %240, ptr noundef nonnull %241) #15 - to label %.cont unwind label %404 +.invoke: ; preds = %139, %236, %_ZNK8rawspeed10ByteStream19peekRemainingBufferEv.exit.i, %_ZN8rawspeed10ByteStream9skipBytesEj.exit.i, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImplC2ENS_8RawImageE.exit + %238 = phi ptr [ @.str.4, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImplC2ENS_8RawImageE.exit ], [ @.str.6, %_ZN8rawspeed10ByteStream9skipBytesEj.exit.i ], [ @.str.7, %_ZNK8rawspeed10ByteStream19peekRemainingBufferEv.exit.i ], [ @.str.8, %236 ], [ @.str.8, %139 ] + %239 = phi ptr [ @__PRETTY_FUNCTION__._ZNK8rawspeed10ByteStream5checkEj, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImplC2ENS_8RawImageE.exit ], [ @__PRETTY_FUNCTION__._ZNK8rawspeed6Buffer10getSubViewEjj, %_ZN8rawspeed10ByteStream9skipBytesEj.exit.i ], [ @__PRETTY_FUNCTION__._ZN8rawspeed26BitStreamerReplenisherBaseINS_14BitStreamerMSBEEC2ENS_10Array1DRefIKSt4byteEE, %_ZNK8rawspeed10ByteStream19peekRemainingBufferEv.exit.i ], [ @__PRETTY_FUNCTION__._ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv, %236 ], [ @__PRETTY_FUNCTION__._ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv, %139 ] + invoke void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_11IOExceptionEEEvPKcz(ptr noundef nonnull %238, ptr noundef nonnull %239) #15 + to label %.cont unwind label %402 .cont: ; preds = %.invoke unreachable -242: ; preds = %238 +240: ; preds = %236 store i32 0, ptr %.sroa.0.i.i33.i.i, align 4 - %.sroa.speculated26.i.i.i39.i.i = call i32 @llvm.umin.i32(i32 %78, i32 %229) - %243 = add nuw nsw i32 %.sroa.speculated26.i.i.i39.i.i, 4 - %.sroa.speculated.i.i.i40.i.i = call i32 @llvm.umin.i32(i32 %78, i32 %243) - %244 = sub nsw i32 %.sroa.speculated.i.i.i40.i.i, %.sroa.speculated26.i.i.i39.i.i - %245 = icmp ult i32 %244, 5 - call void @llvm.assume(i1 %245) - %246 = zext nneg i32 %.sroa.speculated26.i.i.i39.i.i to i64 - %247 = getelementptr inbounds nuw i8, ptr %84, i64 %246 - %248 = zext nneg i32 %244 to i64 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %.sroa.0.i.i33.i.i, ptr nonnull align 1 %247, i64 %248, i1 false) + %.sroa.speculated26.i.i.i39.i.i = call i32 @llvm.umin.i32(i32 %78, i32 %227) + %241 = add nuw nsw i32 %.sroa.speculated26.i.i.i39.i.i, 4 + %.sroa.speculated.i.i.i40.i.i = call i32 @llvm.umin.i32(i32 %78, i32 %241) + %242 = sub nsw i32 %.sroa.speculated.i.i.i40.i.i, %.sroa.speculated26.i.i.i39.i.i + %243 = icmp ult i32 %242, 5 + call void @llvm.assume(i1 %243) + %244 = zext nneg i32 %.sroa.speculated26.i.i.i39.i.i to i64 + %245 = getelementptr inbounds nuw i8, ptr %84, i64 %244 + %246 = zext nneg i32 %242 to i64 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %.sroa.0.i.i33.i.i, ptr nonnull align 1 %245, i64 %246, i1 false) br label %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i36.i.i -_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i36.i.i: ; preds = %242, %235 - %.sroa.0.0..sroa.0.0..in.i.i37.i.i = phi ptr [ %.sroa.0.i.i33.i.i, %242 ], [ %237, %235 ] +_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i36.i.i: ; preds = %240, %233 + %.sroa.0.0..sroa.0.0..in.i.i37.i.i = phi ptr [ %.sroa.0.i.i33.i.i, %240 ], [ %235, %233 ] %.sroa.0.0..sroa.0.0..i.i38.i.i = load i32, ptr %.sroa.0.0..sroa.0.0..in.i.i37.i.i, align 1 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %.sroa.0.i.i33.i.i) - %249 = call i32 @llvm.bswap.i32(i32 %.sroa.0.0..sroa.0.0..i.i38.i.i) - %250 = zext i32 %249 to i64 - %251 = or disjoint i32 %228, 32 - %252 = sub nuw nsw i32 32, %228 - %253 = zext nneg i32 %252 to i64 - %254 = shl nuw i64 %250, %253 - %255 = or i64 %254, %storemerge235251252.i.i + %247 = call i32 @llvm.bswap.i32(i32 %.sroa.0.0..sroa.0.0..i.i38.i.i) + %248 = zext i32 %247 to i64 + %249 = or disjoint i32 %226, 32 + %250 = sub nuw nsw i32 32, %226 + %251 = zext nneg i32 %250 to i64 + %252 = shl nuw i64 %248, %251 + %253 = or i64 %252, %storemerge235251252.i.i br label %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit41.i.i -_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit41.i.i: ; preds = %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i36.i.i, %227 - %.sroa.1915.5.i = phi i32 [ %234, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i36.i.i ], [ %.sroa.1915.4.i, %227 ] - %.promoted248259.i.i = phi i32 [ %234, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i36.i.i ], [ %.promoted248260.i.i, %227 ] - %storemerge235250.i.i = phi i64 [ %255, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i36.i.i ], [ %storemerge235251252.i.i, %227 ] - %256 = phi i32 [ %234, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i36.i.i ], [ %229, %227 ] - %257 = phi i32 [ %251, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i36.i.i ], [ %228, %227 ] - %258 = getelementptr inbounds nuw i8, ptr %231, i64 8 - %259 = getelementptr inbounds nuw i8, ptr %231, i64 16 - %260 = load i32, ptr %259, align 8, !tbaa !92 - %.inv.i.i.i = icmp sgt i32 %260, 2 - %261 = load i32, ptr %258, align 8, !tbaa !92 - %262 = and i32 %261, 65535 - %263 = call noundef range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %262, i1 false) +_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit41.i.i: ; preds = %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i36.i.i, %225 + %.sroa.1915.5.i = phi i32 [ %232, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i36.i.i ], [ %.sroa.1915.4.i, %225 ] + %.promoted248259.i.i = phi i32 [ %232, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i36.i.i ], [ %.promoted248260.i.i, %225 ] + %storemerge235250.i.i = phi i64 [ %253, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i36.i.i ], [ %storemerge235251252.i.i, %225 ] + %254 = phi i32 [ %232, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i36.i.i ], [ %227, %225 ] + %255 = phi i32 [ %249, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i36.i.i ], [ %226, %225 ] + %256 = getelementptr inbounds nuw i8, ptr %229, i64 8 + %257 = getelementptr inbounds nuw i8, ptr %229, i64 16 + %258 = load i32, ptr %257, align 8, !tbaa !92 + %.inv.i.i.i = icmp sgt i32 %258, 2 + %259 = load i32, ptr %256, align 8, !tbaa !92 + %260 = and i32 %259, 65535 + %261 = call noundef range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %260, i1 false) %.neg240.i.i = select i1 %.inv.i.i.i, i32 32, i32 30 - %264 = sub nsw i32 %.neg240.i.i, %263 - %265 = select i1 %.inv.i.i.i, i32 2, i32 4 - %.sroa.speculated.i.i = call i32 @llvm.smax.i32(i32 %264, i32 %265) - %266 = icmp sgt i32 %256, -1 - call void @llvm.assume(i1 %266) - %267 = lshr i64 %storemerge235250.i.i, 49 - %268 = trunc nuw nsw i64 %267 to i32 - %269 = lshr i32 %268, 14 - %270 = sub nsw i32 0, %269 - %271 = load ptr, ptr %231, align 8, !tbaa !112 - %272 = and i64 %267, 4095 - %273 = load ptr, ptr %271, align 8, !tbaa !94 - %274 = getelementptr inbounds nuw i8, ptr %273, i64 %272 - %275 = load i8, ptr %274, align 1, !tbaa !91 - %.not.i13.i.i = icmp eq i8 %275, 12 - br i1 %.not.i13.i.i, label %281, label %276, !prof !93 - -276: ; preds = %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit41.i.i - %277 = sext i8 %275 to i32 - %278 = add nsw i32 %277, 4 - %279 = icmp samesign ule i32 %278, %257 - call void @llvm.assume(i1 %279) - %280 = sub nsw i32 %257, %278 + %262 = sub nsw i32 %.neg240.i.i, %261 + %263 = select i1 %.inv.i.i.i, i32 2, i32 4 + %.sroa.speculated.i.i = call i32 @llvm.smax.i32(i32 %262, i32 %263) + %264 = icmp sgt i32 %254, -1 + call void @llvm.assume(i1 %264) + %265 = lshr i64 %storemerge235250.i.i, 49 + %266 = trunc nuw nsw i64 %265 to i32 + %267 = lshr i32 %266, 14 + %268 = sub nsw i32 0, %267 + %269 = load ptr, ptr %229, align 8, !tbaa !112 + %270 = and i64 %265, 4095 + %271 = load ptr, ptr %269, align 8, !tbaa !94 + %272 = getelementptr inbounds nuw i8, ptr %271, i64 %270 + %273 = load i8, ptr %272, align 1, !tbaa !91 + %.not.i13.i.i = icmp eq i8 %273, 12 + br i1 %.not.i13.i.i, label %279, label %274, !prof !93 + +274: ; preds = %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit41.i.i + %275 = sext i8 %273 to i32 + %276 = add nsw i32 %275, 4 + %277 = icmp samesign ule i32 %276, %255 + call void @llvm.assume(i1 %277) + %278 = sub nsw i32 %255, %276 br label %_ZN8rawspeed12_GLOBAL__N_124OlympusDifferenceDecoder7getDiffERNS_14BitStreamerMSBE.exit.i.i -281: ; preds = %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit41.i.i - %282 = shl i64 %storemerge235250.i.i, 15 - %283 = icmp slt i32 %264, 16 - call void @llvm.assume(i1 %283) - %284 = icmp ne i32 %264, 15 - call void @llvm.assume(i1 %284) - %285 = add nuw nsw i32 %.sroa.speculated.i.i, 49 - %286 = zext nneg i32 %285 to i64 - %287 = lshr i64 %282, %286 - %288 = trunc nuw nsw i64 %287 to i32 - %289 = sub nuw nsw i32 16, %.sroa.speculated.i.i - %.neg.i = add nsw i32 %257, -31 - %290 = add nuw nsw i32 %.neg.i, %.sroa.speculated.i.i +279: ; preds = %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit41.i.i + %280 = shl i64 %storemerge235250.i.i, 15 + %281 = icmp slt i32 %262, 16 + call void @llvm.assume(i1 %281) + %282 = icmp ne i32 %262, 15 + call void @llvm.assume(i1 %282) + %283 = add nuw nsw i32 %.sroa.speculated.i.i, 49 + %284 = zext nneg i32 %283 to i64 + %285 = lshr i64 %280, %284 + %286 = trunc nuw nsw i64 %285 to i32 + %287 = sub nuw nsw i32 16, %.sroa.speculated.i.i + %.neg.i = add nsw i32 %255, -31 + %288 = add nuw nsw i32 %.neg.i, %.sroa.speculated.i.i br label %_ZN8rawspeed12_GLOBAL__N_124OlympusDifferenceDecoder7getDiffERNS_14BitStreamerMSBE.exit.i.i -_ZN8rawspeed12_GLOBAL__N_124OlympusDifferenceDecoder7getDiffERNS_14BitStreamerMSBE.exit.i.i: ; preds = %281, %276 - %.sink277.i.i = phi i32 [ %289, %281 ], [ %278, %276 ] - %.sink275.i.i = phi i64 [ %282, %281 ], [ %storemerge235250.i.i, %276 ] - %.sink270.i.i = phi i32 [ %290, %281 ], [ %280, %276 ] - %.0.i14.i.i = phi i32 [ %288, %281 ], [ %277, %276 ] - %291 = zext nneg i32 %.sink277.i.i to i64 - %292 = shl i64 %.sink275.i.i, %291 - %293 = shl nsw i32 %.0.i14.i.i, %.sroa.speculated.i.i - %294 = icmp samesign ult i32 %.sink270.i.i, 65 - call void @llvm.assume(i1 %294) - %295 = icmp samesign ule i32 %.sroa.speculated.i.i, %.sink270.i.i - call void @llvm.assume(i1 %295) - %296 = sub nuw nsw i32 64, %.sroa.speculated.i.i - %297 = zext nneg i32 %296 to i64 - %298 = lshr i64 %292, %297 - %299 = trunc nuw nsw i64 %298 to i32 - %300 = sub nsw i32 %.sink270.i.i, %.sroa.speculated.i.i - %301 = zext nneg i32 %.sroa.speculated.i.i to i64 - %302 = shl i64 %292, %301 - %303 = or i32 %293, %299 - store i32 %303, ptr %258, align 8, !tbaa !92 - %304 = xor i32 %303, %270 - %305 = getelementptr inbounds nuw i8, ptr %231, i64 12 - %306 = load i32, ptr %305, align 4, !tbaa !92 +_ZN8rawspeed12_GLOBAL__N_124OlympusDifferenceDecoder7getDiffERNS_14BitStreamerMSBE.exit.i.i: ; preds = %279, %274 + %.sink277.i.i = phi i32 [ %287, %279 ], [ %276, %274 ] + %.sink275.i.i = phi i64 [ %280, %279 ], [ %storemerge235250.i.i, %274 ] + %.sink270.i.i = phi i32 [ %288, %279 ], [ %278, %274 ] + %.0.i14.i.i = phi i32 [ %286, %279 ], [ %275, %274 ] + %289 = zext nneg i32 %.sink277.i.i to i64 + %290 = shl i64 %.sink275.i.i, %289 + %291 = shl nsw i32 %.0.i14.i.i, %.sroa.speculated.i.i + %292 = icmp samesign ult i32 %.sink270.i.i, 65 + call void @llvm.assume(i1 %292) + %293 = icmp samesign ule i32 %.sroa.speculated.i.i, %.sink270.i.i + call void @llvm.assume(i1 %293) + %294 = sub nuw nsw i32 64, %.sroa.speculated.i.i + %295 = zext nneg i32 %294 to i64 + %296 = lshr i64 %290, %295 + %297 = trunc nuw nsw i64 %296 to i32 + %298 = sub nsw i32 %.sink270.i.i, %.sroa.speculated.i.i + %299 = zext nneg i32 %.sroa.speculated.i.i to i64 + %300 = shl i64 %290, %299 + %301 = or i32 %291, %297 + store i32 %301, ptr %256, align 8, !tbaa !92 + %302 = xor i32 %301, %268 + %303 = getelementptr inbounds nuw i8, ptr %229, i64 12 + %304 = load i32, ptr %303, align 4, !tbaa !92 + %305 = add nsw i32 %304, %302 + %306 = mul nsw i32 %305, 3 %307 = add nsw i32 %306, %304 - %308 = mul nsw i32 %307, 3 - %309 = add nsw i32 %308, %306 - %310 = ashr i32 %309, 5 - store i32 %310, ptr %305, align 4, !tbaa !92 - %311 = icmp sgt i32 %303, 16 - %312 = add nsw i32 %260, 1 - %spec.select234.i.i = select i1 %311, i32 0, i32 %312 - %313 = lshr i32 %268, 12 - %314 = and i32 %313, 3 - store i32 %spec.select234.i.i, ptr %259, align 8, !tbaa !92 - %315 = shl nsw i32 %307, 2 - %316 = or disjoint i32 %315, %314 - %317 = add nsw i64 %230, -2 - %318 = icmp samesign ult i64 %317, %111 - call void @llvm.assume(i1 %318) - %319 = getelementptr inbounds nuw i16, ptr %130, i64 %317 - %320 = load i16, ptr %319, align 2, !tbaa !115 - %321 = zext i16 %320 to i32 - br i1 %117, label %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit.i.i, label %322 - -322: ; preds = %_ZN8rawspeed12_GLOBAL__N_124OlympusDifferenceDecoder7getDiffERNS_14BitStreamerMSBE.exit.i.i - %323 = icmp samesign ult i64 %230, %111 - call void @llvm.assume(i1 %323) - call void @llvm.assume(i1 %120) - call void @llvm.assume(i1 %124) - %324 = getelementptr inbounds nuw i16, ptr %125, i64 %230 - %325 = load i16, ptr %324, align 2, !tbaa !115 - %326 = zext i16 %325 to i32 - %327 = getelementptr inbounds nuw i16, ptr %125, i64 %317 - %328 = load i16, ptr %327, align 2, !tbaa !115 - %329 = zext i16 %328 to i32 - %330 = sub nsw i32 %321, %329 - %331 = sub nsw i32 %326, %329 - %332 = xor i32 %330, %331 - %333 = icmp slt i32 %332, 0 - %334 = icmp ne i16 %320, %328 - %or.cond3.i.i.i = and i1 %334, %333 - %335 = icmp ne i16 %325, %328 - %or.cond5.i.i.i = and i1 %335, %or.cond3.i.i.i - %336 = call i32 @llvm.abs.i32(i32 %330, i1 true) - br i1 %or.cond5.i.i.i, label %337, label %346 - -337: ; preds = %322 - %338 = icmp samesign ugt i32 %336, 32 - %339 = call i32 @llvm.abs.i32(i32 %331, i1 true) - %340 = icmp samesign ugt i32 %339, 32 - %or.cond27.i.i.i = select i1 %338, i1 true, i1 %340 - br i1 %or.cond27.i.i.i, label %341, label %343 - -341: ; preds = %337 - %342 = add nsw i32 %331, %321 + %308 = ashr i32 %307, 5 + store i32 %308, ptr %303, align 4, !tbaa !92 + %309 = icmp sgt i32 %301, 16 + %310 = add nsw i32 %258, 1 + %spec.select234.i.i = select i1 %309, i32 0, i32 %310 + %311 = lshr i32 %266, 12 + %312 = and i32 %311, 3 + store i32 %spec.select234.i.i, ptr %257, align 8, !tbaa !92 + %313 = shl nsw i32 %305, 2 + %314 = or disjoint i32 %313, %312 + %315 = add nsw i64 %228, -2 + %316 = icmp samesign ult i64 %315, %111 + call void @llvm.assume(i1 %316) + %317 = getelementptr inbounds nuw i16, ptr %128, i64 %315 + %318 = load i16, ptr %317, align 2, !tbaa !115 + %319 = zext i16 %318 to i32 + br i1 %117, label %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit.i.i, label %320 + +320: ; preds = %_ZN8rawspeed12_GLOBAL__N_124OlympusDifferenceDecoder7getDiffERNS_14BitStreamerMSBE.exit.i.i + %321 = icmp samesign ult i64 %228, %111 + call void @llvm.assume(i1 %321) + call void @llvm.assume(i1 %119) + call void @llvm.assume(i1 %122) + %322 = getelementptr inbounds nuw i16, ptr %123, i64 %228 + %323 = load i16, ptr %322, align 2, !tbaa !115 + %324 = zext i16 %323 to i32 + %325 = getelementptr inbounds nuw i16, ptr %123, i64 %315 + %326 = load i16, ptr %325, align 2, !tbaa !115 + %327 = zext i16 %326 to i32 + %328 = sub nsw i32 %319, %327 + %329 = sub nsw i32 %324, %327 + %330 = xor i32 %328, %329 + %331 = icmp slt i32 %330, 0 + %332 = icmp ne i16 %318, %326 + %or.cond3.i.i.i = and i1 %332, %331 + %333 = icmp ne i16 %323, %326 + %or.cond5.i.i.i = and i1 %333, %or.cond3.i.i.i + %334 = call i32 @llvm.abs.i32(i32 %328, i1 true) + br i1 %or.cond5.i.i.i, label %335, label %344 + +335: ; preds = %320 + %336 = icmp samesign ugt i32 %334, 32 + %337 = call i32 @llvm.abs.i32(i32 %329, i1 true) + %338 = icmp samesign ugt i32 %337, 32 + %or.cond27.i.i.i = select i1 %336, i1 true, i1 %338 + br i1 %or.cond27.i.i.i, label %339, label %341 + +339: ; preds = %335 + %340 = add nsw i32 %329, %319 br label %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit.i.i -343: ; preds = %337 - %344 = add nuw nsw i32 %326, %321 - %345 = lshr i32 %344, 1 +341: ; preds = %335 + %342 = add nuw nsw i32 %324, %319 + %343 = lshr i32 %342, 1 br label %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit.i.i -346: ; preds = %322 - %347 = call i32 @llvm.abs.i32(i32 %331, i1 true) - %348 = icmp samesign ugt i32 %336, %347 - %349 = select i1 %348, i32 %321, i32 %326 +344: ; preds = %320 + %345 = call i32 @llvm.abs.i32(i32 %329, i1 true) + %346 = icmp samesign ugt i32 %334, %345 + %347 = select i1 %346, i32 %319, i32 %324 br label %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit.i.i -_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit.i.i: ; preds = %346, %343, %341, %_ZN8rawspeed12_GLOBAL__N_124OlympusDifferenceDecoder7getDiffERNS_14BitStreamerMSBE.exit.i.i - %.0.i19.i.i = phi i32 [ %342, %341 ], [ %345, %343 ], [ %349, %346 ], [ %321, %_ZN8rawspeed12_GLOBAL__N_124OlympusDifferenceDecoder7getDiffERNS_14BitStreamerMSBE.exit.i.i ] - %350 = add nsw i32 %316, %.0.i19.i.i - %351 = trunc i32 %350 to i16 - %352 = icmp samesign ult i64 %230, %111 - call void @llvm.assume(i1 %352) - %353 = getelementptr inbounds nuw i16, ptr %130, i64 %230 - store i16 %351, ptr %353, align 2, !tbaa !115 +_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit.i.i: ; preds = %344, %341, %339, %_ZN8rawspeed12_GLOBAL__N_124OlympusDifferenceDecoder7getDiffERNS_14BitStreamerMSBE.exit.i.i + %.0.i19.i.i = phi i32 [ %340, %339 ], [ %343, %341 ], [ %347, %344 ], [ %319, %_ZN8rawspeed12_GLOBAL__N_124OlympusDifferenceDecoder7getDiffERNS_14BitStreamerMSBE.exit.i.i ] + %348 = add nsw i32 %314, %.0.i19.i.i + %349 = trunc i32 %348 to i16 + %350 = icmp samesign ult i64 %228, %111 + call void @llvm.assume(i1 %350) + %351 = getelementptr inbounds nuw i16, ptr %128, i64 %228 + store i16 %349, ptr %351, align 2, !tbaa !115 %indvars.iv.next265.i.i = add nuw nsw i64 %indvars.iv264.i.i, 1 %.not.i11.i.i = icmp eq i64 %indvars.iv.next265.i.i, 2 - br i1 %.not.i11.i.i, label %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit12.i.i, label %227, !llvm.loop !117 + br i1 %.not.i11.i.i, label %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit12.i.i, label %225, !llvm.loop !117 _ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit12.i.i: ; preds = %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit.i.i %indvars.iv.next268.i.i = add nuw nsw i64 %indvars.iv267.i.i, 1 @@ -919,8 +917,8 @@ _ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayI br i1 %.not.i.i, label %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl13decompressRowERNS_14BitStreamerMSBEi.exit.i, label %.preheader.i.i, !llvm.loop !118 _ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl13decompressRowERNS_14BitStreamerMSBEi.exit.i: ; preds = %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit12.i.i, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit.preheader.i.i - %.sroa.012.2.i = phi i64 [ %202, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit.preheader.i.i ], [ %302, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit12.i.i ] - %.sroa.9.1.i = phi i32 [ %200, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit.preheader.i.i ], [ %300, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit12.i.i ] + %.sroa.012.2.i = phi i64 [ %200, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit.preheader.i.i ], [ %300, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit12.i.i ] + %.sroa.9.1.i = phi i32 [ %198, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit.preheader.i.i ], [ %298, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit12.i.i ] %.sroa.1915.6.i = phi i32 [ %.sroa.1915.2.i, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit.preheader.i.i ], [ %.sroa.1915.5.i, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit12.i.i ] call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %3) #20 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 @@ -928,128 +926,128 @@ _ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl13decompressRowERNS_14BitStr br i1 %exitcond.not.i, label %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl10decompressENS_10ByteStreamE.exit, label %116, !llvm.loop !119 _ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl10decompressENS_10ByteStreamE.exit: ; preds = %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl13decompressRowERNS_14BitStreamerMSBEi.exit.i - %354 = load ptr, ptr %21, align 8, !tbaa !94 - %.not.i.i.i.i.i11 = icmp eq ptr %354, null - br i1 %.not.i.i.i.i.i11, label %_ZN8rawspeed9SimpleLUTIaLi12EED2Ev.exit.i, label %355 - -355: ; preds = %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl10decompressENS_10ByteStreamE.exit - %356 = load ptr, ptr %22, align 8, !tbaa !97 - %357 = ptrtoint ptr %356 to i64 - %358 = ptrtoint ptr %354 to i64 - %359 = sub i64 %357, %358 - call void @_ZdlPvm(ptr noundef nonnull %354, i64 noundef %359) #23 + %352 = load ptr, ptr %21, align 8, !tbaa !94 + %.not.i.i.i.i.i11 = icmp eq ptr %352, null + br i1 %.not.i.i.i.i.i11, label %_ZN8rawspeed9SimpleLUTIaLi12EED2Ev.exit.i, label %353 + +353: ; preds = %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl10decompressENS_10ByteStreamE.exit + %354 = load ptr, ptr %22, align 8, !tbaa !97 + %355 = ptrtoint ptr %354 to i64 + %356 = ptrtoint ptr %352 to i64 + %357 = sub i64 %355, %356 + call void @_ZdlPvm(ptr noundef nonnull %352, i64 noundef %357) #23 br label %_ZN8rawspeed9SimpleLUTIaLi12EED2Ev.exit.i -_ZN8rawspeed9SimpleLUTIaLi12EED2Ev.exit.i: ; preds = %355, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl10decompressENS_10ByteStreamE.exit - %360 = load ptr, ptr %20, align 8, !tbaa !14 - %.not.i.i.i.i12 = icmp eq ptr %360, null - br i1 %.not.i.i.i.i12, label %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImplD2Ev.exit, label %361 - -361: ; preds = %_ZN8rawspeed9SimpleLUTIaLi12EED2Ev.exit.i - %362 = getelementptr inbounds nuw i8, ptr %360, i64 8 - %363 = load atomic i64, ptr %362 acquire, align 8 - %364 = icmp eq i64 %363, 4294967297 - %365 = trunc i64 %363 to i32 - br i1 %364, label %366, label %374 - -366: ; preds = %361 - store i32 0, ptr %362, align 8, !tbaa !86 - %367 = getelementptr inbounds nuw i8, ptr %360, i64 12 - store i32 0, ptr %367, align 4, !tbaa !88 - %368 = load ptr, ptr %360, align 8, !tbaa !89 - %369 = getelementptr inbounds nuw i8, ptr %368, i64 16 - %370 = load ptr, ptr %369, align 8 - call void %370(ptr noundef nonnull align 8 dereferenceable(16) %360) #20 - %371 = load ptr, ptr %360, align 8, !tbaa !89 - %372 = getelementptr inbounds nuw i8, ptr %371, i64 24 - %373 = load ptr, ptr %372, align 8 - call void %373(ptr noundef nonnull align 8 dereferenceable(16) %360) #20 +_ZN8rawspeed9SimpleLUTIaLi12EED2Ev.exit.i: ; preds = %353, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl10decompressENS_10ByteStreamE.exit + %358 = load ptr, ptr %20, align 8, !tbaa !14 + %.not.i.i.i.i12 = icmp eq ptr %358, null + br i1 %.not.i.i.i.i12, label %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImplD2Ev.exit, label %359 + +359: ; preds = %_ZN8rawspeed9SimpleLUTIaLi12EED2Ev.exit.i + %360 = getelementptr inbounds nuw i8, ptr %358, i64 8 + %361 = load atomic i64, ptr %360 acquire, align 8 + %362 = icmp eq i64 %361, 4294967297 + %363 = trunc i64 %361 to i32 + br i1 %362, label %364, label %372 + +364: ; preds = %359 + store i32 0, ptr %360, align 8, !tbaa !86 + %365 = getelementptr inbounds nuw i8, ptr %358, i64 12 + store i32 0, ptr %365, align 4, !tbaa !88 + %366 = load ptr, ptr %358, align 8, !tbaa !89 + %367 = getelementptr inbounds nuw i8, ptr %366, i64 16 + %368 = load ptr, ptr %367, align 8 + call void %368(ptr noundef nonnull align 8 dereferenceable(16) %358) #20 + %369 = load ptr, ptr %358, align 8, !tbaa !89 + %370 = getelementptr inbounds nuw i8, ptr %369, i64 24 + %371 = load ptr, ptr %370, align 8 + call void %371(ptr noundef nonnull align 8 dereferenceable(16) %358) #20 br label %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImplD2Ev.exit -374: ; preds = %361 - %375 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !91 - %.not.i.i.i.i1.i = icmp eq i8 %375, 0 - br i1 %.not.i.i.i.i1.i, label %378, label %376 +372: ; preds = %359 + %373 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !91 + %.not.i.i.i.i1.i = icmp eq i8 %373, 0 + br i1 %.not.i.i.i.i1.i, label %376, label %374 -376: ; preds = %374 - %377 = add nsw i32 %365, -1 - store i32 %377, ptr %362, align 4, !tbaa !92 +374: ; preds = %372 + %375 = add nsw i32 %363, -1 + store i32 %375, ptr %360, align 4, !tbaa !92 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i -378: ; preds = %374 - %379 = atomicrmw volatile add ptr %362, i32 -1 acq_rel, align 4 +376: ; preds = %372 + %377 = atomicrmw volatile add ptr %360, i32 -1 acq_rel, align 4 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i -_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i: ; preds = %378, %376 - %.0.i.i.i.i.i.i = phi i32 [ %365, %376 ], [ %379, %378 ] - %380 = icmp eq i32 %.0.i.i.i.i.i.i, 1 - br i1 %380, label %381, label %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImplD2Ev.exit, !prof !93 +_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i: ; preds = %376, %374 + %.0.i.i.i.i.i.i = phi i32 [ %363, %374 ], [ %377, %376 ] + %378 = icmp eq i32 %.0.i.i.i.i.i.i, 1 + br i1 %378, label %379, label %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImplD2Ev.exit, !prof !93 -381: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i - call void @_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv(ptr noundef nonnull align 8 dereferenceable(16) %360) #20 +379: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i + call void @_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv(ptr noundef nonnull align 8 dereferenceable(16) %358) #20 br label %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImplD2Ev.exit -_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImplD2Ev.exit: ; preds = %_ZN8rawspeed9SimpleLUTIaLi12EED2Ev.exit.i, %366, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i, %381 - %382 = load ptr, ptr %7, align 8, !tbaa !14 - %.not.i.i.i13 = icmp eq ptr %382, null - br i1 %.not.i.i.i13, label %_ZN8rawspeed8RawImageD2Ev.exit, label %383 - -383: ; preds = %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImplD2Ev.exit - %384 = getelementptr inbounds nuw i8, ptr %382, i64 8 - %385 = load atomic i64, ptr %384 acquire, align 8 - %386 = icmp eq i64 %385, 4294967297 - %387 = trunc i64 %385 to i32 - br i1 %386, label %388, label %396 - -388: ; preds = %383 - store i32 0, ptr %384, align 8, !tbaa !86 - %389 = getelementptr inbounds nuw i8, ptr %382, i64 12 - store i32 0, ptr %389, align 4, !tbaa !88 - %390 = load ptr, ptr %382, align 8, !tbaa !89 - %391 = getelementptr inbounds nuw i8, ptr %390, i64 16 - %392 = load ptr, ptr %391, align 8 - call void %392(ptr noundef nonnull align 8 dereferenceable(16) %382) #20 - %393 = load ptr, ptr %382, align 8, !tbaa !89 - %394 = getelementptr inbounds nuw i8, ptr %393, i64 24 - %395 = load ptr, ptr %394, align 8 - call void %395(ptr noundef nonnull align 8 dereferenceable(16) %382) #20 +_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImplD2Ev.exit: ; preds = %_ZN8rawspeed9SimpleLUTIaLi12EED2Ev.exit.i, %364, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i, %379 + %380 = load ptr, ptr %7, align 8, !tbaa !14 + %.not.i.i.i13 = icmp eq ptr %380, null + br i1 %.not.i.i.i13, label %_ZN8rawspeed8RawImageD2Ev.exit, label %381 + +381: ; preds = %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImplD2Ev.exit + %382 = getelementptr inbounds nuw i8, ptr %380, i64 8 + %383 = load atomic i64, ptr %382 acquire, align 8 + %384 = icmp eq i64 %383, 4294967297 + %385 = trunc i64 %383 to i32 + br i1 %384, label %386, label %394 + +386: ; preds = %381 + store i32 0, ptr %382, align 8, !tbaa !86 + %387 = getelementptr inbounds nuw i8, ptr %380, i64 12 + store i32 0, ptr %387, align 4, !tbaa !88 + %388 = load ptr, ptr %380, align 8, !tbaa !89 + %389 = getelementptr inbounds nuw i8, ptr %388, i64 16 + %390 = load ptr, ptr %389, align 8 + call void %390(ptr noundef nonnull align 8 dereferenceable(16) %380) #20 + %391 = load ptr, ptr %380, align 8, !tbaa !89 + %392 = getelementptr inbounds nuw i8, ptr %391, i64 24 + %393 = load ptr, ptr %392, align 8 + call void %393(ptr noundef nonnull align 8 dereferenceable(16) %380) #20 br label %_ZN8rawspeed8RawImageD2Ev.exit -396: ; preds = %383 - %397 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !91 - %.not.i.i.i.i14 = icmp eq i8 %397, 0 - br i1 %.not.i.i.i.i14, label %400, label %398 +394: ; preds = %381 + %395 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !91 + %.not.i.i.i.i14 = icmp eq i8 %395, 0 + br i1 %.not.i.i.i.i14, label %398, label %396 -398: ; preds = %396 - %399 = add nsw i32 %387, -1 - store i32 %399, ptr %384, align 4, !tbaa !92 +396: ; preds = %394 + %397 = add nsw i32 %385, -1 + store i32 %397, ptr %382, align 4, !tbaa !92 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i -400: ; preds = %396 - %401 = atomicrmw volatile add ptr %384, i32 -1 acq_rel, align 4 +398: ; preds = %394 + %399 = atomicrmw volatile add ptr %382, i32 -1 acq_rel, align 4 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i -_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i: ; preds = %400, %398 - %.0.i.i.i.i.i = phi i32 [ %387, %398 ], [ %401, %400 ] - %402 = icmp eq i32 %.0.i.i.i.i.i, 1 - br i1 %402, label %403, label %_ZN8rawspeed8RawImageD2Ev.exit, !prof !93 +_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i: ; preds = %398, %396 + %.0.i.i.i.i.i = phi i32 [ %385, %396 ], [ %399, %398 ] + %400 = icmp eq i32 %.0.i.i.i.i.i, 1 + br i1 %400, label %401, label %_ZN8rawspeed8RawImageD2Ev.exit, !prof !93 -403: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i - call void @_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv(ptr noundef nonnull align 8 dereferenceable(16) %382) #20 +401: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i + call void @_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv(ptr noundef nonnull align 8 dereferenceable(16) %380) #20 br label %_ZN8rawspeed8RawImageD2Ev.exit -_ZN8rawspeed8RawImageD2Ev.exit: ; preds = %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImplD2Ev.exit, %388, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i, %403 +_ZN8rawspeed8RawImageD2Ev.exit: ; preds = %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImplD2Ev.exit, %386, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i, %401 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %4) #20 ret void -404: ; preds = %.invoke - %405 = landingpad { ptr, i32 } +402: ; preds = %.invoke + %403 = landingpad { ptr, i32 } cleanup call fastcc void @_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImplD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %4) #20 br label %.body -.body: ; preds = %.body.i, %404 - %.pn = phi { ptr, i32 } [ %405, %404 ], [ %lpad.phi.i.i, %.body.i ] +.body: ; preds = %.body.i, %402 + %.pn = phi { ptr, i32 } [ %403, %402 ], [ %lpad.phi.i.i, %.body.i ] call void @_ZN8rawspeed8RawImageD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #20 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %4) #20 resume { ptr, i32 } %.pn diff --git a/bench/darktable/optimized/PentaxDecompressor.ll b/bench/darktable/optimized/PentaxDecompressor.ll index fc31a096630..b0651e49516 100644 --- a/bench/darktable/optimized/PentaxDecompressor.ll +++ b/bench/darktable/optimized/PentaxDecompressor.ll @@ -1900,7 +1900,7 @@ _ZNK8rawspeed10ByteStream19peekRemainingBufferEv.exit: ; preds = %2 tail call void @llvm.assume(i1 %40) %41 = getelementptr inbounds nuw i8, ptr %39, i64 %34 %42 = icmp samesign ult i32 %33, 4 - br i1 %42, label %59, label %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit.preheader + br i1 %42, label %62, label %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit.preheader _ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit.preheader: ; preds = %_ZNK8rawspeed10ByteStream19peekRemainingBufferEv.exit %43 = icmp sgt i32 %13, 0 @@ -1923,301 +1923,302 @@ _ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequen %55 = zext nneg i32 %16 to i64 %56 = zext nneg i32 %11 to i64 %57 = zext nneg i32 %17 to i64 - %58 = zext nneg i32 %16 to i64 + %58 = zext nneg i32 %13 to i64 + %59 = zext nneg i32 %16 to i64 + %60 = zext nneg i32 %11 to i64 + %61 = zext nneg i32 %17 to i64 %wide.trip.count241 = zext nneg i32 %13 to i64 - br label %60 + br label %63 -59: ; preds = %_ZNK8rawspeed10ByteStream19peekRemainingBufferEv.exit +62: ; preds = %_ZNK8rawspeed10ByteStream19peekRemainingBufferEv.exit tail call void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_11IOExceptionEEEvPKcz(ptr noundef nonnull @.str.17, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8rawspeed26BitStreamerReplenisherBaseINS_14BitStreamerMSBEEC2ENS_10Array1DRefIKSt4byteEE) #14 unreachable _ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit._crit_edge: ; preds = %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit, %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit.preheader ret void -60: ; preds = %.lr.ph, %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit +63: ; preds = %.lr.ph, %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit %indvars.iv238 = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next239, %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit ] %.sroa.4663.0225 = phi i32 [ 0, %.lr.ph ], [ %.sroa.4663.2, %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit ] %.sroa.16.0224 = phi i32 [ 0, %.lr.ph ], [ %.sroa.16.3, %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit ] %.sroa.037.0223 = phi i64 [ 0, %.lr.ph ], [ %.sroa.037.3, %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit ] call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #20 store i64 0, ptr %3, align 8 - %61 = icmp samesign ugt i64 %indvars.iv238, 1 - br i1 %61, label %62, label %76 - -62: ; preds = %60 - %63 = add nsw i64 %indvars.iv238, -2 - %64 = trunc nsw i64 %63 to i32 - %65 = icmp samesign ugt i32 %13, %64 - tail call void @llvm.assume(i1 %65) - %66 = mul nuw nsw i64 %63, %58 - %67 = trunc i64 %66 to i32 - %68 = add i32 %11, %67 - %69 = icmp samesign ule i32 %68, %17 - tail call void @llvm.assume(i1 %69) - %70 = getelementptr inbounds nuw i16, ptr %6, i64 %66 - %71 = load i16, ptr %70, align 2, !tbaa !168 - %72 = zext i16 %71 to i32 - %73 = getelementptr inbounds nuw i8, ptr %70, i64 2 - %74 = load i16, ptr %73, align 2, !tbaa !168 - %75 = zext i16 %74 to i32 - store i32 %72, ptr %3, align 8 - store i32 %75, ptr %.sroa.4.0..sroa_idx, align 4, !tbaa !131 - br label %76 - -76: ; preds = %62, %60 - %77 = load ptr, ptr %48, align 8 - %78 = load ptr, ptr %50, align 8 - %79 = load ptr, ptr %49, align 8 - %80 = ptrtoint ptr %78 to i64 + %64 = icmp samesign ugt i64 %indvars.iv238, 1 + br i1 %64, label %65, label %77 + +65: ; preds = %63 + %66 = add nsw i64 %indvars.iv238, -2 + %67 = icmp samesign ult i64 %66, %58 + tail call void @llvm.assume(i1 %67) + %68 = mul nuw nsw i64 %66, %59 + %69 = add nuw nsw i64 %68, %60 + %70 = icmp samesign ule i64 %69, %61 + tail call void @llvm.assume(i1 %70) + %71 = getelementptr inbounds nuw i16, ptr %6, i64 %68 + %72 = load i16, ptr %71, align 2, !tbaa !168 + %73 = zext i16 %72 to i32 + %74 = getelementptr inbounds nuw i8, ptr %71, i64 2 + %75 = load i16, ptr %74, align 2, !tbaa !168 + %76 = zext i16 %75 to i32 + store i32 %73, ptr %3, align 8 + store i32 %76, ptr %.sroa.4.0..sroa_idx, align 4, !tbaa !131 + br label %77 + +77: ; preds = %65, %63 + %78 = load ptr, ptr %48, align 8 + %79 = load ptr, ptr %50, align 8 + %80 = load ptr, ptr %49, align 8 %81 = ptrtoint ptr %79 to i64 - %82 = sub i64 %80, %81 - %83 = ashr exact i64 %82, 2 - %84 = add nsw i64 %83, -1 - %85 = icmp ugt i64 %84, 11 - %86 = load ptr, ptr %51, align 8 - %87 = load ptr, ptr %52, align 8 - %88 = load ptr, ptr %53, align 8 - %89 = load i8, ptr %54, align 1, !range !91 - %90 = trunc nuw i8 %89 to i1 - %91 = mul nuw nsw i64 %indvars.iv238, %55 - %92 = add nuw nsw i64 %91, %56 - %93 = icmp samesign ule i64 %92, %57 - %94 = getelementptr inbounds nuw i16, ptr %6, i64 %91 - br label %95 - -_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit: ; preds = %197 + %82 = ptrtoint ptr %80 to i64 + %83 = sub i64 %81, %82 + %84 = ashr exact i64 %83, 2 + %85 = add nsw i64 %84, -1 + %86 = icmp ugt i64 %85, 11 + %87 = load ptr, ptr %51, align 8 + %88 = load ptr, ptr %52, align 8 + %89 = load ptr, ptr %53, align 8 + %90 = load i8, ptr %54, align 1, !range !91 + %91 = trunc nuw i8 %90 to i1 + %92 = mul nuw nsw i64 %indvars.iv238, %55 + %93 = add nuw nsw i64 %92, %56 + %94 = icmp samesign ule i64 %93, %57 + %95 = getelementptr inbounds nuw i16, ptr %6, i64 %92 + br label %96 + +_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit: ; preds = %198 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #20 %indvars.iv.next239 = add nuw nsw i64 %indvars.iv238, 1 %exitcond242.not = icmp eq i64 %indvars.iv.next239, %wide.trip.count241 - br i1 %exitcond242.not, label %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit._crit_edge, label %60, !llvm.loop !169 - -95: ; preds = %76, %197 - %indvars.iv = phi i64 [ 0, %76 ], [ %indvars.iv.next, %197 ] - %.sroa.4663.1221 = phi i32 [ %.sroa.4663.0225, %76 ], [ %.sroa.4663.2, %197 ] - %.sroa.16.1220 = phi i32 [ %.sroa.16.0224, %76 ], [ %.sroa.16.3, %197 ] - %.sroa.037.1219 = phi i64 [ %.sroa.037.0223, %76 ], [ %.sroa.037.3, %197 ] - %96 = icmp samesign ult i32 %.sroa.16.1220, 65 - tail call void @llvm.assume(i1 %96) + br i1 %exitcond242.not, label %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit._crit_edge, label %63, !llvm.loop !169 + +96: ; preds = %77, %198 + %indvars.iv = phi i64 [ 0, %77 ], [ %indvars.iv.next, %198 ] + %.sroa.4663.1221 = phi i32 [ %.sroa.4663.0225, %77 ], [ %.sroa.4663.2, %198 ] + %.sroa.16.1220 = phi i32 [ %.sroa.16.0224, %77 ], [ %.sroa.16.3, %198 ] + %.sroa.037.1219 = phi i64 [ %.sroa.037.0223, %77 ], [ %.sroa.037.3, %198 ] + %97 = icmp samesign ult i32 %.sroa.16.1220, 65 + tail call void @llvm.assume(i1 %97) %.not.i31 = icmp samesign ult i32 %.sroa.16.1220, 32 - br i1 %.not.i31, label %97, label %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit + br i1 %.not.i31, label %98, label %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit -97: ; preds = %95 +98: ; preds = %96 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %.sroa.0.i.i) - %98 = add nuw nsw i32 %.sroa.4663.1221, 4 - %.not.i.i32 = icmp samesign ugt i32 %98, %33 - br i1 %.not.i.i32, label %102, label %99, !prof !133 + %99 = add nuw nsw i32 %.sroa.4663.1221, 4 + %.not.i.i32 = icmp samesign ugt i32 %99, %33 + br i1 %.not.i.i32, label %103, label %100, !prof !133 -99: ; preds = %97 - %100 = zext nneg i32 %.sroa.4663.1221 to i64 - %101 = getelementptr inbounds nuw i8, ptr %41, i64 %100 +100: ; preds = %98 + %101 = zext nneg i32 %.sroa.4663.1221 to i64 + %102 = getelementptr inbounds nuw i8, ptr %41, i64 %101 br label %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i -102: ; preds = %97 - %103 = icmp samesign ugt i32 %.sroa.4663.1221, %47 - br i1 %103, label %104, label %105, !prof !133 +103: ; preds = %98 + %104 = icmp samesign ugt i32 %.sroa.4663.1221, %47 + br i1 %104, label %105, label %106, !prof !133 -104: ; preds = %102 +105: ; preds = %103 tail call void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_11IOExceptionEEEvPKcz(ptr noundef nonnull @.str.28, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv) #14 unreachable -105: ; preds = %102 +106: ; preds = %103 store i32 0, ptr %.sroa.0.i.i, align 4 %.sroa.speculated26.i.i.i = tail call i32 @llvm.umin.i32(i32 %33, i32 %.sroa.4663.1221) - %106 = add nuw nsw i32 %.sroa.speculated26.i.i.i, 4 - %.sroa.speculated.i.i.i = tail call i32 @llvm.umin.i32(i32 %33, i32 %106) - %107 = sub nsw i32 %.sroa.speculated.i.i.i, %.sroa.speculated26.i.i.i - %108 = icmp ult i32 %107, 5 - tail call void @llvm.assume(i1 %108) - %109 = zext nneg i32 %.sroa.speculated26.i.i.i to i64 - %110 = getelementptr inbounds nuw i8, ptr %41, i64 %109 - %111 = zext nneg i32 %107 to i64 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %.sroa.0.i.i, ptr nonnull align 1 %110, i64 %111, i1 false) + %107 = add nuw nsw i32 %.sroa.speculated26.i.i.i, 4 + %.sroa.speculated.i.i.i = tail call i32 @llvm.umin.i32(i32 %33, i32 %107) + %108 = sub nsw i32 %.sroa.speculated.i.i.i, %.sroa.speculated26.i.i.i + %109 = icmp ult i32 %108, 5 + tail call void @llvm.assume(i1 %109) + %110 = zext nneg i32 %.sroa.speculated26.i.i.i to i64 + %111 = getelementptr inbounds nuw i8, ptr %41, i64 %110 + %112 = zext nneg i32 %108 to i64 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %.sroa.0.i.i, ptr nonnull align 1 %111, i64 %112, i1 false) br label %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i -_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i: ; preds = %105, %99 - %.sroa.0.0..sroa.0.0..in.i.i = phi ptr [ %.sroa.0.i.i, %105 ], [ %101, %99 ] +_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i: ; preds = %106, %100 + %.sroa.0.0..sroa.0.0..in.i.i = phi ptr [ %.sroa.0.i.i, %106 ], [ %102, %100 ] %.sroa.0.0..sroa.0.0..i.i = load i32, ptr %.sroa.0.0..sroa.0.0..in.i.i, align 1 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %.sroa.0.i.i) - %112 = tail call i32 @llvm.bswap.i32(i32 %.sroa.0.0..sroa.0.0..i.i) - %113 = zext i32 %112 to i64 - %114 = or disjoint i32 %.sroa.16.1220, 32 - %115 = sub nuw nsw i32 32, %.sroa.16.1220 - %116 = zext nneg i32 %115 to i64 - %117 = shl nuw i64 %113, %116 - %118 = or i64 %117, %.sroa.037.1219 + %113 = tail call i32 @llvm.bswap.i32(i32 %.sroa.0.0..sroa.0.0..i.i) + %114 = zext i32 %113 to i64 + %115 = or disjoint i32 %.sroa.16.1220, 32 + %116 = sub nuw nsw i32 32, %.sroa.16.1220 + %117 = zext nneg i32 %116 to i64 + %118 = shl nuw i64 %114, %117 + %119 = or i64 %118, %.sroa.037.1219 br label %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit -_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit: ; preds = %95, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i - %.sroa.037.4 = phi i64 [ %118, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i ], [ %.sroa.037.1219, %95 ] - %.sroa.16.4 = phi i32 [ %114, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i ], [ %.sroa.16.1220, %95 ] - %.sroa.4663.2 = phi i32 [ %98, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i ], [ %.sroa.4663.1221, %95 ] - %119 = lshr i64 %.sroa.037.4, 53 - %120 = getelementptr inbounds nuw i32, ptr %77, i64 %119 - %121 = load i32, ptr %120, align 4, !tbaa !132 - %122 = ashr i32 %121, 9 - %123 = and i32 %121, 255 - %124 = icmp samesign ult i32 %123, 33 - tail call void @llvm.assume(i1 %124) - %125 = sub nuw nsw i32 %.sroa.16.4, %123 - %126 = zext nneg i32 %123 to i64 - %127 = shl i64 %.sroa.037.4, %126 - %128 = and i32 %121, 256 - %.not.i = icmp eq i32 %128, 0 - br i1 %.not.i, label %129, label %_ZNK8rawspeed20PrefixCodeLUTDecoderINS_15BaselineCodeTagENS_23PrefixCodeLookupDecoderIS1_EEE6decodeINS_14BitStreamerMSBELb1EEEiRT_.exit - -129: ; preds = %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit - %.not17.i = icmp eq i32 %121, 0 - br i1 %.not17.i, label %134, label %130 - -130: ; preds = %129 - %131 = trunc i32 %121 to i8 +_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit: ; preds = %96, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i + %.sroa.037.4 = phi i64 [ %119, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i ], [ %.sroa.037.1219, %96 ] + %.sroa.16.4 = phi i32 [ %115, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i ], [ %.sroa.16.1220, %96 ] + %.sroa.4663.2 = phi i32 [ %99, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i ], [ %.sroa.4663.1221, %96 ] + %120 = lshr i64 %.sroa.037.4, 53 + %121 = getelementptr inbounds nuw i32, ptr %78, i64 %120 + %122 = load i32, ptr %121, align 4, !tbaa !132 + %123 = ashr i32 %122, 9 + %124 = and i32 %122, 255 + %125 = icmp samesign ult i32 %124, 33 + tail call void @llvm.assume(i1 %125) + %126 = sub nuw nsw i32 %.sroa.16.4, %124 + %127 = zext nneg i32 %124 to i64 + %128 = shl i64 %.sroa.037.4, %127 + %129 = and i32 %122, 256 + %.not.i = icmp eq i32 %129, 0 + br i1 %.not.i, label %130, label %_ZNK8rawspeed20PrefixCodeLUTDecoderINS_15BaselineCodeTagENS_23PrefixCodeLookupDecoderIS1_EEE6decodeINS_14BitStreamerMSBELb1EEEiRT_.exit + +130: ; preds = %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit + %.not17.i = icmp eq i32 %122, 0 + br i1 %.not17.i, label %135, label %131 + +131: ; preds = %130 %132 = trunc i32 %122 to i8 - %133 = icmp ne i8 %132, 0 - tail call void @llvm.assume(i1 %133) - br label %169 - -134: ; preds = %129 - %135 = icmp samesign ugt i32 %125, 10 - tail call void @llvm.assume(i1 %135) - %136 = add nsw i32 %125, -11 - %137 = shl i64 %127, 11 - %138 = trunc nuw nsw i64 %119 to i32 - %.sroa.0.018.i = trunc nuw nsw i64 %119 to i16 - br i1 %85, label %.lr.ph.i, label %.critedge.i - -.lr.ph.i: ; preds = %134, %.critedge2.i - %.sroa.037.6 = phi i64 [ %149, %.critedge2.i ], [ %137, %134 ] - %.sroa.16.6 = phi i32 [ %148, %.critedge2.i ], [ %136, %134 ] - %139 = phi i64 [ %154, %.critedge2.i ], [ 11, %134 ] - %.sroa.0.021.i = phi i16 [ %.sroa.0.0.i, %.critedge2.i ], [ %.sroa.0.018.i, %134 ] - %.sroa.8.020.i = phi i8 [ %153, %.critedge2.i ], [ 11, %134 ] - %.sroa.0.0.in19.i = phi i32 [ %152, %.critedge2.i ], [ %138, %134 ] - %140 = getelementptr inbounds nuw i16, ptr %86, i64 %139 - %141 = load i16, ptr %140, align 2, !tbaa !168 - %142 = icmp eq i16 %141, -1 - %143 = icmp ult i16 %141, %.sroa.0.021.i - %or.cond.i = select i1 %142, i1 true, i1 %143 + %133 = trunc i32 %123 to i8 + %134 = icmp ne i8 %133, 0 + tail call void @llvm.assume(i1 %134) + br label %170 + +135: ; preds = %130 + %136 = icmp samesign ugt i32 %126, 10 + tail call void @llvm.assume(i1 %136) + %137 = add nsw i32 %126, -11 + %138 = shl i64 %128, 11 + %139 = trunc nuw nsw i64 %120 to i32 + %.sroa.0.018.i = trunc nuw nsw i64 %120 to i16 + br i1 %86, label %.lr.ph.i, label %.critedge.i + +.lr.ph.i: ; preds = %135, %.critedge2.i + %.sroa.037.6 = phi i64 [ %150, %.critedge2.i ], [ %138, %135 ] + %.sroa.16.6 = phi i32 [ %149, %.critedge2.i ], [ %137, %135 ] + %140 = phi i64 [ %155, %.critedge2.i ], [ 11, %135 ] + %.sroa.0.021.i = phi i16 [ %.sroa.0.0.i, %.critedge2.i ], [ %.sroa.0.018.i, %135 ] + %.sroa.8.020.i = phi i8 [ %154, %.critedge2.i ], [ 11, %135 ] + %.sroa.0.0.in19.i = phi i32 [ %153, %.critedge2.i ], [ %139, %135 ] + %141 = getelementptr inbounds nuw i16, ptr %87, i64 %140 + %142 = load i16, ptr %141, align 2, !tbaa !168 + %143 = icmp eq i16 %142, -1 + %144 = icmp ult i16 %142, %.sroa.0.021.i + %or.cond.i = select i1 %143, i1 true, i1 %144 br i1 %or.cond.i, label %.critedge2.i, label %.critedge.i .critedge2.i: ; preds = %.lr.ph.i - %144 = icmp samesign ult i32 %.sroa.16.6, 65 - tail call void @llvm.assume(i1 %144) - %145 = icmp ne i32 %.sroa.16.6, 0 + %145 = icmp samesign ult i32 %.sroa.16.6, 65 tail call void @llvm.assume(i1 %145) - %146 = lshr i64 %.sroa.037.6, 63 - %147 = trunc nuw nsw i64 %146 to i32 - %148 = add nsw i32 %.sroa.16.6, -1 - %149 = shl i64 %.sroa.037.6, 1 - %150 = shl nsw i32 %.sroa.0.0.in19.i, 1 - %151 = and i32 %150, 131070 - %152 = or disjoint i32 %151, %147 - %153 = add i8 %.sroa.8.020.i, 1 - %.sroa.0.0.i = trunc i32 %152 to i16 - %154 = zext i8 %153 to i64 - %155 = icmp ugt i64 %84, %154 - br i1 %155, label %.lr.ph.i, label %.critedge.i, !llvm.loop !170 - -.critedge.i: ; preds = %.critedge2.i, %.lr.ph.i, %134 - %.sroa.037.5 = phi i64 [ %137, %134 ], [ %.sroa.037.6, %.lr.ph.i ], [ %149, %.critedge2.i ] - %.sroa.16.5 = phi i32 [ %136, %134 ], [ %.sroa.16.6, %.lr.ph.i ], [ %148, %.critedge2.i ] - %.sroa.0.0.in.lcssa.i = phi i32 [ %138, %134 ], [ %.sroa.0.0.in19.i, %.lr.ph.i ], [ %152, %.critedge2.i ] - %.sroa.8.0.lcssa.i = phi i8 [ 11, %134 ], [ %.sroa.8.020.i, %.lr.ph.i ], [ %153, %.critedge2.i ] - %.sroa.0.0.lcssa.i = phi i16 [ %.sroa.0.018.i, %134 ], [ %.sroa.0.021.i, %.lr.ph.i ], [ %.sroa.0.0.i, %.critedge2.i ] - %.lcssa17.i = phi i64 [ 11, %134 ], [ %139, %.lr.ph.i ], [ %154, %.critedge2.i ] - %156 = icmp ult i64 %84, %.lcssa17.i - br i1 %156, label %161, label %157 - -157: ; preds = %.critedge.i - %158 = getelementptr inbounds nuw i16, ptr %86, i64 %.lcssa17.i - %159 = load i16, ptr %158, align 2, !tbaa !168 - %160 = icmp ult i16 %159, %.sroa.0.0.lcssa.i - br i1 %160, label %161, label %_ZNK8rawspeed23PrefixCodeLookupDecoderINS_15BaselineCodeTagEE26finishReadingPartialSymbolINS_14BitStreamerMSBEEESt4pairINS_18AbstractPrefixCodeIS1_E10CodeSymbolEiERT_S8_.exit - -161: ; preds = %157, %.critedge.i - %162 = and i32 %.sroa.0.0.in.lcssa.i, 65535 - %163 = zext i8 %.sroa.8.0.lcssa.i to i32 - tail call void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_19RawDecoderExceptionEEEvPKcz(ptr noundef nonnull @.str.29, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK8rawspeed23PrefixCodeLookupDecoderINS_15BaselineCodeTagEE26finishReadingPartialSymbolINS_14BitStreamerMSBEEESt4pairINS_18AbstractPrefixCodeIS1_E10CodeSymbolEiERT_S8_, i32 noundef %162, i32 noundef %163) #14 + %146 = icmp ne i32 %.sroa.16.6, 0 + tail call void @llvm.assume(i1 %146) + %147 = lshr i64 %.sroa.037.6, 63 + %148 = trunc nuw nsw i64 %147 to i32 + %149 = add nsw i32 %.sroa.16.6, -1 + %150 = shl i64 %.sroa.037.6, 1 + %151 = shl nsw i32 %.sroa.0.0.in19.i, 1 + %152 = and i32 %151, 131070 + %153 = or disjoint i32 %152, %148 + %154 = add i8 %.sroa.8.020.i, 1 + %.sroa.0.0.i = trunc i32 %153 to i16 + %155 = zext i8 %154 to i64 + %156 = icmp ugt i64 %85, %155 + br i1 %156, label %.lr.ph.i, label %.critedge.i, !llvm.loop !170 + +.critedge.i: ; preds = %.critedge2.i, %.lr.ph.i, %135 + %.sroa.037.5 = phi i64 [ %138, %135 ], [ %.sroa.037.6, %.lr.ph.i ], [ %150, %.critedge2.i ] + %.sroa.16.5 = phi i32 [ %137, %135 ], [ %.sroa.16.6, %.lr.ph.i ], [ %149, %.critedge2.i ] + %.sroa.0.0.in.lcssa.i = phi i32 [ %139, %135 ], [ %.sroa.0.0.in19.i, %.lr.ph.i ], [ %153, %.critedge2.i ] + %.sroa.8.0.lcssa.i = phi i8 [ 11, %135 ], [ %.sroa.8.020.i, %.lr.ph.i ], [ %154, %.critedge2.i ] + %.sroa.0.0.lcssa.i = phi i16 [ %.sroa.0.018.i, %135 ], [ %.sroa.0.021.i, %.lr.ph.i ], [ %.sroa.0.0.i, %.critedge2.i ] + %.lcssa17.i = phi i64 [ 11, %135 ], [ %140, %.lr.ph.i ], [ %155, %.critedge2.i ] + %157 = icmp ult i64 %85, %.lcssa17.i + br i1 %157, label %162, label %158 + +158: ; preds = %.critedge.i + %159 = getelementptr inbounds nuw i16, ptr %87, i64 %.lcssa17.i + %160 = load i16, ptr %159, align 2, !tbaa !168 + %161 = icmp ult i16 %160, %.sroa.0.0.lcssa.i + br i1 %161, label %162, label %_ZNK8rawspeed23PrefixCodeLookupDecoderINS_15BaselineCodeTagEE26finishReadingPartialSymbolINS_14BitStreamerMSBEEESt4pairINS_18AbstractPrefixCodeIS1_E10CodeSymbolEiERT_S8_.exit + +162: ; preds = %158, %.critedge.i + %163 = and i32 %.sroa.0.0.in.lcssa.i, 65535 + %164 = zext i8 %.sroa.8.0.lcssa.i to i32 + tail call void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_19RawDecoderExceptionEEEvPKcz(ptr noundef nonnull @.str.29, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK8rawspeed23PrefixCodeLookupDecoderINS_15BaselineCodeTagEE26finishReadingPartialSymbolINS_14BitStreamerMSBEEESt4pairINS_18AbstractPrefixCodeIS1_E10CodeSymbolEiERT_S8_, i32 noundef %163, i32 noundef %164) #14 unreachable -_ZNK8rawspeed23PrefixCodeLookupDecoderINS_15BaselineCodeTagEE26finishReadingPartialSymbolINS_14BitStreamerMSBEEESt4pairINS_18AbstractPrefixCodeIS1_E10CodeSymbolEiERT_S8_.exit: ; preds = %157 +_ZNK8rawspeed23PrefixCodeLookupDecoderINS_15BaselineCodeTagEE26finishReadingPartialSymbolINS_14BitStreamerMSBEEESt4pairINS_18AbstractPrefixCodeIS1_E10CodeSymbolEiERT_S8_.exit: ; preds = %158 %.sroa.0.0.mask.i = and i32 %.sroa.0.0.in.lcssa.i, 65535 - %164 = getelementptr inbounds nuw i16, ptr %87, i64 %.lcssa17.i - %165 = load i16, ptr %164, align 2, !tbaa !168 - %.tr.i = zext i16 %165 to i32 + %165 = getelementptr inbounds nuw i16, ptr %88, i64 %.lcssa17.i + %166 = load i16, ptr %165, align 2, !tbaa !168 + %.tr.i = zext i16 %166 to i32 %.narrow.i = sub nsw i32 %.sroa.0.0.mask.i, %.tr.i - %166 = zext i32 %.narrow.i to i64 - %167 = getelementptr inbounds nuw i8, ptr %88, i64 %166 - %168 = load i8, ptr %167, align 1, !tbaa !131 - br label %169 - -169: ; preds = %_ZNK8rawspeed23PrefixCodeLookupDecoderINS_15BaselineCodeTagEE26finishReadingPartialSymbolINS_14BitStreamerMSBEEESt4pairINS_18AbstractPrefixCodeIS1_E10CodeSymbolEiERT_S8_.exit, %130 - %.0202 = phi i8 [ %168, %_ZNK8rawspeed23PrefixCodeLookupDecoderINS_15BaselineCodeTagEE26finishReadingPartialSymbolINS_14BitStreamerMSBEEESt4pairINS_18AbstractPrefixCodeIS1_E10CodeSymbolEiERT_S8_.exit ], [ %132, %130 ] - %.sroa.0.sroa.6.0 = phi i8 [ %.sroa.8.0.lcssa.i, %_ZNK8rawspeed23PrefixCodeLookupDecoderINS_15BaselineCodeTagEE26finishReadingPartialSymbolINS_14BitStreamerMSBEEESt4pairINS_18AbstractPrefixCodeIS1_E10CodeSymbolEiERT_S8_.exit ], [ %131, %130 ] - %.sroa.037.2 = phi i64 [ %.sroa.037.5, %_ZNK8rawspeed23PrefixCodeLookupDecoderINS_15BaselineCodeTagEE26finishReadingPartialSymbolINS_14BitStreamerMSBEEESt4pairINS_18AbstractPrefixCodeIS1_E10CodeSymbolEiERT_S8_.exit ], [ %127, %130 ] - %.sroa.16.2 = phi i32 [ %.sroa.16.5, %_ZNK8rawspeed23PrefixCodeLookupDecoderINS_15BaselineCodeTagEE26finishReadingPartialSymbolINS_14BitStreamerMSBEEESt4pairINS_18AbstractPrefixCodeIS1_E10CodeSymbolEiERT_S8_.exit ], [ %125, %130 ] - %170 = icmp ult i8 %.sroa.0.sroa.6.0, 17 - tail call void @llvm.assume(i1 %170) - %171 = icmp ult i8 %.0202, 17 + %167 = zext i32 %.narrow.i to i64 + %168 = getelementptr inbounds nuw i8, ptr %89, i64 %167 + %169 = load i8, ptr %168, align 1, !tbaa !131 + br label %170 + +170: ; preds = %_ZNK8rawspeed23PrefixCodeLookupDecoderINS_15BaselineCodeTagEE26finishReadingPartialSymbolINS_14BitStreamerMSBEEESt4pairINS_18AbstractPrefixCodeIS1_E10CodeSymbolEiERT_S8_.exit, %131 + %.0202 = phi i8 [ %169, %_ZNK8rawspeed23PrefixCodeLookupDecoderINS_15BaselineCodeTagEE26finishReadingPartialSymbolINS_14BitStreamerMSBEEESt4pairINS_18AbstractPrefixCodeIS1_E10CodeSymbolEiERT_S8_.exit ], [ %133, %131 ] + %.sroa.0.sroa.6.0 = phi i8 [ %.sroa.8.0.lcssa.i, %_ZNK8rawspeed23PrefixCodeLookupDecoderINS_15BaselineCodeTagEE26finishReadingPartialSymbolINS_14BitStreamerMSBEEESt4pairINS_18AbstractPrefixCodeIS1_E10CodeSymbolEiERT_S8_.exit ], [ %132, %131 ] + %.sroa.037.2 = phi i64 [ %.sroa.037.5, %_ZNK8rawspeed23PrefixCodeLookupDecoderINS_15BaselineCodeTagEE26finishReadingPartialSymbolINS_14BitStreamerMSBEEESt4pairINS_18AbstractPrefixCodeIS1_E10CodeSymbolEiERT_S8_.exit ], [ %128, %131 ] + %.sroa.16.2 = phi i32 [ %.sroa.16.5, %_ZNK8rawspeed23PrefixCodeLookupDecoderINS_15BaselineCodeTagEE26finishReadingPartialSymbolINS_14BitStreamerMSBEEESt4pairINS_18AbstractPrefixCodeIS1_E10CodeSymbolEiERT_S8_.exit ], [ %126, %131 ] + %171 = icmp ult i8 %.sroa.0.sroa.6.0, 17 tail call void @llvm.assume(i1 %171) - switch i8 %.0202, label %177 [ - i8 16, label %172 + %172 = icmp ult i8 %.0202, 17 + tail call void @llvm.assume(i1 %172) + switch i8 %.0202, label %178 [ + i8 16, label %173 i8 0, label %_ZNK8rawspeed20PrefixCodeLUTDecoderINS_15BaselineCodeTagENS_23PrefixCodeLookupDecoderIS1_EEE6decodeINS_14BitStreamerMSBELb1EEEiRT_.exit ] -172: ; preds = %169 - br i1 %90, label %173, label %_ZNK8rawspeed20PrefixCodeLUTDecoderINS_15BaselineCodeTagENS_23PrefixCodeLookupDecoderIS1_EEE6decodeINS_14BitStreamerMSBELb1EEEiRT_.exit +173: ; preds = %170 + br i1 %91, label %174, label %_ZNK8rawspeed20PrefixCodeLUTDecoderINS_15BaselineCodeTagENS_23PrefixCodeLookupDecoderIS1_EEE6decodeINS_14BitStreamerMSBELb1EEEiRT_.exit -173: ; preds = %172 - %174 = icmp samesign ugt i32 %.sroa.16.2, 15 - tail call void @llvm.assume(i1 %174) - %175 = add nsw i32 %.sroa.16.2, -16 - %176 = shl i64 %.sroa.037.2, 16 +174: ; preds = %173 + %175 = icmp samesign ugt i32 %.sroa.16.2, 15 + tail call void @llvm.assume(i1 %175) + %176 = add nsw i32 %.sroa.16.2, -16 + %177 = shl i64 %.sroa.037.2, 16 br label %_ZNK8rawspeed20PrefixCodeLUTDecoderINS_15BaselineCodeTagENS_23PrefixCodeLookupDecoderIS1_EEE6decodeINS_14BitStreamerMSBELb1EEEiRT_.exit -177: ; preds = %169 - %178 = zext nneg i8 %.0202 to i32 - %179 = icmp samesign uge i32 %.sroa.16.2, %178 - tail call void @llvm.assume(i1 %179) - %180 = sub nuw nsw i32 64, %178 - %181 = zext nneg i32 %180 to i64 - %182 = lshr i64 %.sroa.037.2, %181 - %183 = trunc i64 %182 to i32 - %184 = sub nsw i32 %.sroa.16.2, %178 - %185 = zext nneg i8 %.0202 to i64 - %186 = shl i64 %.sroa.037.2, %185 - %187 = icmp sgt i64 %.sroa.037.2, -1 - %notmask.i.i = shl nsw i32 -1, %178 +178: ; preds = %170 + %179 = zext nneg i8 %.0202 to i32 + %180 = icmp samesign uge i32 %.sroa.16.2, %179 + tail call void @llvm.assume(i1 %180) + %181 = sub nuw nsw i32 64, %179 + %182 = zext nneg i32 %181 to i64 + %183 = lshr i64 %.sroa.037.2, %182 + %184 = trunc i64 %183 to i32 + %185 = sub nsw i32 %.sroa.16.2, %179 + %186 = zext nneg i8 %.0202 to i64 + %187 = shl i64 %.sroa.037.2, %186 + %188 = icmp sgt i64 %.sroa.037.2, -1 + %notmask.i.i = shl nsw i32 -1, %179 %.neg.i.i = add nuw nsw i32 %notmask.i.i, 1 - %188 = select i1 %187, i32 %.neg.i.i, i32 0 - %.0.i.i = add nsw i32 %188, %183 + %189 = select i1 %188, i32 %.neg.i.i, i32 0 + %.0.i.i = add nsw i32 %189, %184 br label %_ZNK8rawspeed20PrefixCodeLUTDecoderINS_15BaselineCodeTagENS_23PrefixCodeLookupDecoderIS1_EEE6decodeINS_14BitStreamerMSBELb1EEEiRT_.exit -_ZNK8rawspeed20PrefixCodeLUTDecoderINS_15BaselineCodeTagENS_23PrefixCodeLookupDecoderIS1_EEE6decodeINS_14BitStreamerMSBELb1EEEiRT_.exit: ; preds = %177, %173, %172, %169, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit - %.sroa.037.3 = phi i64 [ %127, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit ], [ %186, %177 ], [ %.sroa.037.2, %169 ], [ %176, %173 ], [ %.sroa.037.2, %172 ] - %.sroa.16.3 = phi i32 [ %125, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit ], [ %184, %177 ], [ %.sroa.16.2, %169 ], [ %175, %173 ], [ %.sroa.16.2, %172 ] - %.0.i = phi i32 [ %122, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit ], [ %.0.i.i, %177 ], [ 0, %169 ], [ -32768, %173 ], [ -32768, %172 ] - %189 = and i64 %indvars.iv, 1 - %190 = getelementptr inbounds nuw [2 x i32], ptr %3, i64 0, i64 %189 - %191 = load i32, ptr %190, align 4, !tbaa !132 - %192 = add nsw i32 %191, %.0.i - store i32 %192, ptr %190, align 4, !tbaa !132 - %193 = icmp ult i32 %192, 65536 - br i1 %193, label %197, label %194 - -194: ; preds = %_ZNK8rawspeed20PrefixCodeLUTDecoderINS_15BaselineCodeTagENS_23PrefixCodeLookupDecoderIS1_EEE6decodeINS_14BitStreamerMSBELb1EEEiRT_.exit - %195 = trunc nuw nsw i64 %indvars.iv to i32 - %196 = trunc nuw nsw i64 %indvars.iv238 to i32 - tail call void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_19RawDecoderExceptionEEEvPKcz(ptr noundef nonnull @.str.4, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK8rawspeed18PentaxDecompressor10decompressENS_10ByteStreamE, i32 noundef %195, i32 noundef %196) #14 +_ZNK8rawspeed20PrefixCodeLUTDecoderINS_15BaselineCodeTagENS_23PrefixCodeLookupDecoderIS1_EEE6decodeINS_14BitStreamerMSBELb1EEEiRT_.exit: ; preds = %178, %174, %173, %170, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit + %.sroa.037.3 = phi i64 [ %128, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit ], [ %187, %178 ], [ %.sroa.037.2, %170 ], [ %177, %174 ], [ %.sroa.037.2, %173 ] + %.sroa.16.3 = phi i32 [ %126, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit ], [ %185, %178 ], [ %.sroa.16.2, %170 ], [ %176, %174 ], [ %.sroa.16.2, %173 ] + %.0.i = phi i32 [ %123, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit ], [ %.0.i.i, %178 ], [ 0, %170 ], [ -32768, %174 ], [ -32768, %173 ] + %190 = and i64 %indvars.iv, 1 + %191 = getelementptr inbounds nuw [2 x i32], ptr %3, i64 0, i64 %190 + %192 = load i32, ptr %191, align 4, !tbaa !132 + %193 = add nsw i32 %192, %.0.i + store i32 %193, ptr %191, align 4, !tbaa !132 + %194 = icmp ult i32 %193, 65536 + br i1 %194, label %198, label %195 + +195: ; preds = %_ZNK8rawspeed20PrefixCodeLUTDecoderINS_15BaselineCodeTagENS_23PrefixCodeLookupDecoderIS1_EEE6decodeINS_14BitStreamerMSBELb1EEEiRT_.exit + %196 = trunc nuw nsw i64 %indvars.iv to i32 + %197 = trunc nuw nsw i64 %indvars.iv238 to i32 + tail call void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_19RawDecoderExceptionEEEvPKcz(ptr noundef nonnull @.str.4, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK8rawspeed18PentaxDecompressor10decompressENS_10ByteStreamE, i32 noundef %196, i32 noundef %197) #14 unreachable -197: ; preds = %_ZNK8rawspeed20PrefixCodeLUTDecoderINS_15BaselineCodeTagENS_23PrefixCodeLookupDecoderIS1_EEE6decodeINS_14BitStreamerMSBELb1EEEiRT_.exit - %198 = trunc nuw i32 %192 to i16 - tail call void @llvm.assume(i1 %93) - %199 = getelementptr inbounds nuw i16, ptr %94, i64 %indvars.iv - store i16 %198, ptr %199, align 2, !tbaa !168 +198: ; preds = %_ZNK8rawspeed20PrefixCodeLUTDecoderINS_15BaselineCodeTagENS_23PrefixCodeLookupDecoderIS1_EEE6decodeINS_14BitStreamerMSBELb1EEEiRT_.exit + %199 = trunc nuw i32 %193 to i16 + tail call void @llvm.assume(i1 %94) + %200 = getelementptr inbounds nuw i16, ptr %95, i64 %indvars.iv + store i16 %199, ptr %200, align 2, !tbaa !168 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %56 - br i1 %exitcond.not, label %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit, label %95, !llvm.loop !171 + br i1 %exitcond.not, label %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit, label %96, !llvm.loop !171 } ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write) diff --git a/bench/darktable/optimized/RafDecoder.ll b/bench/darktable/optimized/RafDecoder.ll index cb82c5f6599..d36ac3a1be6 100644 --- a/bench/darktable/optimized/RafDecoder.ll +++ b/bench/darktable/optimized/RafDecoder.ll @@ -2516,7 +2516,7 @@ _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.thread.i.i.i.i.i.i.i93: ; preds = %_Z _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit104.thread: ; preds = %_ZNKSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_S5_ESt10_Select1stIS8_ESt4lessIvESaIS8_EE14_M_lower_boundEPKSt13_Rb_tree_nodeIS8_EPKSt18_Rb_tree_node_baseRS7_.exit.i.i.i85, %._crit_edge.i.i63 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #27 - br label %350 + br label %352 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit104: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i.i.i87, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.thread.i.i.i.i.i.i.i93 %.0.i.i.i.i.i.i.i90 = phi i32 [ %91, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i.i.i87 ], [ %.0.i6.i.i.i.i.i.i.i96, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.thread.i.i.i.i.i.i.i93 ] @@ -2528,13 +2528,13 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit104: ; preds = %_Z call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #27 %96 = trunc nuw i8 %.pre to i1 %97 = select i1 %95, i1 %96, i1 false - br i1 %97, label %98, label %350 + br i1 %97, label %98, label %352 98: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit104 %99 = getelementptr inbounds nuw i8, ptr %0, i64 28 %100 = load i8, ptr %99, align 4, !tbaa !153, !range !80, !noundef !81 %101 = trunc nuw i8 %100 to i1 - br i1 %101, label %350, label %102 + br i1 %101, label %352, label %102 102: ; preds = %98 %103 = getelementptr inbounds nuw i8, ptr %0, i64 104 @@ -2573,8 +2573,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit104: ; preds = %_Z invoke void @_ZN8rawspeed15RawImageDataU16C1ERKNS_8iPoint2DEj(ptr noundef nonnull align 8 dereferenceable(616) %118, ptr noundef nonnull align 4 dereferenceable(8) %4, i32 noundef 1) to label %_ZN8rawspeed8RawImage6createERKNS_8iPoint2DENS_12RawImageTypeEj.exit unwind label %_ZNSt15__allocated_ptrISaISt23_Sp_counted_ptr_inplaceIN8rawspeed15RawImageDataU16ESaIvELN9__gnu_cxx12_Lock_policyE2EEEED2Ev.exit9.i.i.i.i.i, !noalias !164 -common.resume: ; preds = %349, %_ZNSt15__allocated_ptrISaISt23_Sp_counted_ptr_inplaceIN8rawspeed15RawImageDataU16ESaIvELN9__gnu_cxx12_Lock_policyE2EEEED2Ev.exit9.i.i.i.i.i - %common.resume.op = phi { ptr, i32 } [ %119, %_ZNSt15__allocated_ptrISaISt23_Sp_counted_ptr_inplaceIN8rawspeed15RawImageDataU16ESaIvELN9__gnu_cxx12_Lock_policyE2EEEED2Ev.exit9.i.i.i.i.i ], [ %.pn50, %349 ] +common.resume: ; preds = %351, %_ZNSt15__allocated_ptrISaISt23_Sp_counted_ptr_inplaceIN8rawspeed15RawImageDataU16ESaIvELN9__gnu_cxx12_Lock_policyE2EEEED2Ev.exit9.i.i.i.i.i + %common.resume.op = phi { ptr, i32 } [ %119, %_ZNSt15__allocated_ptrISaISt23_Sp_counted_ptr_inplaceIN8rawspeed15RawImageDataU16ESaIvELN9__gnu_cxx12_Lock_policyE2EEEED2Ev.exit9.i.i.i.i.i ], [ %.pn50, %351 ] resume { ptr, i32 } %common.resume.op _ZNSt15__allocated_ptrISaISt23_Sp_counted_ptr_inplaceIN8rawspeed15RawImageDataU16ESaIvELN9__gnu_cxx12_Lock_policyE2EEEED2Ev.exit9.i.i.i.i.i: ; preds = %112 @@ -2590,7 +2590,7 @@ _ZN8rawspeed8RawImage6createERKNS_8iPoint2DENS_12RawImageTypeEj.exit: ; preds = %121 = getelementptr inbounds nuw i8, ptr %115, i64 56 %122 = load i64, ptr %121, align 4 invoke void @_ZN8rawspeed12RawImageData9clearAreaENS_12iRectangle2DE(ptr noundef nonnull align 8 dereferenceable(616) %118, i64 0, i64 %122) - to label %123 unwind label %342 + to label %123 unwind label %344 123: ; preds = %_ZN8rawspeed8RawImage6createERKNS_8iPoint2DENS_12RawImageTypeEj.exit %124 = load ptr, ptr %6, align 8, !tbaa !64 @@ -2600,7 +2600,7 @@ _ZN8rawspeed8RawImage6createERKNS_8iPoint2DENS_12RawImageTypeEj.exit: ; preds = %127 = getelementptr inbounds nuw i8, ptr %115, i64 288 %128 = getelementptr inbounds nuw i8, ptr %124, i64 272 %129 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN8rawspeed12NotARationalIiEESaIS2_EEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(24) %127, ptr noundef nonnull align 8 dereferenceable(24) %128) - to label %.noexc108 unwind label %344 + to label %.noexc108 unwind label %346 .noexc108: ; preds = %123 %130 = getelementptr inbounds nuw i8, ptr %115, i64 312 @@ -2609,43 +2609,43 @@ _ZN8rawspeed8RawImage6createERKNS_8iPoint2DENS_12RawImageTypeEj.exit: ; preds = %132 = getelementptr inbounds nuw i8, ptr %115, i64 328 %133 = getelementptr inbounds nuw i8, ptr %124, i64 312 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_assignERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %132, ptr noundef nonnull align 8 dereferenceable(32) %133) - to label %.noexc109 unwind label %344 + to label %.noexc109 unwind label %346 .noexc109: ; preds = %.noexc108 %134 = getelementptr inbounds nuw i8, ptr %115, i64 360 %135 = getelementptr inbounds nuw i8, ptr %124, i64 344 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_assignERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %134, ptr noundef nonnull align 8 dereferenceable(32) %135) - to label %.noexc110 unwind label %344 + to label %.noexc110 unwind label %346 .noexc110: ; preds = %.noexc109 %136 = getelementptr inbounds nuw i8, ptr %115, i64 392 %137 = getelementptr inbounds nuw i8, ptr %124, i64 376 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_assignERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %136, ptr noundef nonnull align 8 dereferenceable(32) %137) - to label %.noexc111 unwind label %344 + to label %.noexc111 unwind label %346 .noexc111: ; preds = %.noexc110 %138 = getelementptr inbounds nuw i8, ptr %115, i64 424 %139 = getelementptr inbounds nuw i8, ptr %124, i64 408 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_assignERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %138, ptr noundef nonnull align 8 dereferenceable(32) %139) - to label %.noexc112 unwind label %344 + to label %.noexc112 unwind label %346 .noexc112: ; preds = %.noexc111 %140 = getelementptr inbounds nuw i8, ptr %115, i64 456 %141 = getelementptr inbounds nuw i8, ptr %124, i64 440 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_assignERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %140, ptr noundef nonnull align 8 dereferenceable(32) %141) - to label %.noexc113 unwind label %344 + to label %.noexc113 unwind label %346 .noexc113: ; preds = %.noexc112 %142 = getelementptr inbounds nuw i8, ptr %115, i64 488 %143 = getelementptr inbounds nuw i8, ptr %124, i64 472 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_assignERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %142, ptr noundef nonnull align 8 dereferenceable(32) %143) - to label %.noexc114 unwind label %344 + to label %.noexc114 unwind label %346 .noexc114: ; preds = %.noexc113 %144 = getelementptr inbounds nuw i8, ptr %115, i64 520 %145 = getelementptr inbounds nuw i8, ptr %124, i64 504 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_assignERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %144, ptr noundef nonnull align 8 dereferenceable(32) %145) - to label %146 unwind label %344 + to label %146 unwind label %346 146: ; preds = %.noexc114 %147 = getelementptr inbounds nuw i8, ptr %124, i64 536 @@ -2731,320 +2731,322 @@ _ZN8rawspeed8RawImage6createERKNS_8iPoint2DENS_12RawImageTypeEj.exit: ; preds = %203 = zext i32 %.sroa.0165.0 to i64 %204 = zext nneg i32 %157 to i64 %205 = sext i32 %.sroa.8.0 to i64 - %206 = zext nneg i32 %162 to i64 + %206 = zext nneg i32 %159 to i64 + %207 = zext nneg i32 %162 to i64 + %208 = zext nneg i32 %157 to i64 + %209 = zext nneg i32 %163 to i64 %wide.trip.count217 = zext nneg i32 %.sroa.12.0 to i64 %wide.trip.count = zext nneg i32 %.sroa.0169.0 to i64 br label %.preheader.us .preheader.us.us.preheader: ; preds = %.preheader.lr.ph.split.us - %207 = zext i32 %.sroa.0165.0 to i64 - %208 = zext nneg i32 %157 to i64 - %209 = sext i32 %.sroa.8.0 to i64 - %210 = zext nneg i32 %162 to i64 + %210 = zext i32 %.sroa.0165.0 to i64 + %211 = zext nneg i32 %157 to i64 + %212 = sext i32 %.sroa.8.0 to i64 + %213 = zext nneg i32 %159 to i64 + %214 = zext nneg i32 %162 to i64 + %215 = zext nneg i32 %157 to i64 + %216 = zext nneg i32 %163 to i64 %wide.trip.count227 = zext nneg i32 %.sroa.12.0 to i64 %wide.trip.count222 = zext nneg i32 %.sroa.0169.0 to i64 br label %.preheader.us.us .preheader.us.us: ; preds = %.preheader.us.us.preheader, %._crit_edge.split.us.us.us %indvars.iv224 = phi i64 [ 0, %.preheader.us.us.preheader ], [ %indvars.iv.next225, %._crit_edge.split.us.us.us ] - %211 = trunc nuw nsw i64 %indvars.iv224 to i32 - %.neg200.reass.reass.us.us = add i32 %invariant.op206, %211 - %212 = add nuw nsw i64 %indvars.iv224, %209 - %213 = icmp sgt i64 %212, -1 - %214 = trunc nsw i64 %212 to i32 - %215 = icmp samesign ugt i32 %159, %214 - %216 = mul nuw nsw i64 %212, %210 - %217 = trunc i64 %216 to i32 - %218 = add i32 %157, %217 - %219 = icmp samesign ule i32 %218, %163 - %220 = getelementptr inbounds nuw i16, ptr %152, i64 %216 - br label %221 - -221: ; preds = %232, %.preheader.us.us - %indvars.iv219 = phi i64 [ %indvars.iv.next220, %232 ], [ 0, %.preheader.us.us ] - %222 = trunc nuw nsw i64 %indvars.iv219 to i32 - %223 = lshr i32 %222, 1 - %224 = sub i32 %.neg200.reass.reass.us.us, %223 + %217 = trunc nuw nsw i64 %indvars.iv224 to i32 + %.neg200.reass.reass.us.us = add i32 %invariant.op206, %217 + %218 = add nuw nsw i64 %indvars.iv224, %212 + %219 = icmp sgt i64 %218, -1 + %220 = icmp samesign ult i64 %218, %213 + %221 = mul nuw nsw i64 %218, %214 + %222 = add nuw nsw i64 %221, %215 + %223 = icmp samesign ule i64 %222, %216 + %224 = getelementptr inbounds nuw i16, ptr %152, i64 %221 + br label %225 + +225: ; preds = %236, %.preheader.us.us + %indvars.iv219 = phi i64 [ %indvars.iv.next220, %236 ], [ 0, %.preheader.us.us ] + %226 = trunc nuw nsw i64 %indvars.iv219 to i32 + %227 = lshr i32 %226, 1 + %228 = sub i32 %.neg200.reass.reass.us.us, %227 %indvars.iv.next220 = add nuw nsw i64 %indvars.iv219, 1 - %225 = trunc nuw nsw i64 %indvars.iv.next220 to i32 - %226 = lshr i32 %225, 1 - %227 = add nuw nsw i32 %226, %211 - %228 = icmp slt i32 %224, %200 - br i1 %228, label %229, label %.split.us - -229: ; preds = %221 - %230 = load i32, ptr %196, align 8, !tbaa !111 - %231 = icmp slt i32 %227, %230 - br i1 %231, label %232, label %.split.us - -232: ; preds = %229 - %233 = add nuw nsw i64 %indvars.iv219, %207 - %234 = and i64 %233, 2147483648 - %235 = icmp eq i64 %234, 0 - call void @llvm.assume(i1 %235) - %236 = icmp samesign ult i64 %233, %208 - call void @llvm.assume(i1 %236) - call void @llvm.assume(i1 %213) - call void @llvm.assume(i1 %215) - call void @llvm.assume(i1 %219) - %237 = getelementptr inbounds nuw i16, ptr %220, i64 %233 - %238 = load i16, ptr %237, align 2, !tbaa !178 - %239 = icmp samesign ult i32 %227, %178 + %229 = trunc nuw nsw i64 %indvars.iv.next220 to i32 + %230 = lshr i32 %229, 1 + %231 = add nuw nsw i32 %230, %217 + %232 = icmp slt i32 %228, %200 + br i1 %232, label %233, label %.split.us + +233: ; preds = %225 + %234 = load i32, ptr %196, align 8, !tbaa !111 + %235 = icmp slt i32 %231, %234 + br i1 %235, label %236, label %.split.us + +236: ; preds = %233 + %237 = add nuw nsw i64 %indvars.iv219, %210 + %238 = and i64 %237, 2147483648 + %239 = icmp eq i64 %238, 0 call void @llvm.assume(i1 %239) - %240 = icmp sgt i32 %224, -1 + %240 = icmp samesign ult i64 %237, %211 call void @llvm.assume(i1 %240) - %241 = icmp samesign ult i32 %224, %180 - call void @llvm.assume(i1 %241) - %242 = mul nuw nsw i32 %224, %183 - %243 = add nuw nsw i32 %242, %178 - %244 = icmp samesign ule i32 %243, %184 + call void @llvm.assume(i1 %219) + call void @llvm.assume(i1 %220) + call void @llvm.assume(i1 %223) + %241 = getelementptr inbounds nuw i16, ptr %224, i64 %237 + %242 = load i16, ptr %241, align 2, !tbaa !178 + %243 = icmp samesign ult i32 %231, %178 + call void @llvm.assume(i1 %243) + %244 = icmp sgt i32 %228, -1 call void @llvm.assume(i1 %244) - %245 = zext nneg i32 %242 to i64 - %246 = getelementptr inbounds nuw i16, ptr %173, i64 %245 - %247 = zext nneg i32 %227 to i64 - %248 = getelementptr inbounds nuw i16, ptr %246, i64 %247 - store i16 %238, ptr %248, align 2, !tbaa !178 + %245 = icmp samesign ult i32 %228, %180 + call void @llvm.assume(i1 %245) + %246 = mul nuw nsw i32 %228, %183 + %247 = add nuw nsw i32 %246, %178 + %248 = icmp samesign ule i32 %247, %184 + call void @llvm.assume(i1 %248) + %249 = zext nneg i32 %246 to i64 + %250 = getelementptr inbounds nuw i16, ptr %173, i64 %249 + %251 = zext nneg i32 %231 to i64 + %252 = getelementptr inbounds nuw i16, ptr %250, i64 %251 + store i16 %242, ptr %252, align 2, !tbaa !178 %exitcond223.not = icmp eq i64 %indvars.iv.next220, %wide.trip.count222 - br i1 %exitcond223.not, label %._crit_edge.split.us.us.us, label %221, !llvm.loop !180 + br i1 %exitcond223.not, label %._crit_edge.split.us.us.us, label %225, !llvm.loop !180 -._crit_edge.split.us.us.us: ; preds = %232 +._crit_edge.split.us.us.us: ; preds = %236 %indvars.iv.next225 = add nuw nsw i64 %indvars.iv224, 1 %exitcond228.not = icmp eq i64 %indvars.iv.next225, %wide.trip.count227 br i1 %exitcond228.not, label %._crit_edge205, label %.preheader.us.us, !llvm.loop !181 .preheader.us: ; preds = %.preheader.us.preheader, %._crit_edge.split.us208 %indvars.iv214 = phi i64 [ 0, %.preheader.us.preheader ], [ %indvars.iv.next215, %._crit_edge.split.us208 ] - %249 = trunc nuw nsw i64 %indvars.iv214 to i32 - %250 = lshr i32 %249, 1 - %251 = add i32 %201, %250 - %252 = add nuw i32 %250, %.sroa.0169.0 + %253 = trunc nuw nsw i64 %indvars.iv214 to i32 + %254 = lshr i32 %253, 1 + %255 = add i32 %201, %254 + %256 = add nuw i32 %254, %.sroa.0169.0 %indvars.iv.next215 = add nuw nsw i64 %indvars.iv214, 1 - %253 = lshr i64 %indvars.iv.next215, 1 - %254 = add nuw nsw i64 %indvars.iv214, %205 - %255 = icmp sgt i64 %254, -1 - %256 = trunc nsw i64 %254 to i32 - %257 = icmp samesign ugt i32 %159, %256 - %258 = mul nuw nsw i64 %254, %206 - %259 = trunc i64 %258 to i32 - %260 = add i32 %157, %259 - %261 = icmp samesign ule i32 %260, %163 - %262 = getelementptr inbounds nuw i16, ptr %152, i64 %258 - %263 = and i64 %253, 2147483647 - %264 = icmp slt i32 %251, %200 - br label %265 - -265: ; preds = %.preheader.us, %274 - %indvars.iv = phi i64 [ 0, %.preheader.us ], [ %indvars.iv.next, %274 ] - %266 = trunc nuw nsw i64 %indvars.iv to i32 - %267 = xor i32 %266, -1 - %268 = add i32 %252, %267 - %269 = add nuw nsw i64 %indvars.iv, %263 - br i1 %264, label %270, label %.split.us - -270: ; preds = %265 - %271 = load i32, ptr %196, align 8, !tbaa !111 - %272 = trunc nuw i64 %269 to i32 - %273 = icmp sgt i32 %271, %272 - br i1 %273, label %274, label %.split.us - -274: ; preds = %270 - %275 = add nuw nsw i64 %indvars.iv, %203 - %276 = and i64 %275, 2147483648 - %277 = icmp eq i64 %276, 0 - call void @llvm.assume(i1 %277) - %278 = icmp samesign ult i64 %275, %204 - call void @llvm.assume(i1 %278) - call void @llvm.assume(i1 %255) - call void @llvm.assume(i1 %257) - call void @llvm.assume(i1 %261) - %279 = getelementptr inbounds nuw i16, ptr %262, i64 %275 - %280 = load i16, ptr %279, align 2, !tbaa !178 - %281 = icmp samesign ult i64 %269, %202 - call void @llvm.assume(i1 %281) - %282 = icmp sgt i32 %268, -1 - call void @llvm.assume(i1 %282) - %283 = icmp samesign ult i32 %268, %180 + %257 = lshr i64 %indvars.iv.next215, 1 + %258 = add nuw nsw i64 %indvars.iv214, %205 + %259 = icmp sgt i64 %258, -1 + %260 = icmp samesign ult i64 %258, %206 + %261 = mul nuw nsw i64 %258, %207 + %262 = add nuw nsw i64 %261, %208 + %263 = icmp samesign ule i64 %262, %209 + %264 = getelementptr inbounds nuw i16, ptr %152, i64 %261 + %265 = and i64 %257, 2147483647 + %266 = icmp slt i32 %255, %200 + br label %267 + +267: ; preds = %.preheader.us, %276 + %indvars.iv = phi i64 [ 0, %.preheader.us ], [ %indvars.iv.next, %276 ] + %268 = trunc nuw nsw i64 %indvars.iv to i32 + %269 = xor i32 %268, -1 + %270 = add i32 %256, %269 + %271 = add nuw nsw i64 %indvars.iv, %265 + br i1 %266, label %272, label %.split.us + +272: ; preds = %267 + %273 = load i32, ptr %196, align 8, !tbaa !111 + %274 = trunc nuw i64 %271 to i32 + %275 = icmp sgt i32 %273, %274 + br i1 %275, label %276, label %.split.us + +276: ; preds = %272 + %277 = add nuw nsw i64 %indvars.iv, %203 + %278 = and i64 %277, 2147483648 + %279 = icmp eq i64 %278, 0 + call void @llvm.assume(i1 %279) + %280 = icmp samesign ult i64 %277, %204 + call void @llvm.assume(i1 %280) + call void @llvm.assume(i1 %259) + call void @llvm.assume(i1 %260) + call void @llvm.assume(i1 %263) + %281 = getelementptr inbounds nuw i16, ptr %264, i64 %277 + %282 = load i16, ptr %281, align 2, !tbaa !178 + %283 = icmp samesign ult i64 %271, %202 call void @llvm.assume(i1 %283) - %284 = mul nuw nsw i32 %268, %183 - %285 = add nuw nsw i32 %284, %178 - %286 = icmp samesign ule i32 %285, %184 - call void @llvm.assume(i1 %286) - %287 = zext nneg i32 %284 to i64 - %288 = getelementptr inbounds nuw i16, ptr %173, i64 %287 - %289 = getelementptr inbounds nuw i16, ptr %288, i64 %269 - store i16 %280, ptr %289, align 2, !tbaa !178 + %284 = icmp sgt i32 %270, -1 + call void @llvm.assume(i1 %284) + %285 = icmp samesign ult i32 %270, %180 + call void @llvm.assume(i1 %285) + %286 = mul nuw nsw i32 %270, %183 + %287 = add nuw nsw i32 %286, %178 + %288 = icmp samesign ule i32 %287, %184 + call void @llvm.assume(i1 %288) + %289 = zext nneg i32 %286 to i64 + %290 = getelementptr inbounds nuw i16, ptr %173, i64 %289 + %291 = getelementptr inbounds nuw i16, ptr %290, i64 %271 + store i16 %282, ptr %291, align 2, !tbaa !178 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond.not, label %._crit_edge.split.us208, label %265, !llvm.loop !180 + br i1 %exitcond.not, label %._crit_edge.split.us208, label %267, !llvm.loop !180 -._crit_edge.split.us208: ; preds = %274 +._crit_edge.split.us208: ; preds = %276 %exitcond218.not = icmp eq i64 %indvars.iv.next215, %wide.trip.count217 br i1 %exitcond218.not, label %._crit_edge205, label %.preheader.us, !llvm.loop !181 ._crit_edge205: ; preds = %._crit_edge.split.us208, %._crit_edge.split.us.us.us, %.preheader.lr.ph, %146 store ptr %118, ptr %6, align 8, !tbaa !64 - %290 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %291 = load ptr, ptr %290, align 8, !tbaa !65 - %.not.i.i.i.i117 = icmp eq ptr %115, %291 - br i1 %.not.i.i.i.i117, label %_ZN8rawspeed8RawImageaSERKS0_.exit.thread, label %292 - -292: ; preds = %._crit_edge205 - %293 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !15 - %.not.i.i.i.i.i = icmp eq i8 %293, 0 - br i1 %.not.i.i.i.i.i, label %297, label %294 - -294: ; preds = %292 - %295 = load i32, ptr %116, align 4, !tbaa !66 - %296 = add nsw i32 %295, 1 - store i32 %296, ptr %116, align 4, !tbaa !66 + %292 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %293 = load ptr, ptr %292, align 8, !tbaa !65 + %.not.i.i.i.i117 = icmp eq ptr %115, %293 + br i1 %.not.i.i.i.i117, label %_ZN8rawspeed8RawImageaSERKS0_.exit.thread, label %294 + +294: ; preds = %._crit_edge205 + %295 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !15 + %.not.i.i.i.i.i = icmp eq i8 %295, 0 + br i1 %.not.i.i.i.i.i, label %299, label %296 + +296: ; preds = %294 + %297 = load i32, ptr %116, align 4, !tbaa !66 + %298 = add nsw i32 %297, 1 + store i32 %298, ptr %116, align 4, !tbaa !66 br label %_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE15_M_add_ref_copyEv.exit.i.i.i.i -297: ; preds = %292 - %298 = atomicrmw volatile add ptr %116, i32 1 acq_rel, align 4 - %.pr.pre.i.i.i.i = load ptr, ptr %290, align 8, !tbaa !65 +299: ; preds = %294 + %300 = atomicrmw volatile add ptr %116, i32 1 acq_rel, align 4 + %.pr.pre.i.i.i.i = load ptr, ptr %292, align 8, !tbaa !65 br label %_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE15_M_add_ref_copyEv.exit.i.i.i.i -_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE15_M_add_ref_copyEv.exit.i.i.i.i: ; preds = %297, %294 - %299 = phi ptr [ %291, %294 ], [ %.pr.pre.i.i.i.i, %297 ] - %.not8.i.i.i.i = icmp eq ptr %299, null - br i1 %.not8.i.i.i.i, label %_ZN8rawspeed8RawImageaSERKS0_.exit, label %300 - -300: ; preds = %_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE15_M_add_ref_copyEv.exit.i.i.i.i - %301 = getelementptr inbounds nuw i8, ptr %299, i64 8 - %302 = load atomic i64, ptr %301 acquire, align 8 - %303 = icmp eq i64 %302, 4294967297 - %304 = trunc i64 %302 to i32 - br i1 %303, label %305, label %313 - -305: ; preds = %300 - store i32 0, ptr %301, align 8, !tbaa !67 - %306 = getelementptr inbounds nuw i8, ptr %299, i64 12 - store i32 0, ptr %306, align 4, !tbaa !69 - %307 = load ptr, ptr %299, align 8, !tbaa !70 - %308 = getelementptr inbounds nuw i8, ptr %307, i64 16 - %309 = load ptr, ptr %308, align 8 - call void %309(ptr noundef nonnull align 8 dereferenceable(16) %299) #27 - %310 = load ptr, ptr %299, align 8, !tbaa !70 - %311 = getelementptr inbounds nuw i8, ptr %310, i64 24 - %312 = load ptr, ptr %311, align 8 - call void %312(ptr noundef nonnull align 8 dereferenceable(16) %299) #27 +_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE15_M_add_ref_copyEv.exit.i.i.i.i: ; preds = %299, %296 + %301 = phi ptr [ %293, %296 ], [ %.pr.pre.i.i.i.i, %299 ] + %.not8.i.i.i.i = icmp eq ptr %301, null + br i1 %.not8.i.i.i.i, label %_ZN8rawspeed8RawImageaSERKS0_.exit, label %302 + +302: ; preds = %_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE15_M_add_ref_copyEv.exit.i.i.i.i + %303 = getelementptr inbounds nuw i8, ptr %301, i64 8 + %304 = load atomic i64, ptr %303 acquire, align 8 + %305 = icmp eq i64 %304, 4294967297 + %306 = trunc i64 %304 to i32 + br i1 %305, label %307, label %315 + +307: ; preds = %302 + store i32 0, ptr %303, align 8, !tbaa !67 + %308 = getelementptr inbounds nuw i8, ptr %301, i64 12 + store i32 0, ptr %308, align 4, !tbaa !69 + %309 = load ptr, ptr %301, align 8, !tbaa !70 + %310 = getelementptr inbounds nuw i8, ptr %309, i64 16 + %311 = load ptr, ptr %310, align 8 + call void %311(ptr noundef nonnull align 8 dereferenceable(16) %301) #27 + %312 = load ptr, ptr %301, align 8, !tbaa !70 + %313 = getelementptr inbounds nuw i8, ptr %312, i64 24 + %314 = load ptr, ptr %313, align 8 + call void %314(ptr noundef nonnull align 8 dereferenceable(16) %301) #27 br label %_ZN8rawspeed8RawImageaSERKS0_.exit -313: ; preds = %300 - %314 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !15 - %.not.i9.i.i.i.i = icmp eq i8 %314, 0 - br i1 %.not.i9.i.i.i.i, label %317, label %315 +315: ; preds = %302 + %316 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !15 + %.not.i9.i.i.i.i = icmp eq i8 %316, 0 + br i1 %.not.i9.i.i.i.i, label %319, label %317 -315: ; preds = %313 - %316 = add nsw i32 %304, -1 - store i32 %316, ptr %301, align 4, !tbaa !66 +317: ; preds = %315 + %318 = add nsw i32 %306, -1 + store i32 %318, ptr %303, align 4, !tbaa !66 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i -317: ; preds = %313 - %318 = atomicrmw volatile add ptr %301, i32 -1 acq_rel, align 4 +319: ; preds = %315 + %320 = atomicrmw volatile add ptr %303, i32 -1 acq_rel, align 4 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i -_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i: ; preds = %317, %315 - %.0.i.i.i.i.i.i = phi i32 [ %304, %315 ], [ %318, %317 ] - %319 = icmp eq i32 %.0.i.i.i.i.i.i, 1 - br i1 %319, label %320, label %_ZN8rawspeed8RawImageaSERKS0_.exit, !prof !72 +_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i: ; preds = %319, %317 + %.0.i.i.i.i.i.i = phi i32 [ %306, %317 ], [ %320, %319 ] + %321 = icmp eq i32 %.0.i.i.i.i.i.i, 1 + br i1 %321, label %322, label %_ZN8rawspeed8RawImageaSERKS0_.exit, !prof !72 -320: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i - call void @_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv(ptr noundef nonnull align 8 dereferenceable(16) %299) #27 +322: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i + call void @_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv(ptr noundef nonnull align 8 dereferenceable(16) %301) #27 br label %_ZN8rawspeed8RawImageaSERKS0_.exit -_ZN8rawspeed8RawImageaSERKS0_.exit: ; preds = %_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE15_M_add_ref_copyEv.exit.i.i.i.i, %305, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i, %320 - store ptr %115, ptr %290, align 8, !tbaa !65 +_ZN8rawspeed8RawImageaSERKS0_.exit: ; preds = %_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE15_M_add_ref_copyEv.exit.i.i.i.i, %307, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i, %322 + store ptr %115, ptr %292, align 8, !tbaa !65 %.pr = load ptr, ptr %120, align 8, !tbaa !65 %.not.i.i.i = icmp eq ptr %.pr, null br i1 %.not.i.i.i, label %_ZN8rawspeed8RawImageD2Ev.exit, label %_ZN8rawspeed8RawImageaSERKS0_.exit.thread _ZN8rawspeed8RawImageaSERKS0_.exit.thread: ; preds = %._crit_edge205, %_ZN8rawspeed8RawImageaSERKS0_.exit - %321 = phi ptr [ %.pr, %_ZN8rawspeed8RawImageaSERKS0_.exit ], [ %115, %._crit_edge205 ] - %322 = getelementptr inbounds nuw i8, ptr %321, i64 8 - %323 = load atomic i64, ptr %322 acquire, align 8 - %324 = icmp eq i64 %323, 4294967297 - %325 = trunc i64 %323 to i32 - br i1 %324, label %326, label %334 - -326: ; preds = %_ZN8rawspeed8RawImageaSERKS0_.exit.thread - store i32 0, ptr %322, align 8, !tbaa !67 - %327 = getelementptr inbounds nuw i8, ptr %321, i64 12 - store i32 0, ptr %327, align 4, !tbaa !69 - %328 = load ptr, ptr %321, align 8, !tbaa !70 - %329 = getelementptr inbounds nuw i8, ptr %328, i64 16 - %330 = load ptr, ptr %329, align 8 - call void %330(ptr noundef nonnull align 8 dereferenceable(16) %321) #27 - %331 = load ptr, ptr %321, align 8, !tbaa !70 - %332 = getelementptr inbounds nuw i8, ptr %331, i64 24 - %333 = load ptr, ptr %332, align 8 - call void %333(ptr noundef nonnull align 8 dereferenceable(16) %321) #27 + %323 = phi ptr [ %.pr, %_ZN8rawspeed8RawImageaSERKS0_.exit ], [ %115, %._crit_edge205 ] + %324 = getelementptr inbounds nuw i8, ptr %323, i64 8 + %325 = load atomic i64, ptr %324 acquire, align 8 + %326 = icmp eq i64 %325, 4294967297 + %327 = trunc i64 %325 to i32 + br i1 %326, label %328, label %336 + +328: ; preds = %_ZN8rawspeed8RawImageaSERKS0_.exit.thread + store i32 0, ptr %324, align 8, !tbaa !67 + %329 = getelementptr inbounds nuw i8, ptr %323, i64 12 + store i32 0, ptr %329, align 4, !tbaa !69 + %330 = load ptr, ptr %323, align 8, !tbaa !70 + %331 = getelementptr inbounds nuw i8, ptr %330, i64 16 + %332 = load ptr, ptr %331, align 8 + call void %332(ptr noundef nonnull align 8 dereferenceable(16) %323) #27 + %333 = load ptr, ptr %323, align 8, !tbaa !70 + %334 = getelementptr inbounds nuw i8, ptr %333, i64 24 + %335 = load ptr, ptr %334, align 8 + call void %335(ptr noundef nonnull align 8 dereferenceable(16) %323) #27 br label %_ZN8rawspeed8RawImageD2Ev.exit -334: ; preds = %_ZN8rawspeed8RawImageaSERKS0_.exit.thread - %335 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !15 - %.not.i.i.i.i118 = icmp eq i8 %335, 0 - br i1 %.not.i.i.i.i118, label %338, label %336 +336: ; preds = %_ZN8rawspeed8RawImageaSERKS0_.exit.thread + %337 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !15 + %.not.i.i.i.i118 = icmp eq i8 %337, 0 + br i1 %.not.i.i.i.i118, label %340, label %338 -336: ; preds = %334 - %337 = add nsw i32 %325, -1 - store i32 %337, ptr %322, align 4, !tbaa !66 +338: ; preds = %336 + %339 = add nsw i32 %327, -1 + store i32 %339, ptr %324, align 4, !tbaa !66 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i -338: ; preds = %334 - %339 = atomicrmw volatile add ptr %322, i32 -1 acq_rel, align 4 +340: ; preds = %336 + %341 = atomicrmw volatile add ptr %324, i32 -1 acq_rel, align 4 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i -_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i: ; preds = %338, %336 - %.0.i.i.i.i.i = phi i32 [ %325, %336 ], [ %339, %338 ] - %340 = icmp eq i32 %.0.i.i.i.i.i, 1 - br i1 %340, label %341, label %_ZN8rawspeed8RawImageD2Ev.exit, !prof !72 +_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i: ; preds = %340, %338 + %.0.i.i.i.i.i = phi i32 [ %327, %338 ], [ %341, %340 ] + %342 = icmp eq i32 %.0.i.i.i.i.i, 1 + br i1 %342, label %343, label %_ZN8rawspeed8RawImageD2Ev.exit, !prof !72 -341: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i - call void @_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv(ptr noundef nonnull align 8 dereferenceable(16) %321) #27 +343: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i + call void @_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv(ptr noundef nonnull align 8 dereferenceable(16) %323) #27 br label %_ZN8rawspeed8RawImageD2Ev.exit -_ZN8rawspeed8RawImageD2Ev.exit: ; preds = %_ZN8rawspeed8RawImageaSERKS0_.exit, %326, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i, %341 +_ZN8rawspeed8RawImageD2Ev.exit: ; preds = %_ZN8rawspeed8RawImageaSERKS0_.exit, %328, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i, %343 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #27 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #27 - br label %355 + br label %357 -342: ; preds = %_ZN8rawspeed8RawImage6createERKNS_8iPoint2DENS_12RawImageTypeEj.exit - %343 = landingpad { ptr, i32 } - cleanup - br label %349 - -344: ; preds = %.noexc114, %.noexc113, %.noexc112, %.noexc111, %.noexc110, %.noexc109, %.noexc108, %123 +344: ; preds = %_ZN8rawspeed8RawImage6createERKNS_8iPoint2DENS_12RawImageTypeEj.exit %345 = landingpad { ptr, i32 } cleanup - br label %349 + br label %351 -346: ; preds = %.split.us +346: ; preds = %.noexc114, %.noexc113, %.noexc112, %.noexc111, %.noexc110, %.noexc109, %.noexc108, %123 %347 = landingpad { ptr, i32 } cleanup - br label %349 + br label %351 + +348: ; preds = %.split.us + %349 = landingpad { ptr, i32 } + cleanup + br label %351 -.split.us: ; preds = %270, %265, %221, %229 +.split.us: ; preds = %272, %267, %225, %233 invoke void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_19RawDecoderExceptionEEEvPKcz(ptr noundef nonnull @.str.12, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8rawspeed10RafDecoder16applyCorrectionsEPKNS_6CameraE) #13 - to label %348 unwind label %346 + to label %350 unwind label %348 -348: ; preds = %.split.us +350: ; preds = %.split.us unreachable -349: ; preds = %346, %344, %342 - %.pn50 = phi { ptr, i32 } [ %347, %346 ], [ %345, %344 ], [ %343, %342 ] +351: ; preds = %348, %346, %344 + %.pn50 = phi { ptr, i32 } [ %349, %348 ], [ %347, %346 ], [ %345, %344 ] call void @_ZN8rawspeed8RawImageD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #27 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #27 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #27 br label %common.resume -350: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit104.thread, %98, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit104 - %351 = load i8, ptr %10, align 1, !tbaa !79, !range !80, !noundef !81 - %352 = trunc nuw i8 %351 to i1 - br i1 %352, label %353, label %355 +352: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit104.thread, %98, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit104 + %353 = load i8, ptr %10, align 1, !tbaa !79, !range !80, !noundef !81 + %354 = trunc nuw i8 %353 to i1 + br i1 %354, label %355, label %357 -353: ; preds = %350 - %354 = load ptr, ptr %6, align 8, !tbaa !64 +355: ; preds = %352 + %356 = load ptr, ptr %6, align 8, !tbaa !64 %.sroa.8.0.insert.ext = zext i32 %.sroa.8.0 to i64 %.sroa.8.0.insert.shift = shl nuw i64 %.sroa.8.0.insert.ext, 32 %.sroa.0165.0.insert.ext = zext i32 %.sroa.0165.0 to i64 @@ -3053,10 +3055,10 @@ _ZN8rawspeed8RawImageD2Ev.exit: ; preds = %_ZN8rawspeed8RawIma %.sroa.12.0.insert.shift = shl nuw i64 %.sroa.12.0.insert.ext, 32 %.sroa.0169.0.insert.ext = zext i32 %.sroa.0169.0 to i64 %.sroa.0169.0.insert.insert = or disjoint i64 %.sroa.12.0.insert.shift, %.sroa.0169.0.insert.ext - call void @_ZN8rawspeed12RawImageData8subFrameENS_12iRectangle2DE(ptr noundef nonnull align 8 dereferenceable(616) %354, i64 %.sroa.0165.0.insert.insert, i64 %.sroa.0169.0.insert.insert) - br label %355 + call void @_ZN8rawspeed12RawImageData8subFrameENS_12iRectangle2DE(ptr noundef nonnull align 8 dereferenceable(616) %356, i64 %.sroa.0165.0.insert.insert, i64 %.sroa.0169.0.insert.insert) + br label %357 -355: ; preds = %350, %353, %_ZN8rawspeed8RawImageD2Ev.exit +357: ; preds = %352, %355, %_ZN8rawspeed8RawImageD2Ev.exit ret void } diff --git a/bench/darktable/optimized/SamsungV0Decompressor.ll b/bench/darktable/optimized/SamsungV0Decompressor.ll index bef13422050..0eb8b7ddb19 100644 --- a/bench/darktable/optimized/SamsungV0Decompressor.ll +++ b/bench/darktable/optimized/SamsungV0Decompressor.ll @@ -976,9 +976,9 @@ _ZN8rawspeed16BitStreamerMSB32CI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequ call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #22 %45 = icmp slt i32 %1, 2 %46 = select i1 %45, i32 7, i32 4 - br label %70 + br label %71 -.preheader486: ; preds = %70 +.preheader486: ; preds = %71 %47 = add nuw nsw i32 %34, 8 %48 = add nsw i32 %1, -1 %49 = icmp samesign ult i32 %48, %15 @@ -1003,475 +1003,475 @@ _ZN8rawspeed16BitStreamerMSB32CI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequ %68 = icmp sgt i32 %1, -1 %invariant.gep = getelementptr i8, ptr %60, i64 -2 %69 = zext nneg i32 %13 to i64 - br label %72 + %70 = zext nneg i32 %13 to i64 + br label %73 -70: ; preds = %_ZN8rawspeed16BitStreamerMSB32CI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit, %70 - %.0.idx508 = phi i64 [ 0, %_ZN8rawspeed16BitStreamerMSB32CI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit ], [ %.0.add, %70 ] +71: ; preds = %_ZN8rawspeed16BitStreamerMSB32CI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit, %71 + %.0.idx508 = phi i64 [ 0, %_ZN8rawspeed16BitStreamerMSB32CI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit ], [ %.0.add, %71 ] %.0.ptr = getelementptr inbounds nuw i8, ptr %4, i64 %.0.idx508 store i32 %46, ptr %.0.ptr, align 4, !tbaa !16 %.0.add = add nuw nsw i64 %.0.idx508, 4 %.not = icmp eq i64 %.0.add, 16 - br i1 %.not, label %.preheader486, label %70 + br i1 %.not, label %.preheader486, label %71 -71: ; preds = %.loopexit +72: ; preds = %.loopexit call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #22 ret void -72: ; preds = %.preheader486, %.loopexit +73: ; preds = %.preheader486, %.loopexit %indvars.iv557 = phi i64 [ 0, %.preheader486 ], [ %indvars.iv.next558.pre-phi, %.loopexit ] %.sroa.59215.0534 = phi i32 [ 0, %.preheader486 ], [ %.sroa.59215.5, %.loopexit ] %.sroa.24.0533 = phi i32 [ 0, %.preheader486 ], [ %.sroa.24.6, %.loopexit ] %.sroa.0180.0532 = phi i64 [ 0, %.preheader486 ], [ %.sroa.0180.6, %.loopexit ] - %73 = icmp samesign ult i32 %.sroa.24.0533, 65 - tail call void @llvm.assume(i1 %73) + %74 = icmp samesign ult i32 %.sroa.24.0533, 65 + tail call void @llvm.assume(i1 %74) %.not.i = icmp samesign ult i32 %.sroa.24.0533, 32 - br i1 %.not.i, label %74, label %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit + br i1 %.not.i, label %75, label %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit -74: ; preds = %72 +75: ; preds = %73 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %.sroa.0.i.i) - %75 = add nuw nsw i32 %.sroa.59215.0534, 4 - %.not.i.i119 = icmp samesign ugt i32 %75, %34 - br i1 %.not.i.i119, label %79, label %76, !prof !134 + %76 = add nuw nsw i32 %.sroa.59215.0534, 4 + %.not.i.i119 = icmp samesign ugt i32 %76, %34 + br i1 %.not.i.i119, label %80, label %77, !prof !134 -76: ; preds = %74 - %77 = zext nneg i32 %.sroa.59215.0534 to i64 - %78 = getelementptr inbounds nuw i8, ptr %42, i64 %77 +77: ; preds = %75 + %78 = zext nneg i32 %.sroa.59215.0534 to i64 + %79 = getelementptr inbounds nuw i8, ptr %42, i64 %78 br label %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i -79: ; preds = %74 - %80 = icmp samesign ugt i32 %.sroa.59215.0534, %47 - br i1 %80, label %81, label %82, !prof !134 +80: ; preds = %75 + %81 = icmp samesign ugt i32 %.sroa.59215.0534, %47 + br i1 %81, label %82, label %83, !prof !134 -81: ; preds = %79 +82: ; preds = %80 tail call void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_11IOExceptionEEEvPKcz(ptr noundef nonnull @.str.15, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv) #12 unreachable -82: ; preds = %79 +83: ; preds = %80 store i32 0, ptr %.sroa.0.i.i, align 4 %.sroa.speculated26.i.i.i = tail call i32 @llvm.umin.i32(i32 %34, i32 %.sroa.59215.0534) - %83 = add nuw nsw i32 %.sroa.speculated26.i.i.i, 4 - %.sroa.speculated.i.i.i = tail call i32 @llvm.umin.i32(i32 %34, i32 %83) - %84 = sub nsw i32 %.sroa.speculated.i.i.i, %.sroa.speculated26.i.i.i - %85 = icmp ult i32 %84, 5 - tail call void @llvm.assume(i1 %85) - %86 = zext nneg i32 %.sroa.speculated26.i.i.i to i64 - %87 = getelementptr inbounds nuw i8, ptr %42, i64 %86 - %88 = zext nneg i32 %84 to i64 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %.sroa.0.i.i, ptr nonnull align 1 %87, i64 %88, i1 false) + %84 = add nuw nsw i32 %.sroa.speculated26.i.i.i, 4 + %.sroa.speculated.i.i.i = tail call i32 @llvm.umin.i32(i32 %34, i32 %84) + %85 = sub nsw i32 %.sroa.speculated.i.i.i, %.sroa.speculated26.i.i.i + %86 = icmp ult i32 %85, 5 + tail call void @llvm.assume(i1 %86) + %87 = zext nneg i32 %.sroa.speculated26.i.i.i to i64 + %88 = getelementptr inbounds nuw i8, ptr %42, i64 %87 + %89 = zext nneg i32 %85 to i64 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %.sroa.0.i.i, ptr nonnull align 1 %88, i64 %89, i1 false) br label %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i -_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i: ; preds = %82, %76 - %.sroa.0.0..sroa.0.0..in.i.i = phi ptr [ %.sroa.0.i.i, %82 ], [ %78, %76 ] +_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i: ; preds = %83, %77 + %.sroa.0.0..sroa.0.0..in.i.i = phi ptr [ %.sroa.0.i.i, %83 ], [ %79, %77 ] %.sroa.0.0..sroa.0.0..i.i = load i32, ptr %.sroa.0.0..sroa.0.0..in.i.i, align 1 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %.sroa.0.i.i) - %89 = zext i32 %.sroa.0.0..sroa.0.0..i.i to i64 - %90 = or disjoint i32 %.sroa.24.0533, 32 - %91 = sub nuw nsw i32 32, %.sroa.24.0533 - %92 = zext nneg i32 %91 to i64 - %93 = shl nuw i64 %89, %92 - %94 = or i64 %93, %.sroa.0180.0532 + %90 = zext i32 %.sroa.0.0..sroa.0.0..i.i to i64 + %91 = or disjoint i32 %.sroa.24.0533, 32 + %92 = sub nuw nsw i32 32, %.sroa.24.0533 + %93 = zext nneg i32 %92 to i64 + %94 = shl nuw i64 %90, %93 + %95 = or i64 %94, %.sroa.0180.0532 br label %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit -_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit: ; preds = %72, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i - %.sroa.0180.9 = phi i64 [ %94, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i ], [ %.sroa.0180.0532, %72 ] - %.sroa.24.9 = phi i32 [ %90, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i ], [ %.sroa.24.0533, %72 ] - %.sroa.59215.8 = phi i32 [ %75, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i ], [ %.sroa.59215.0534, %72 ] - %95 = and i32 %.sroa.59215.8, 3 - %96 = icmp eq i32 %95, 0 - tail call void @llvm.assume(i1 %96) - %97 = add nsw i32 %.sroa.24.9, -1 - %98 = shl i64 %.sroa.0180.9, 1 +_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit: ; preds = %73, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i + %.sroa.0180.9 = phi i64 [ %95, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i ], [ %.sroa.0180.0532, %73 ] + %.sroa.24.9 = phi i32 [ %91, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i ], [ %.sroa.24.0533, %73 ] + %.sroa.59215.8 = phi i32 [ %76, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i ], [ %.sroa.59215.0534, %73 ] + %96 = and i32 %.sroa.59215.8, 3 + %97 = icmp eq i32 %96, 0 + tail call void @llvm.assume(i1 %97) + %98 = add nsw i32 %.sroa.24.9, -1 + %99 = shl i64 %.sroa.0180.9, 1 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #22 - br label %99 + br label %100 -99: ; preds = %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit, %99 - %.086.idx511 = phi i64 [ 0, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit ], [ %.086.add, %99 ] - %.sroa.24.1510 = phi i32 [ %97, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit ], [ %103, %99 ] - %.sroa.0180.1509 = phi i64 [ %98, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit ], [ %104, %99 ] +100: ; preds = %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit, %100 + %.086.idx511 = phi i64 [ 0, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit ], [ %.086.add, %100 ] + %.sroa.24.1510 = phi i32 [ %98, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit ], [ %104, %100 ] + %.sroa.0180.1509 = phi i64 [ %99, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit ], [ %105, %100 ] %.086.ptr = getelementptr inbounds nuw i8, ptr %5, i64 %.086.idx511 - %100 = icmp ugt i32 %.sroa.24.1510, 1 - tail call void @llvm.assume(i1 %100) - %101 = lshr i64 %.sroa.0180.1509, 62 - %102 = trunc nuw nsw i64 %101 to i32 - %103 = add nsw i32 %.sroa.24.1510, -2 - %104 = shl i64 %.sroa.0180.1509, 2 - store i32 %102, ptr %.086.ptr, align 4, !tbaa !16 + %101 = icmp ugt i32 %.sroa.24.1510, 1 + tail call void @llvm.assume(i1 %101) + %102 = lshr i64 %.sroa.0180.1509, 62 + %103 = trunc nuw nsw i64 %102 to i32 + %104 = add nsw i32 %.sroa.24.1510, -2 + %105 = shl i64 %.sroa.0180.1509, 2 + store i32 %103, ptr %.086.ptr, align 4, !tbaa !16 %.086.add = add nuw nsw i64 %.086.idx511, 4 %.not95 = icmp eq i64 %.086.add, 16 - br i1 %.not95, label %.preheader485.preheader, label %99 + br i1 %.not95, label %.preheader485.preheader, label %100 -.preheader485.preheader: ; preds = %99 +.preheader485.preheader: ; preds = %100 %.not94 = icmp sgt i64 %.sroa.0180.9, -1 br label %.preheader485 -105: ; preds = %.thread567, %154 - %.sroa.0180.3564573 = phi i64 [ %140, %.thread567 ], [ %.sroa.0180.2512, %154 ] - %.sroa.24.3565572 = phi i32 [ %139, %.thread567 ], [ %.sroa.24.2513, %154 ] - %.sroa.59215.2566571 = phi i32 [ %.sroa.59215.9, %.thread567 ], [ %.sroa.59215.1514, %154 ] +106: ; preds = %.thread567, %155 + %.sroa.0180.3564573 = phi i64 [ %141, %.thread567 ], [ %.sroa.0180.2512, %155 ] + %.sroa.24.3565572 = phi i32 [ %140, %.thread567 ], [ %.sroa.24.2513, %155 ] + %.sroa.59215.2566571 = phi i32 [ %.sroa.59215.9, %.thread567 ], [ %.sroa.59215.1514, %155 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 4 - br i1 %exitcond.not, label %106, label %.preheader485, !llvm.loop !150 - -106: ; preds = %105 - br i1 %.not94, label %256, label %157 - -.preheader485: ; preds = %.preheader485.preheader, %105 - %indvars.iv = phi i64 [ 0, %.preheader485.preheader ], [ %indvars.iv.next, %105 ] - %.sroa.59215.1514 = phi i32 [ %.sroa.59215.8, %.preheader485.preheader ], [ %.sroa.59215.2566571, %105 ] - %.sroa.24.2513 = phi i32 [ %103, %.preheader485.preheader ], [ %.sroa.24.3565572, %105 ] - %.sroa.0180.2512 = phi i64 [ %104, %.preheader485.preheader ], [ %.sroa.0180.3564573, %105 ] - %107 = getelementptr inbounds nuw [4 x i32], ptr %5, i64 0, i64 %indvars.iv - %108 = load i32, ptr %107, align 4, !tbaa !16 - switch i32 %108, label %.preheader485._crit_edge [ - i32 3, label %109 - i32 2, label %142 - i32 1, label %146 + br i1 %exitcond.not, label %107, label %.preheader485, !llvm.loop !150 + +107: ; preds = %106 + br i1 %.not94, label %257, label %158 + +.preheader485: ; preds = %.preheader485.preheader, %106 + %indvars.iv = phi i64 [ 0, %.preheader485.preheader ], [ %indvars.iv.next, %106 ] + %.sroa.59215.1514 = phi i32 [ %.sroa.59215.8, %.preheader485.preheader ], [ %.sroa.59215.2566571, %106 ] + %.sroa.24.2513 = phi i32 [ %104, %.preheader485.preheader ], [ %.sroa.24.3565572, %106 ] + %.sroa.0180.2512 = phi i64 [ %105, %.preheader485.preheader ], [ %.sroa.0180.3564573, %106 ] + %108 = getelementptr inbounds nuw [4 x i32], ptr %5, i64 0, i64 %indvars.iv + %109 = load i32, ptr %108, align 4, !tbaa !16 + switch i32 %109, label %.preheader485._crit_edge [ + i32 3, label %110 + i32 2, label %143 + i32 1, label %147 ] .preheader485._crit_edge: ; preds = %.preheader485 %.phi.trans.insert = getelementptr inbounds nuw [4 x i32], ptr %4, i64 0, i64 %indvars.iv %.pre = load i32, ptr %.phi.trans.insert, align 4, !tbaa !16 - br label %150 + br label %151 -109: ; preds = %.preheader485 - %110 = icmp samesign ult i32 %.sroa.24.2513, 65 - tail call void @llvm.assume(i1 %110) - %111 = icmp sgt i32 %.sroa.59215.1514, -1 +110: ; preds = %.preheader485 + %111 = icmp samesign ult i32 %.sroa.24.2513, 65 tail call void @llvm.assume(i1 %111) - %112 = and i32 %.sroa.59215.1514, 3 - %113 = icmp eq i32 %112, 0 - tail call void @llvm.assume(i1 %113) + %112 = icmp sgt i32 %.sroa.59215.1514, -1 + tail call void @llvm.assume(i1 %112) + %113 = and i32 %.sroa.59215.1514, 3 + %114 = icmp eq i32 %113, 0 + tail call void @llvm.assume(i1 %114) %.not.i.i120 = icmp samesign ult i32 %.sroa.24.2513, 4 - br i1 %.not.i.i120, label %114, label %.thread567 + br i1 %.not.i.i120, label %115, label %.thread567 -114: ; preds = %109 +115: ; preds = %110 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %.sroa.0.i.i.i) - %115 = add nuw nsw i32 %.sroa.59215.1514, 4 - %.not.i.i.i = icmp samesign ugt i32 %115, %34 - br i1 %.not.i.i.i, label %119, label %116, !prof !134 + %116 = add nuw nsw i32 %.sroa.59215.1514, 4 + %.not.i.i.i = icmp samesign ugt i32 %116, %34 + br i1 %.not.i.i.i, label %120, label %117, !prof !134 -116: ; preds = %114 - %117 = zext nneg i32 %.sroa.59215.1514 to i64 - %118 = getelementptr inbounds nuw i8, ptr %42, i64 %117 +117: ; preds = %115 + %118 = zext nneg i32 %.sroa.59215.1514 to i64 + %119 = getelementptr inbounds nuw i8, ptr %42, i64 %118 br label %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i -119: ; preds = %114 - %120 = icmp samesign ugt i32 %.sroa.59215.1514, %47 - br i1 %120, label %121, label %122, !prof !134 +120: ; preds = %115 + %121 = icmp samesign ugt i32 %.sroa.59215.1514, %47 + br i1 %121, label %122, label %123, !prof !134 -121: ; preds = %119 +122: ; preds = %120 tail call void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_11IOExceptionEEEvPKcz(ptr noundef nonnull @.str.15, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv) #12 unreachable -122: ; preds = %119 +123: ; preds = %120 store i32 0, ptr %.sroa.0.i.i.i, align 4 %.sroa.speculated26.i.i.i.i = tail call i32 @llvm.umin.i32(i32 %34, i32 %.sroa.59215.1514) - %123 = add nuw nsw i32 %.sroa.speculated26.i.i.i.i, 4 - %.sroa.speculated.i.i.i.i = tail call i32 @llvm.umin.i32(i32 %34, i32 %123) - %124 = sub nsw i32 %.sroa.speculated.i.i.i.i, %.sroa.speculated26.i.i.i.i - %125 = icmp ult i32 %124, 5 - tail call void @llvm.assume(i1 %125) - %126 = zext nneg i32 %.sroa.speculated26.i.i.i.i to i64 - %127 = getelementptr inbounds nuw i8, ptr %42, i64 %126 - %128 = zext nneg i32 %124 to i64 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %.sroa.0.i.i.i, ptr nonnull align 1 %127, i64 %128, i1 false) + %124 = add nuw nsw i32 %.sroa.speculated26.i.i.i.i, 4 + %.sroa.speculated.i.i.i.i = tail call i32 @llvm.umin.i32(i32 %34, i32 %124) + %125 = sub nsw i32 %.sroa.speculated.i.i.i.i, %.sroa.speculated26.i.i.i.i + %126 = icmp ult i32 %125, 5 + tail call void @llvm.assume(i1 %126) + %127 = zext nneg i32 %.sroa.speculated26.i.i.i.i to i64 + %128 = getelementptr inbounds nuw i8, ptr %42, i64 %127 + %129 = zext nneg i32 %125 to i64 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %.sroa.0.i.i.i, ptr nonnull align 1 %128, i64 %129, i1 false) br label %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i -_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i: ; preds = %122, %116 - %.sroa.0.0..sroa.0.0..in.i.i.i = phi ptr [ %.sroa.0.i.i.i, %122 ], [ %118, %116 ] +_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i: ; preds = %123, %117 + %.sroa.0.0..sroa.0.0..in.i.i.i = phi ptr [ %.sroa.0.i.i.i, %123 ], [ %119, %117 ] %.sroa.0.0..sroa.0.0..i.i.i = load i32, ptr %.sroa.0.0..sroa.0.0..in.i.i.i, align 1 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %.sroa.0.i.i.i) - %129 = zext i32 %.sroa.0.0..sroa.0.0..i.i.i to i64 - %130 = or disjoint i32 %.sroa.24.2513, 32 - %131 = sub nuw nsw i32 32, %.sroa.24.2513 - %132 = zext nneg i32 %131 to i64 - %133 = shl nuw i64 %129, %132 - %134 = or i64 %133, %.sroa.0180.2512 + %130 = zext i32 %.sroa.0.0..sroa.0.0..i.i.i to i64 + %131 = or disjoint i32 %.sroa.24.2513, 32 + %132 = sub nuw nsw i32 32, %.sroa.24.2513 + %133 = zext nneg i32 %132 to i64 + %134 = shl nuw i64 %130, %133 + %135 = or i64 %134, %.sroa.0180.2512 br label %.thread567 -.thread567: ; preds = %109, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i - %.sroa.59215.9 = phi i32 [ %115, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i ], [ %.sroa.59215.1514, %109 ] - %135 = phi i64 [ %134, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i ], [ %.sroa.0180.2512, %109 ] - %136 = phi i32 [ %130, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i ], [ %.sroa.24.2513, %109 ] - %137 = lshr i64 %135, 60 - %138 = trunc nuw nsw i64 %137 to i32 - %139 = add nsw i32 %136, -4 - %140 = shl i64 %135, 4 - %141 = getelementptr inbounds nuw [4 x i32], ptr %4, i64 0, i64 %indvars.iv - store i32 %138, ptr %141, align 4, !tbaa !16 - br label %105 - -142: ; preds = %.preheader485 - %143 = getelementptr inbounds nuw [4 x i32], ptr %4, i64 0, i64 %indvars.iv - %144 = load i32, ptr %143, align 4, !tbaa !16 - %145 = add nsw i32 %144, -1 - store i32 %145, ptr %143, align 4, !tbaa !16 - br label %150 - -146: ; preds = %.preheader485 - %147 = getelementptr inbounds nuw [4 x i32], ptr %4, i64 0, i64 %indvars.iv - %148 = load i32, ptr %147, align 4, !tbaa !16 - %149 = add nsw i32 %148, 1 - store i32 %149, ptr %147, align 4, !tbaa !16 - br label %150 - -150: ; preds = %.preheader485._crit_edge, %146, %142 - %151 = phi i32 [ %.pre, %.preheader485._crit_edge ], [ %149, %146 ], [ %145, %142 ] - %152 = icmp slt i32 %151, 0 - br i1 %152, label %153, label %154 - -153: ; preds = %150 +.thread567: ; preds = %110, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i + %.sroa.59215.9 = phi i32 [ %116, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i ], [ %.sroa.59215.1514, %110 ] + %136 = phi i64 [ %135, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i ], [ %.sroa.0180.2512, %110 ] + %137 = phi i32 [ %131, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i ], [ %.sroa.24.2513, %110 ] + %138 = lshr i64 %136, 60 + %139 = trunc nuw nsw i64 %138 to i32 + %140 = add nsw i32 %137, -4 + %141 = shl i64 %136, 4 + %142 = getelementptr inbounds nuw [4 x i32], ptr %4, i64 0, i64 %indvars.iv + store i32 %139, ptr %142, align 4, !tbaa !16 + br label %106 + +143: ; preds = %.preheader485 + %144 = getelementptr inbounds nuw [4 x i32], ptr %4, i64 0, i64 %indvars.iv + %145 = load i32, ptr %144, align 4, !tbaa !16 + %146 = add nsw i32 %145, -1 + store i32 %146, ptr %144, align 4, !tbaa !16 + br label %151 + +147: ; preds = %.preheader485 + %148 = getelementptr inbounds nuw [4 x i32], ptr %4, i64 0, i64 %indvars.iv + %149 = load i32, ptr %148, align 4, !tbaa !16 + %150 = add nsw i32 %149, 1 + store i32 %150, ptr %148, align 4, !tbaa !16 + br label %151 + +151: ; preds = %.preheader485._crit_edge, %147, %143 + %152 = phi i32 [ %.pre, %.preheader485._crit_edge ], [ %150, %147 ], [ %146, %143 ] + %153 = icmp slt i32 %152, 0 + br i1 %153, label %154, label %155 + +154: ; preds = %151 tail call void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_19RawDecoderExceptionEEEvPKcz(ptr noundef nonnull @.str.3, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK8rawspeed21SamsungV0Decompressor15decompressStripEiNS_10ByteStreamE) #12 unreachable -154: ; preds = %150 - %155 = icmp samesign ugt i32 %151, 16 - br i1 %155, label %156, label %105 +155: ; preds = %151 + %156 = icmp samesign ugt i32 %152, 16 + br i1 %156, label %157, label %106 -156: ; preds = %154 +157: ; preds = %155 tail call void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_19RawDecoderExceptionEEEvPKcz(ptr noundef nonnull @.str.4, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK8rawspeed21SamsungV0Decompressor15decompressStripEiNS_10ByteStreamE) #12 unreachable -157: ; preds = %106 - br i1 %45, label %158, label %159 +158: ; preds = %107 + br i1 %45, label %159, label %160 -158: ; preds = %157 +159: ; preds = %158 tail call void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_19RawDecoderExceptionEEEvPKcz(ptr noundef nonnull @.str.5, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK8rawspeed21SamsungV0Decompressor15decompressStripEiNS_10ByteStreamE) #12 unreachable -159: ; preds = %157 - %160 = add nuw nsw i64 %indvars.iv557, 16 - %.not97 = icmp samesign ult i64 %160, %69 - br i1 %.not97, label %.preheader484, label %161 +160: ; preds = %158 + %161 = add nuw nsw i64 %indvars.iv557, 16 + %.not97 = icmp samesign ult i64 %161, %69 + br i1 %.not97, label %.preheader484, label %162 -161: ; preds = %159 +162: ; preds = %160 tail call void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_19RawDecoderExceptionEEEvPKcz(ptr noundef nonnull @.str.6, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK8rawspeed21SamsungV0Decompressor15decompressStripEiNS_10ByteStreamE) #12 unreachable -.preheader484: ; preds = %159, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit - %indvars.iv545 = phi i64 [ %indvars.iv.next546, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit ], [ 0, %159 ] - %.sroa.59215.3518 = phi i32 [ %.sroa.59215.11, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit ], [ %.sroa.59215.2566571, %159 ] - %.sroa.24.4517 = phi i32 [ %.sroa.24.10, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit ], [ %.sroa.24.3565572, %159 ] - %.sroa.0180.4516 = phi i64 [ %.sroa.0180.10, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit ], [ %.sroa.0180.3564573, %159 ] - %162 = lshr i64 %indvars.iv545, 3 - %163 = getelementptr inbounds nuw [4 x i32], ptr %4, i64 0, i64 %162 - %164 = load i32, ptr %163, align 4, !tbaa !16 - %.not.i121 = icmp eq i32 %164, 0 - br i1 %.not.i121, label %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit, label %165 - -165: ; preds = %.preheader484 - %166 = icmp samesign ult i32 %.sroa.24.4517, 65 - tail call void @llvm.assume(i1 %166) - %167 = icmp sgt i32 %.sroa.59215.3518, -1 +.preheader484: ; preds = %160, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit + %indvars.iv545 = phi i64 [ %indvars.iv.next546, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit ], [ 0, %160 ] + %.sroa.59215.3518 = phi i32 [ %.sroa.59215.11, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit ], [ %.sroa.59215.2566571, %160 ] + %.sroa.24.4517 = phi i32 [ %.sroa.24.10, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit ], [ %.sroa.24.3565572, %160 ] + %.sroa.0180.4516 = phi i64 [ %.sroa.0180.10, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit ], [ %.sroa.0180.3564573, %160 ] + %163 = lshr i64 %indvars.iv545, 3 + %164 = getelementptr inbounds nuw [4 x i32], ptr %4, i64 0, i64 %163 + %165 = load i32, ptr %164, align 4, !tbaa !16 + %.not.i121 = icmp eq i32 %165, 0 + br i1 %.not.i121, label %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit, label %166 + +166: ; preds = %.preheader484 + %167 = icmp samesign ult i32 %.sroa.24.4517, 65 tail call void @llvm.assume(i1 %167) - %168 = and i32 %.sroa.59215.3518, 3 - %169 = icmp eq i32 %168, 0 - tail call void @llvm.assume(i1 %169) - %170 = icmp samesign ult i32 %164, 33 + %168 = icmp sgt i32 %.sroa.59215.3518, -1 + tail call void @llvm.assume(i1 %168) + %169 = and i32 %.sroa.59215.3518, 3 + %170 = icmp eq i32 %169, 0 tail call void @llvm.assume(i1 %170) - %.not.i.i.i122 = icmp samesign ult i32 %.sroa.24.4517, %164 - br i1 %.not.i.i.i122, label %171, label %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i + %171 = icmp samesign ult i32 %165, 33 + tail call void @llvm.assume(i1 %171) + %.not.i.i.i122 = icmp samesign ult i32 %.sroa.24.4517, %165 + br i1 %.not.i.i.i122, label %172, label %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i -171: ; preds = %165 +172: ; preds = %166 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %.sroa.0.i.i.i.i) - %172 = add nuw nsw i32 %.sroa.59215.3518, 4 - %.not.i.i.i.i = icmp samesign ugt i32 %172, %34 - br i1 %.not.i.i.i.i, label %176, label %173, !prof !134 + %173 = add nuw nsw i32 %.sroa.59215.3518, 4 + %.not.i.i.i.i = icmp samesign ugt i32 %173, %34 + br i1 %.not.i.i.i.i, label %177, label %174, !prof !134 -173: ; preds = %171 - %174 = zext nneg i32 %.sroa.59215.3518 to i64 - %175 = getelementptr inbounds nuw i8, ptr %42, i64 %174 +174: ; preds = %172 + %175 = zext nneg i32 %.sroa.59215.3518 to i64 + %176 = getelementptr inbounds nuw i8, ptr %42, i64 %175 br label %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i -176: ; preds = %171 - %177 = icmp samesign ugt i32 %.sroa.59215.3518, %47 - br i1 %177, label %178, label %179, !prof !134 +177: ; preds = %172 + %178 = icmp samesign ugt i32 %.sroa.59215.3518, %47 + br i1 %178, label %179, label %180, !prof !134 -178: ; preds = %176 +179: ; preds = %177 tail call void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_11IOExceptionEEEvPKcz(ptr noundef nonnull @.str.15, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv) #12 unreachable -179: ; preds = %176 +180: ; preds = %177 store i32 0, ptr %.sroa.0.i.i.i.i, align 4 %.sroa.speculated26.i.i.i.i.i = tail call i32 @llvm.umin.i32(i32 %34, i32 %.sroa.59215.3518) - %180 = add nuw nsw i32 %.sroa.speculated26.i.i.i.i.i, 4 - %.sroa.speculated.i.i.i.i.i = tail call i32 @llvm.umin.i32(i32 %34, i32 %180) - %181 = sub nsw i32 %.sroa.speculated.i.i.i.i.i, %.sroa.speculated26.i.i.i.i.i - %182 = icmp ult i32 %181, 5 - tail call void @llvm.assume(i1 %182) - %183 = zext nneg i32 %.sroa.speculated26.i.i.i.i.i to i64 - %184 = getelementptr inbounds nuw i8, ptr %42, i64 %183 - %185 = zext nneg i32 %181 to i64 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %.sroa.0.i.i.i.i, ptr nonnull align 1 %184, i64 %185, i1 false) + %181 = add nuw nsw i32 %.sroa.speculated26.i.i.i.i.i, 4 + %.sroa.speculated.i.i.i.i.i = tail call i32 @llvm.umin.i32(i32 %34, i32 %181) + %182 = sub nsw i32 %.sroa.speculated.i.i.i.i.i, %.sroa.speculated26.i.i.i.i.i + %183 = icmp ult i32 %182, 5 + tail call void @llvm.assume(i1 %183) + %184 = zext nneg i32 %.sroa.speculated26.i.i.i.i.i to i64 + %185 = getelementptr inbounds nuw i8, ptr %42, i64 %184 + %186 = zext nneg i32 %182 to i64 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %.sroa.0.i.i.i.i, ptr nonnull align 1 %185, i64 %186, i1 false) br label %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i -_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i: ; preds = %179, %173 - %.sroa.0.0..sroa.0.0..in.i.i.i.i = phi ptr [ %.sroa.0.i.i.i.i, %179 ], [ %175, %173 ] +_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i: ; preds = %180, %174 + %.sroa.0.0..sroa.0.0..in.i.i.i.i = phi ptr [ %.sroa.0.i.i.i.i, %180 ], [ %176, %174 ] %.sroa.0.0..sroa.0.0..i.i.i.i = load i32, ptr %.sroa.0.0..sroa.0.0..in.i.i.i.i, align 1 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %.sroa.0.i.i.i.i) - %186 = zext i32 %.sroa.0.0..sroa.0.0..i.i.i.i to i64 - %187 = add nuw nsw i32 %.sroa.24.4517, 32 - %188 = sub nuw nsw i32 32, %.sroa.24.4517 - %189 = zext nneg i32 %188 to i64 - %190 = shl nuw i64 %186, %189 - %191 = or i64 %190, %.sroa.0180.4516 + %187 = zext i32 %.sroa.0.0..sroa.0.0..i.i.i.i to i64 + %188 = add nuw nsw i32 %.sroa.24.4517, 32 + %189 = sub nuw nsw i32 32, %.sroa.24.4517 + %190 = zext nneg i32 %189 to i64 + %191 = shl nuw i64 %187, %190 + %192 = or i64 %191, %.sroa.0180.4516 br label %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i -_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i: ; preds = %165, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i - %.sroa.59215.10 = phi i32 [ %172, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i ], [ %.sroa.59215.3518, %165 ] - %192 = phi i64 [ %191, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i ], [ %.sroa.0180.4516, %165 ] - %193 = phi i32 [ %187, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i ], [ %.sroa.24.4517, %165 ] - %194 = sub nuw nsw i32 64, %164 - %195 = zext nneg i32 %194 to i64 - %196 = sub nsw i32 %193, %164 - %197 = zext nneg i32 %164 to i64 - %198 = shl i64 %192, %197 - %199 = ashr i64 %192, %195 - %200 = trunc i64 %199 to i16 +_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i: ; preds = %166, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i + %.sroa.59215.10 = phi i32 [ %173, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i ], [ %.sroa.59215.3518, %166 ] + %193 = phi i64 [ %192, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i ], [ %.sroa.0180.4516, %166 ] + %194 = phi i32 [ %188, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i ], [ %.sroa.24.4517, %166 ] + %195 = sub nuw nsw i32 64, %165 + %196 = zext nneg i32 %195 to i64 + %197 = sub nsw i32 %194, %165 + %198 = zext nneg i32 %165 to i64 + %199 = shl i64 %193, %198 + %200 = ashr i64 %193, %196 + %201 = trunc i64 %200 to i16 br label %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit _ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit: ; preds = %.preheader484, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i - %.sroa.0180.10 = phi i64 [ %.sroa.0180.4516, %.preheader484 ], [ %198, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i ] - %.sroa.24.10 = phi i32 [ %.sroa.24.4517, %.preheader484 ], [ %196, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i ] + %.sroa.0180.10 = phi i64 [ %.sroa.0180.4516, %.preheader484 ], [ %199, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i ] + %.sroa.24.10 = phi i32 [ %.sroa.24.4517, %.preheader484 ], [ %197, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i ] %.sroa.59215.11 = phi i32 [ %.sroa.59215.3518, %.preheader484 ], [ %.sroa.59215.10, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i ] - %.0.i = phi i16 [ 0, %.preheader484 ], [ %200, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i ] - %201 = or disjoint i64 %indvars.iv545, %indvars.iv557 - %202 = icmp samesign ult i64 %201, %69 - tail call void @llvm.assume(i1 %202) + %.0.i = phi i16 [ 0, %.preheader484 ], [ %201, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i ] + %202 = or disjoint i64 %indvars.iv545, %indvars.iv557 + %203 = icmp samesign ult i64 %202, %69 + tail call void @llvm.assume(i1 %203) tail call void @llvm.assume(i1 %49) tail call void @llvm.assume(i1 %52) - %203 = getelementptr inbounds nuw i16, ptr %54, i64 %201 - %204 = load i16, ptr %203, align 2, !tbaa !142 - %205 = add i16 %204, %.0.i + %204 = getelementptr inbounds nuw i16, ptr %54, i64 %202 + %205 = load i16, ptr %204, align 2, !tbaa !142 + %206 = add i16 %205, %.0.i tail call void @llvm.assume(i1 %55) tail call void @llvm.assume(i1 %58) - %206 = getelementptr inbounds nuw i16, ptr %60, i64 %201 - store i16 %205, ptr %206, align 2, !tbaa !142 + %207 = getelementptr inbounds nuw i16, ptr %60, i64 %202 + store i16 %206, ptr %207, align 2, !tbaa !142 %indvars.iv.next546 = add nuw nsw i64 %indvars.iv545, 2 - %207 = icmp samesign ult i64 %indvars.iv545, 14 - br i1 %207, label %.preheader484, label %.preheader, !llvm.loop !151 + %208 = icmp samesign ult i64 %indvars.iv545, 14 + br i1 %208, label %.preheader484, label %.preheader, !llvm.loop !151 .preheader: ; preds = %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit138 %indvars.iv548 = phi i64 [ %indvars.iv.next549, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit138 ], [ 1, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit ] %.sroa.59215.4522 = phi i32 [ %.sroa.59215.13, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit138 ], [ %.sroa.59215.11, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit ] %.sroa.24.5521 = phi i32 [ %.sroa.24.11, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit138 ], [ %.sroa.24.10, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit ] %.sroa.0180.5520 = phi i64 [ %.sroa.0180.11, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit138 ], [ %.sroa.0180.10, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit ] - %208 = lshr i64 %indvars.iv548, 3 - %209 = and i64 %208, 536870909 - %210 = or disjoint i64 %209, 2 - %211 = getelementptr inbounds nuw [4 x i32], ptr %4, i64 0, i64 %210 - %212 = load i32, ptr %211, align 4, !tbaa !16 - %.not.i126 = icmp eq i32 %212, 0 - br i1 %.not.i126, label %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit138, label %213 - -213: ; preds = %.preheader - %214 = icmp samesign ult i32 %.sroa.24.5521, 65 - tail call void @llvm.assume(i1 %214) - %215 = icmp sgt i32 %.sroa.59215.4522, -1 + %209 = lshr i64 %indvars.iv548, 3 + %210 = and i64 %209, 536870909 + %211 = or disjoint i64 %210, 2 + %212 = getelementptr inbounds nuw [4 x i32], ptr %4, i64 0, i64 %211 + %213 = load i32, ptr %212, align 4, !tbaa !16 + %.not.i126 = icmp eq i32 %213, 0 + br i1 %.not.i126, label %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit138, label %214 + +214: ; preds = %.preheader + %215 = icmp samesign ult i32 %.sroa.24.5521, 65 tail call void @llvm.assume(i1 %215) - %216 = and i32 %.sroa.59215.4522, 3 - %217 = icmp eq i32 %216, 0 - tail call void @llvm.assume(i1 %217) - %218 = icmp samesign ult i32 %212, 33 + %216 = icmp sgt i32 %.sroa.59215.4522, -1 + tail call void @llvm.assume(i1 %216) + %217 = and i32 %.sroa.59215.4522, 3 + %218 = icmp eq i32 %217, 0 tail call void @llvm.assume(i1 %218) - %.not.i.i.i127 = icmp samesign ult i32 %.sroa.24.5521, %212 - br i1 %.not.i.i.i127, label %219, label %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i130 + %219 = icmp samesign ult i32 %213, 33 + tail call void @llvm.assume(i1 %219) + %.not.i.i.i127 = icmp samesign ult i32 %.sroa.24.5521, %213 + br i1 %.not.i.i.i127, label %220, label %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i130 -219: ; preds = %213 +220: ; preds = %214 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %.sroa.0.i.i.i.i125) - %220 = add nuw nsw i32 %.sroa.59215.4522, 4 - %.not.i.i.i.i132 = icmp samesign ugt i32 %220, %34 - br i1 %.not.i.i.i.i132, label %224, label %221, !prof !134 + %221 = add nuw nsw i32 %.sroa.59215.4522, 4 + %.not.i.i.i.i132 = icmp samesign ugt i32 %221, %34 + br i1 %.not.i.i.i.i132, label %225, label %222, !prof !134 -221: ; preds = %219 - %222 = zext nneg i32 %.sroa.59215.4522 to i64 - %223 = getelementptr inbounds nuw i8, ptr %42, i64 %222 +222: ; preds = %220 + %223 = zext nneg i32 %.sroa.59215.4522 to i64 + %224 = getelementptr inbounds nuw i8, ptr %42, i64 %223 br label %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i133 -224: ; preds = %219 - %225 = icmp samesign ugt i32 %.sroa.59215.4522, %47 - br i1 %225, label %226, label %227, !prof !134 +225: ; preds = %220 + %226 = icmp samesign ugt i32 %.sroa.59215.4522, %47 + br i1 %226, label %227, label %228, !prof !134 -226: ; preds = %224 +227: ; preds = %225 tail call void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_11IOExceptionEEEvPKcz(ptr noundef nonnull @.str.15, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv) #12 unreachable -227: ; preds = %224 +228: ; preds = %225 store i32 0, ptr %.sroa.0.i.i.i.i125, align 4 %.sroa.speculated26.i.i.i.i.i136 = tail call i32 @llvm.umin.i32(i32 %34, i32 %.sroa.59215.4522) - %228 = add nuw nsw i32 %.sroa.speculated26.i.i.i.i.i136, 4 - %.sroa.speculated.i.i.i.i.i137 = tail call i32 @llvm.umin.i32(i32 %34, i32 %228) - %229 = sub nsw i32 %.sroa.speculated.i.i.i.i.i137, %.sroa.speculated26.i.i.i.i.i136 - %230 = icmp ult i32 %229, 5 - tail call void @llvm.assume(i1 %230) - %231 = zext nneg i32 %.sroa.speculated26.i.i.i.i.i136 to i64 - %232 = getelementptr inbounds nuw i8, ptr %42, i64 %231 - %233 = zext nneg i32 %229 to i64 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %.sroa.0.i.i.i.i125, ptr nonnull align 1 %232, i64 %233, i1 false) + %229 = add nuw nsw i32 %.sroa.speculated26.i.i.i.i.i136, 4 + %.sroa.speculated.i.i.i.i.i137 = tail call i32 @llvm.umin.i32(i32 %34, i32 %229) + %230 = sub nsw i32 %.sroa.speculated.i.i.i.i.i137, %.sroa.speculated26.i.i.i.i.i136 + %231 = icmp ult i32 %230, 5 + tail call void @llvm.assume(i1 %231) + %232 = zext nneg i32 %.sroa.speculated26.i.i.i.i.i136 to i64 + %233 = getelementptr inbounds nuw i8, ptr %42, i64 %232 + %234 = zext nneg i32 %230 to i64 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %.sroa.0.i.i.i.i125, ptr nonnull align 1 %233, i64 %234, i1 false) br label %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i133 -_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i133: ; preds = %227, %221 - %.sroa.0.0..sroa.0.0..in.i.i.i.i134 = phi ptr [ %.sroa.0.i.i.i.i125, %227 ], [ %223, %221 ] +_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i133: ; preds = %228, %222 + %.sroa.0.0..sroa.0.0..in.i.i.i.i134 = phi ptr [ %.sroa.0.i.i.i.i125, %228 ], [ %224, %222 ] %.sroa.0.0..sroa.0.0..i.i.i.i135 = load i32, ptr %.sroa.0.0..sroa.0.0..in.i.i.i.i134, align 1 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %.sroa.0.i.i.i.i125) - %234 = zext i32 %.sroa.0.0..sroa.0.0..i.i.i.i135 to i64 - %235 = add nuw nsw i32 %.sroa.24.5521, 32 - %236 = sub nuw nsw i32 32, %.sroa.24.5521 - %237 = zext nneg i32 %236 to i64 - %238 = shl nuw i64 %234, %237 - %239 = or i64 %238, %.sroa.0180.5520 + %235 = zext i32 %.sroa.0.0..sroa.0.0..i.i.i.i135 to i64 + %236 = add nuw nsw i32 %.sroa.24.5521, 32 + %237 = sub nuw nsw i32 32, %.sroa.24.5521 + %238 = zext nneg i32 %237 to i64 + %239 = shl nuw i64 %235, %238 + %240 = or i64 %239, %.sroa.0180.5520 br label %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i130 -_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i130: ; preds = %213, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i133 - %.sroa.59215.12 = phi i32 [ %220, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i133 ], [ %.sroa.59215.4522, %213 ] - %240 = phi i64 [ %239, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i133 ], [ %.sroa.0180.5520, %213 ] - %241 = phi i32 [ %235, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i133 ], [ %.sroa.24.5521, %213 ] - %242 = sub nuw nsw i32 64, %212 - %243 = zext nneg i32 %242 to i64 - %244 = sub nsw i32 %241, %212 - %245 = zext nneg i32 %212 to i64 - %246 = shl i64 %240, %245 - %247 = ashr i64 %240, %243 - %248 = trunc i64 %247 to i16 +_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i130: ; preds = %214, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i133 + %.sroa.59215.12 = phi i32 [ %221, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i133 ], [ %.sroa.59215.4522, %214 ] + %241 = phi i64 [ %240, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i133 ], [ %.sroa.0180.5520, %214 ] + %242 = phi i32 [ %236, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i133 ], [ %.sroa.24.5521, %214 ] + %243 = sub nuw nsw i32 64, %213 + %244 = zext nneg i32 %243 to i64 + %245 = sub nsw i32 %242, %213 + %246 = zext nneg i32 %213 to i64 + %247 = shl i64 %241, %246 + %248 = ashr i64 %241, %244 + %249 = trunc i64 %248 to i16 br label %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit138 _ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit138: ; preds = %.preheader, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i130 - %.sroa.0180.11 = phi i64 [ %.sroa.0180.5520, %.preheader ], [ %246, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i130 ] - %.sroa.24.11 = phi i32 [ %.sroa.24.5521, %.preheader ], [ %244, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i130 ] + %.sroa.0180.11 = phi i64 [ %.sroa.0180.5520, %.preheader ], [ %247, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i130 ] + %.sroa.24.11 = phi i32 [ %.sroa.24.5521, %.preheader ], [ %245, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i130 ] %.sroa.59215.13 = phi i32 [ %.sroa.59215.4522, %.preheader ], [ %.sroa.59215.12, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i130 ] - %.0.i131 = phi i16 [ 0, %.preheader ], [ %248, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i130 ] - %249 = or disjoint i64 %indvars.iv548, %indvars.iv557 - %250 = icmp samesign ult i64 %249, %69 - tail call void @llvm.assume(i1 %250) + %.0.i131 = phi i16 [ 0, %.preheader ], [ %249, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i130 ] + %250 = or disjoint i64 %indvars.iv548, %indvars.iv557 + %251 = icmp samesign ult i64 %250, %69 + tail call void @llvm.assume(i1 %251) tail call void @llvm.assume(i1 %62) tail call void @llvm.assume(i1 %65) - %251 = getelementptr inbounds nuw i16, ptr %67, i64 %249 - %252 = load i16, ptr %251, align 2, !tbaa !142 - %253 = add i16 %252, %.0.i131 - %254 = getelementptr inbounds nuw i16, ptr %60, i64 %249 - store i16 %253, ptr %254, align 2, !tbaa !142 + %252 = getelementptr inbounds nuw i16, ptr %67, i64 %250 + %253 = load i16, ptr %252, align 2, !tbaa !142 + %254 = add i16 %253, %.0.i131 + %255 = getelementptr inbounds nuw i16, ptr %60, i64 %250 + store i16 %254, ptr %255, align 2, !tbaa !142 %indvars.iv.next549 = add nuw nsw i64 %indvars.iv548, 2 - %255 = icmp samesign ult i64 %indvars.iv548, 14 - br i1 %255, label %.preheader, label %.loopexit, !llvm.loop !152 + %256 = icmp samesign ult i64 %indvars.iv548, 14 + br i1 %256, label %.preheader, label %.loopexit, !llvm.loop !152 -256: ; preds = %106 +257: ; preds = %107 %.not96 = icmp eq i64 %indvars.iv557, 0 - br i1 %.not96, label %263, label %257 + br i1 %.not96, label %263, label %258 -257: ; preds = %256 - %258 = add nsw i64 %indvars.iv557, -2 - %259 = trunc nsw i64 %258 to i32 - %260 = icmp samesign ugt i32 %13, %259 +258: ; preds = %257 + %259 = add nsw i64 %indvars.iv557, -2 + %260 = icmp samesign ult i64 %259, %70 tail call void @llvm.assume(i1 %260) tail call void @llvm.assume(i1 %68) tail call void @llvm.assume(i1 %55) tail call void @llvm.assume(i1 %58) - %261 = getelementptr inbounds nuw i16, ptr %60, i64 %258 + %261 = getelementptr inbounds nuw i16, ptr %60, i64 %259 %262 = load i16, ptr %261, align 2, !tbaa !142 br label %263 -263: ; preds = %256, %257 - %264 = phi i16 [ %262, %257 ], [ 128, %256 ] +263: ; preds = %257, %258 + %264 = phi i16 [ %262, %258 ], [ 128, %257 ] br label %266 265: ; preds = %311 @@ -1706,13 +1706,13 @@ _ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit176: ; br label %.loopexit .loopexit: ; preds = %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit138, %.loopexit.loopexit - %indvars.iv.next558.pre-phi = phi i64 [ %.pre560, %.loopexit.loopexit ], [ %160, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit138 ] + %indvars.iv.next558.pre-phi = phi i64 [ %.pre560, %.loopexit.loopexit ], [ %161, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit138 ] %.sroa.0180.6 = phi i64 [ %.sroa.0180.13, %.loopexit.loopexit ], [ %.sroa.0180.11, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit138 ] %.sroa.24.6 = phi i32 [ %.sroa.24.13, %.loopexit.loopexit ], [ %.sroa.24.11, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit138 ] %.sroa.59215.5 = phi i32 [ %.sroa.59215.17, %.loopexit.loopexit ], [ %.sroa.59215.13, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit138 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #22 %366 = icmp samesign ult i64 %indvars.iv.next558.pre-phi, %69 - br i1 %366, label %72, label %71, !llvm.loop !155 + br i1 %366, label %73, label %72, !llvm.loop !155 } ; Function Attrs: mustprogress uwtable diff --git a/bench/darktable/optimized/SamsungV1Decompressor.ll b/bench/darktable/optimized/SamsungV1Decompressor.ll index 11b4bed424b..ab49ac7aefc 100644 --- a/bench/darktable/optimized/SamsungV1Decompressor.ll +++ b/bench/darktable/optimized/SamsungV1Decompressor.ll @@ -384,13 +384,16 @@ _ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequen .lr.ph217: ; preds = %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit.preheader %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %1, i64 4 %57 = add nuw nsw i32 %38, 8 - %58 = zext nneg i32 %17 to i64 + %58 = zext nneg i32 %14 to i64 + %59 = zext nneg i32 %17 to i64 br i1 %24, label %.lr.ph217.split.preheader, label %.lr.ph217.split.us.preheader .lr.ph217.split.us.preheader: ; preds = %.lr.ph217 - %59 = zext nneg i32 %17 to i64 %60 = zext nneg i32 %12 to i64 %61 = zext nneg i32 %18 to i64 + %62 = zext nneg i32 %17 to i64 + %63 = zext nneg i32 %12 to i64 + %64 = zext nneg i32 %18 to i64 %wide.trip.count232 = zext nneg i32 %14 to i64 br label %.lr.ph217.split.us @@ -405,162 +408,160 @@ _ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequen %.sroa.066.0213.us = phi i64 [ 0, %.lr.ph217.split.us.preheader ], [ %.sroa.066.2.us, %._crit_edge209.us ] call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %1) #18 store i64 0, ptr %1, align 8 - %62 = icmp samesign ugt i64 %indvars.iv229, 1 - br i1 %62, label %63, label %.lr.ph208.us - -63: ; preds = %.lr.ph217.split.us - %64 = add nsw i64 %indvars.iv229, -2 - %65 = trunc nsw i64 %64 to i32 - %66 = icmp samesign ugt i32 %14, %65 - tail call void @llvm.assume(i1 %66) - %67 = mul nuw nsw i64 %64, %58 - %68 = trunc i64 %67 to i32 - %69 = add i32 %12, %68 - %70 = icmp samesign ule i32 %69, %18 - tail call void @llvm.assume(i1 %70) - %71 = getelementptr inbounds nuw i16, ptr %7, i64 %67 - %72 = load i16, ptr %71, align 2, !tbaa !116 - %73 = getelementptr inbounds nuw i8, ptr %71, i64 2 - %74 = zext i16 %72 to i32 - %75 = load i16, ptr %73, align 2, !tbaa !116 - %76 = zext i16 %75 to i32 - store i32 %74, ptr %1, align 8 - store i32 %76, ptr %.sroa.5.0..sroa_idx, align 4, !tbaa !15 + %65 = icmp samesign ugt i64 %indvars.iv229, 1 + br i1 %65, label %66, label %.lr.ph208.us + +66: ; preds = %.lr.ph217.split.us + %67 = add nsw i64 %indvars.iv229, -2 + %68 = icmp samesign ult i64 %67, %58 + tail call void @llvm.assume(i1 %68) + %69 = mul nuw nsw i64 %67, %59 + %70 = add nuw nsw i64 %69, %60 + %71 = icmp samesign ule i64 %70, %61 + tail call void @llvm.assume(i1 %71) + %72 = getelementptr inbounds nuw i16, ptr %7, i64 %69 + %73 = load i16, ptr %72, align 2, !tbaa !116 + %74 = getelementptr inbounds nuw i8, ptr %72, i64 2 + %75 = zext i16 %73 to i32 + %76 = load i16, ptr %74, align 2, !tbaa !116 + %77 = zext i16 %76 to i32 + store i32 %75, ptr %1, align 8 + store i32 %77, ptr %.sroa.5.0..sroa_idx, align 4, !tbaa !15 br label %.lr.ph208.us -.lr.ph208.us: ; preds = %63, %.lr.ph217.split.us - %77 = mul nuw nsw i64 %indvars.iv229, %59 - %78 = add nuw nsw i64 %77, %60 - %79 = icmp samesign ule i64 %78, %61 - %80 = getelementptr inbounds nuw i16, ptr %7, i64 %77 - br label %81 - -81: ; preds = %.lr.ph208.us, %137 - %indvars.iv = phi i64 [ 0, %.lr.ph208.us ], [ %indvars.iv.next, %137 ] - %.sroa.1669.1205.us = phi i32 [ %.sroa.1669.0215.us, %.lr.ph208.us ], [ %.sroa.1669.2.us, %137 ] - %.sroa.8.1204.us = phi i32 [ %.sroa.8.0214.us, %.lr.ph208.us ], [ %.sroa.8.2.us, %137 ] - %.sroa.066.1203.us = phi i64 [ %.sroa.066.0213.us, %.lr.ph208.us ], [ %.sroa.066.2.us, %137 ] - %82 = icmp samesign ult i32 %.sroa.8.1204.us, 65 - tail call void @llvm.assume(i1 %82) +.lr.ph208.us: ; preds = %66, %.lr.ph217.split.us + %78 = mul nuw nsw i64 %indvars.iv229, %62 + %79 = add nuw nsw i64 %78, %63 + %80 = icmp samesign ule i64 %79, %64 + %81 = getelementptr inbounds nuw i16, ptr %7, i64 %78 + br label %82 + +82: ; preds = %.lr.ph208.us, %138 + %indvars.iv = phi i64 [ 0, %.lr.ph208.us ], [ %indvars.iv.next, %138 ] + %.sroa.1669.1205.us = phi i32 [ %.sroa.1669.0215.us, %.lr.ph208.us ], [ %.sroa.1669.2.us, %138 ] + %.sroa.8.1204.us = phi i32 [ %.sroa.8.0214.us, %.lr.ph208.us ], [ %.sroa.8.2.us, %138 ] + %.sroa.066.1203.us = phi i64 [ %.sroa.066.0213.us, %.lr.ph208.us ], [ %.sroa.066.2.us, %138 ] + %83 = icmp samesign ult i32 %.sroa.8.1204.us, 65 + tail call void @llvm.assume(i1 %83) %.not.i.i58.us = icmp samesign ult i32 %.sroa.8.1204.us, 23 - br i1 %.not.i.i58.us, label %83, label %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.us + br i1 %.not.i.i58.us, label %84, label %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.us -83: ; preds = %81 +84: ; preds = %82 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %.sroa.0.i.i.i) - %84 = add nuw nsw i32 %.sroa.1669.1205.us, 4 - %.not.i.i.i59.us = icmp samesign ugt i32 %84, %38 - br i1 %.not.i.i.i59.us, label %88, label %85, !prof !94 + %85 = add nuw nsw i32 %.sroa.1669.1205.us, 4 + %.not.i.i.i59.us = icmp samesign ugt i32 %85, %38 + br i1 %.not.i.i.i59.us, label %89, label %86, !prof !94 -85: ; preds = %83 - %86 = zext nneg i32 %.sroa.1669.1205.us to i64 - %87 = getelementptr inbounds nuw i8, ptr %55, i64 %86 +86: ; preds = %84 + %87 = zext nneg i32 %.sroa.1669.1205.us to i64 + %88 = getelementptr inbounds nuw i8, ptr %55, i64 %87 br label %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.us -88: ; preds = %83 - %89 = icmp samesign ugt i32 %.sroa.1669.1205.us, %57 - br i1 %89, label %.split.us, label %90, !prof !94 +89: ; preds = %84 + %90 = icmp samesign ugt i32 %.sroa.1669.1205.us, %57 + br i1 %90, label %.split.us, label %91, !prof !94 -90: ; preds = %88 +91: ; preds = %89 store i32 0, ptr %.sroa.0.i.i.i, align 4 %.sroa.speculated26.i.i.i.i.us = tail call i32 @llvm.umin.i32(i32 %38, i32 %.sroa.1669.1205.us) - %91 = add nuw nsw i32 %.sroa.speculated26.i.i.i.i.us, 4 - %.sroa.speculated.i.i.i.i.us = tail call i32 @llvm.umin.i32(i32 %38, i32 %91) - %92 = sub nsw i32 %.sroa.speculated.i.i.i.i.us, %.sroa.speculated26.i.i.i.i.us - %93 = icmp ult i32 %92, 5 - tail call void @llvm.assume(i1 %93) - %94 = zext nneg i32 %.sroa.speculated26.i.i.i.i.us to i64 - %95 = getelementptr inbounds nuw i8, ptr %55, i64 %94 - %96 = zext nneg i32 %92 to i64 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %.sroa.0.i.i.i, ptr nonnull align 1 %95, i64 %96, i1 false) + %92 = add nuw nsw i32 %.sroa.speculated26.i.i.i.i.us, 4 + %.sroa.speculated.i.i.i.i.us = tail call i32 @llvm.umin.i32(i32 %38, i32 %92) + %93 = sub nsw i32 %.sroa.speculated.i.i.i.i.us, %.sroa.speculated26.i.i.i.i.us + %94 = icmp ult i32 %93, 5 + tail call void @llvm.assume(i1 %94) + %95 = zext nneg i32 %.sroa.speculated26.i.i.i.i.us to i64 + %96 = getelementptr inbounds nuw i8, ptr %55, i64 %95 + %97 = zext nneg i32 %93 to i64 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %.sroa.0.i.i.i, ptr nonnull align 1 %96, i64 %97, i1 false) br label %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.us -_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.us: ; preds = %90, %85 - %.sroa.0.0..sroa.0.0..in.i.i.i.us = phi ptr [ %.sroa.0.i.i.i, %90 ], [ %87, %85 ] +_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.us: ; preds = %91, %86 + %.sroa.0.0..sroa.0.0..in.i.i.i.us = phi ptr [ %.sroa.0.i.i.i, %91 ], [ %88, %86 ] %.sroa.0.0..sroa.0.0..i.i.i.us = load i32, ptr %.sroa.0.0..sroa.0.0..in.i.i.i.us, align 1 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %.sroa.0.i.i.i) - %97 = tail call i32 @llvm.bswap.i32(i32 %.sroa.0.0..sroa.0.0..i.i.i.us) - %98 = zext i32 %97 to i64 - %99 = or disjoint i32 %.sroa.8.1204.us, 32 - %100 = sub nuw nsw i32 32, %.sroa.8.1204.us - %101 = zext nneg i32 %100 to i64 - %102 = shl nuw i64 %98, %101 - %103 = or i64 %102, %.sroa.066.1203.us + %98 = tail call i32 @llvm.bswap.i32(i32 %.sroa.0.0..sroa.0.0..i.i.i.us) + %99 = zext i32 %98 to i64 + %100 = or disjoint i32 %.sroa.8.1204.us, 32 + %101 = sub nuw nsw i32 32, %.sroa.8.1204.us + %102 = zext nneg i32 %101 to i64 + %103 = shl nuw i64 %99, %102 + %104 = or i64 %103, %.sroa.066.1203.us br label %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.us -_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.us: ; preds = %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.us, %81 - %.sroa.1669.2.us = phi i32 [ %84, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.us ], [ %.sroa.1669.1205.us, %81 ] - %104 = phi i64 [ %103, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.us ], [ %.sroa.066.1203.us, %81 ] - %105 = phi i32 [ %99, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.us ], [ %.sroa.8.1204.us, %81 ] - %106 = lshr i64 %104, 54 - %107 = getelementptr inbounds nuw %"struct.rawspeed::SamsungV1Decompressor::encTableItem", ptr %2, i64 %106 - %108 = load i8, ptr %107, align 1, !tbaa !111 - %109 = zext nneg i8 %108 to i32 - %110 = icmp ult i8 %108, 33 - tail call void @llvm.assume(i1 %110) - %111 = icmp samesign uge i32 %105, %109 +_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.us: ; preds = %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.us, %82 + %.sroa.1669.2.us = phi i32 [ %85, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.us ], [ %.sroa.1669.1205.us, %82 ] + %105 = phi i64 [ %104, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.us ], [ %.sroa.066.1203.us, %82 ] + %106 = phi i32 [ %100, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.us ], [ %.sroa.8.1204.us, %82 ] + %107 = lshr i64 %105, 54 + %108 = getelementptr inbounds nuw %"struct.rawspeed::SamsungV1Decompressor::encTableItem", ptr %2, i64 %107 + %109 = load i8, ptr %108, align 1, !tbaa !111 + %110 = zext nneg i8 %109 to i32 + %111 = icmp ult i8 %109, 33 tail call void @llvm.assume(i1 %111) - %112 = sub nsw i32 %105, %109 - %113 = zext nneg i8 %108 to i64 - %114 = shl i64 %104, %113 - %115 = getelementptr inbounds nuw i8, ptr %107, i64 1 - %116 = load i8, ptr %115, align 1, !tbaa !113 - %117 = icmp eq i8 %116, 0 - br i1 %117, label %_ZN8rawspeed21SamsungV1Decompressor11samsungDiffERNS_14BitStreamerMSBERKSt6vectorINS0_12encTableItemESaIS4_EE.exit.us, label %118 - -118: ; preds = %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.us - %119 = zext nneg i8 %116 to i32 - %120 = icmp samesign ult i32 %112, 65 - tail call void @llvm.assume(i1 %120) - %121 = icmp ult i8 %116, 33 + %112 = icmp samesign uge i32 %106, %110 + tail call void @llvm.assume(i1 %112) + %113 = sub nsw i32 %106, %110 + %114 = zext nneg i8 %109 to i64 + %115 = shl i64 %105, %114 + %116 = getelementptr inbounds nuw i8, ptr %108, i64 1 + %117 = load i8, ptr %116, align 1, !tbaa !113 + %118 = icmp eq i8 %117, 0 + br i1 %118, label %_ZN8rawspeed21SamsungV1Decompressor11samsungDiffERNS_14BitStreamerMSBERKSt6vectorINS0_12encTableItemESaIS4_EE.exit.us, label %119 + +119: ; preds = %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.us + %120 = zext nneg i8 %117 to i32 + %121 = icmp samesign ult i32 %113, 65 tail call void @llvm.assume(i1 %121) - %122 = icmp samesign uge i32 %112, %119 + %122 = icmp ult i8 %117, 33 tail call void @llvm.assume(i1 %122) - %123 = sub nuw nsw i32 64, %119 - %124 = zext nneg i32 %123 to i64 - %125 = lshr i64 %114, %124 - %126 = trunc i64 %125 to i32 - %127 = sub nsw i32 %112, %119 - %128 = zext nneg i8 %116 to i64 - %129 = shl i64 %114, %128 - %130 = icmp sgt i64 %114, -1 - %notmask.i.i.us = shl nsw i32 -1, %119 + %123 = icmp samesign uge i32 %113, %120 + tail call void @llvm.assume(i1 %123) + %124 = sub nuw nsw i32 64, %120 + %125 = zext nneg i32 %124 to i64 + %126 = lshr i64 %115, %125 + %127 = trunc i64 %126 to i32 + %128 = sub nsw i32 %113, %120 + %129 = zext nneg i8 %117 to i64 + %130 = shl i64 %115, %129 + %131 = icmp sgt i64 %115, -1 + %notmask.i.i.us = shl nsw i32 -1, %120 %.neg.i.i.us = add nuw nsw i32 %notmask.i.i.us, 1 - %131 = select i1 %130, i32 %.neg.i.i.us, i32 0 - %.0.i.i.us = add i32 %131, %126 + %132 = select i1 %131, i32 %.neg.i.i.us, i32 0 + %.0.i.i.us = add i32 %132, %127 br label %_ZN8rawspeed21SamsungV1Decompressor11samsungDiffERNS_14BitStreamerMSBERKSt6vectorINS0_12encTableItemESaIS4_EE.exit.us -_ZN8rawspeed21SamsungV1Decompressor11samsungDiffERNS_14BitStreamerMSBERKSt6vectorINS0_12encTableItemESaIS4_EE.exit.us: ; preds = %118, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.us - %.sroa.066.2.us = phi i64 [ %114, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.us ], [ %129, %118 ] - %.sroa.8.2.us = phi i32 [ %112, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.us ], [ %127, %118 ] - %.0.i.us = phi i32 [ 0, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.us ], [ %.0.i.i.us, %118 ] - %132 = and i64 %indvars.iv, 1 - %133 = getelementptr inbounds nuw [2 x i32], ptr %1, i64 0, i64 %132 - %134 = load i32, ptr %133, align 4, !tbaa !16 - %135 = add nsw i32 %134, %.0.i.us - store i32 %135, ptr %133, align 4, !tbaa !16 - %136 = icmp ult i32 %135, 4096 - br i1 %136, label %137, label %.split219.us - -137: ; preds = %_ZN8rawspeed21SamsungV1Decompressor11samsungDiffERNS_14BitStreamerMSBERKSt6vectorINS0_12encTableItemESaIS4_EE.exit.us - tail call void @llvm.assume(i1 %79) - %138 = getelementptr inbounds nuw i16, ptr %80, i64 %indvars.iv - %139 = trunc nuw i32 %135 to i16 - store i16 %139, ptr %138, align 2, !tbaa !116 +_ZN8rawspeed21SamsungV1Decompressor11samsungDiffERNS_14BitStreamerMSBERKSt6vectorINS0_12encTableItemESaIS4_EE.exit.us: ; preds = %119, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.us + %.sroa.066.2.us = phi i64 [ %115, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.us ], [ %130, %119 ] + %.sroa.8.2.us = phi i32 [ %113, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.us ], [ %128, %119 ] + %.0.i.us = phi i32 [ 0, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.us ], [ %.0.i.i.us, %119 ] + %133 = and i64 %indvars.iv, 1 + %134 = getelementptr inbounds nuw [2 x i32], ptr %1, i64 0, i64 %133 + %135 = load i32, ptr %134, align 4, !tbaa !16 + %136 = add nsw i32 %135, %.0.i.us + store i32 %136, ptr %134, align 4, !tbaa !16 + %137 = icmp ult i32 %136, 4096 + br i1 %137, label %138, label %.split219.us + +138: ; preds = %_ZN8rawspeed21SamsungV1Decompressor11samsungDiffERNS_14BitStreamerMSBERKSt6vectorINS0_12encTableItemESaIS4_EE.exit.us + tail call void @llvm.assume(i1 %80) + %139 = getelementptr inbounds nuw i16, ptr %81, i64 %indvars.iv + %140 = trunc nuw i32 %136 to i16 + store i16 %140, ptr %139, align 2, !tbaa !116 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond228.not = icmp eq i64 %indvars.iv.next, %60 - br i1 %exitcond228.not, label %._crit_edge209.us, label %81, !llvm.loop !118 + %exitcond228.not = icmp eq i64 %indvars.iv.next, %63 + br i1 %exitcond228.not, label %._crit_edge209.us, label %82, !llvm.loop !118 -._crit_edge209.us: ; preds = %137 +._crit_edge209.us: ; preds = %138 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %1) #18 %indvars.iv.next230 = add nuw nsw i64 %indvars.iv229, 1 %exitcond233.not = icmp eq i64 %indvars.iv.next230, %wide.trip.count232 br i1 %exitcond233.not, label %_ZNSt6vectorIN8rawspeed21SamsungV1Decompressor12encTableItemESaIS2_EED2Ev.exit, label %.lr.ph217.split.us, !llvm.loop !119 .invoke: ; preds = %51, %4 - %140 = phi ptr [ @.str.7, %4 ], [ @.str.10, %51 ] - %141 = phi ptr [ @__PRETTY_FUNCTION__._ZNK8rawspeed6Buffer10getSubViewEjj, %4 ], [ @__PRETTY_FUNCTION__._ZN8rawspeed26BitStreamerReplenisherBaseINS_14BitStreamerMSBEEC2ENS_10Array1DRefIKSt4byteEE, %51 ] - invoke void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_11IOExceptionEEEvPKcz(ptr noundef nonnull %140, ptr noundef nonnull %141) #14 - to label %.cont unwind label %142 + %141 = phi ptr [ @.str.7, %4 ], [ @.str.10, %51 ] + %142 = phi ptr [ @__PRETTY_FUNCTION__._ZNK8rawspeed6Buffer10getSubViewEjj, %4 ], [ @__PRETTY_FUNCTION__._ZN8rawspeed26BitStreamerReplenisherBaseINS_14BitStreamerMSBEEC2ENS_10Array1DRefIKSt4byteEE, %51 ] + invoke void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_11IOExceptionEEEvPKcz(ptr noundef nonnull %141, ptr noundef nonnull %142) #14 + to label %.cont unwind label %143 .cont: ; preds = %.invoke unreachable @@ -569,52 +570,52 @@ _ZNSt6vectorIN8rawspeed21SamsungV1Decompressor12encTableItemESaIS2_EED2Ev.exit: tail call void @_ZdlPvm(ptr noundef nonnull %2, i64 noundef 2048) #21 ret void -142: ; preds = %.invoke - %143 = landingpad { ptr, i32 } +143: ; preds = %.invoke + %144 = landingpad { ptr, i32 } cleanup br label %_ZNSt6vectorIN8rawspeed21SamsungV1Decompressor12encTableItemESaIS2_EED2Ev.exit64 .lr.ph217.split: ; preds = %.lr.ph217.split.preheader, %.lr.ph217.split %indvars.iv234 = phi i64 [ 0, %.lr.ph217.split.preheader ], [ %indvars.iv.next235, %.lr.ph217.split ] call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %1) #18 - %144 = icmp samesign ult i64 %indvars.iv234, 2 - tail call void @llvm.assume(i1 %144) + %145 = icmp samesign ult i64 %indvars.iv234, 2 + tail call void @llvm.assume(i1 %145) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %1) #18 %indvars.iv.next235 = add nuw nsw i64 %indvars.iv234, 1 %exitcond238.not = icmp eq i64 %indvars.iv.next235, %wide.trip.count237 br i1 %exitcond238.not, label %_ZNSt6vectorIN8rawspeed21SamsungV1Decompressor12encTableItemESaIS2_EED2Ev.exit, label %.lr.ph217.split, !llvm.loop !119 -.split.us: ; preds = %88 +.split.us: ; preds = %89 invoke void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_11IOExceptionEEEvPKcz(ptr noundef nonnull @.str.11, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv) #14 - to label %.noexc60 unwind label %146 + to label %.noexc60 unwind label %147 .noexc60: ; preds = %.split.us unreachable .split219.us: ; preds = %_ZN8rawspeed21SamsungV1Decompressor11samsungDiffERNS_14BitStreamerMSBERKSt6vectorINS0_12encTableItemESaIS4_EE.exit.us invoke void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_19RawDecoderExceptionEEEvPKcz(ptr noundef nonnull @.str.5, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK8rawspeed21SamsungV1Decompressor10decompressEv) #14 - to label %145 unwind label %148 + to label %146 unwind label %149 -145: ; preds = %.split219.us +146: ; preds = %.split219.us unreachable -146: ; preds = %.split.us - %147 = landingpad { ptr, i32 } +147: ; preds = %.split.us + %148 = landingpad { ptr, i32 } cleanup - br label %150 + br label %151 -148: ; preds = %.split219.us - %149 = landingpad { ptr, i32 } +149: ; preds = %.split219.us + %150 = landingpad { ptr, i32 } cleanup - br label %150 + br label %151 -150: ; preds = %146, %148 - %.pn.pn = phi { ptr, i32 } [ %149, %148 ], [ %147, %146 ] +151: ; preds = %147, %149 + %.pn.pn = phi { ptr, i32 } [ %150, %149 ], [ %148, %147 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %1) #18 br label %_ZNSt6vectorIN8rawspeed21SamsungV1Decompressor12encTableItemESaIS2_EED2Ev.exit64 -_ZNSt6vectorIN8rawspeed21SamsungV1Decompressor12encTableItemESaIS2_EED2Ev.exit64: ; preds = %150, %142 - %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %150 ], [ %143, %142 ] +_ZNSt6vectorIN8rawspeed21SamsungV1Decompressor12encTableItemESaIS2_EED2Ev.exit64: ; preds = %151, %143 + %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %151 ], [ %144, %143 ] tail call void @_ZdlPvm(ptr noundef nonnull %2, i64 noundef 2048) #21 resume { ptr, i32 } %.pn.pn.pn } diff --git a/bench/gromacs/optimized/lmmin.ll b/bench/gromacs/optimized/lmmin.ll index b506d71864f..4e6d7fc7141 100644 --- a/bench/gromacs/optimized/lmmin.ll +++ b/bench/gromacs/optimized/lmmin.ll @@ -2919,585 +2919,586 @@ define internal fastcc void @_ZL8lm_qrfaciiPdPiS_S_S_(i32 noundef range(i32 0, - .preheader224: ; preds = %_Z8lm_enormiPKd.exit, %.thread.i.us %15 = zext nneg i32 %0 to i64 - %16 = add nuw i32 %0, 1 - br label %77 + %16 = zext nneg i32 %1 to i64 + %17 = add nuw i32 %0, 1 + br label %78 .lr.ph.preheader.i: ; preds = %7, %_Z8lm_enormiPKd.exit %indvars.iv = phi i64 [ %indvars.iv.next, %_Z8lm_enormiPKd.exit ], [ 0, %7 ] - %17 = mul nuw nsw i64 %indvars.iv, %wide.trip.count.i - %18 = getelementptr inbounds nuw double, ptr %2, i64 %17 + %18 = mul nuw nsw i64 %indvars.iv, %wide.trip.count.i + %19 = getelementptr inbounds nuw double, ptr %2, i64 %18 br label %.lr.ph.i -.lr.ph.i: ; preds = %47, %.lr.ph.preheader.i - %indvars.iv.i = phi i64 [ 0, %.lr.ph.preheader.i ], [ %indvars.iv.next.i, %47 ] - %.076.i = phi double [ 0.000000e+00, %.lr.ph.preheader.i ], [ %.1.i, %47 ] - %.06075.i = phi double [ 0.000000e+00, %.lr.ph.preheader.i ], [ %.161.i, %47 ] - %.06374.i = phi double [ 0.000000e+00, %.lr.ph.preheader.i ], [ %.164.i, %47 ] - %.06573.i = phi double [ 0.000000e+00, %.lr.ph.preheader.i ], [ %.166.i, %47 ] - %.06772.i = phi double [ 0.000000e+00, %.lr.ph.preheader.i ], [ %.168.i, %47 ] - %19 = getelementptr inbounds nuw double, ptr %18, i64 %indvars.iv.i - %20 = load double, ptr %19, align 8 - %21 = tail call double @llvm.fabs.f64(double %20) - %22 = fcmp ogt double %21, 0x2000000000000000 - br i1 %22, label %23, label %36 - -23: ; preds = %.lr.ph.i - %24 = fcmp olt double %21, %9 - br i1 %24, label %25, label %27 - -25: ; preds = %23 - %26 = tail call double @llvm.fmuladd.f64(double %20, double %20, double %.06573.i) - br label %47 - -27: ; preds = %23 - %28 = fcmp ogt double %21, %.06075.i - br i1 %28, label %29, label %33 - -29: ; preds = %27 - %30 = fdiv double %.06075.i, %21 - %31 = fmul double %.06772.i, %30 - %32 = tail call double @llvm.fmuladd.f64(double %31, double %30, double 1.000000e+00) - br label %47 - -33: ; preds = %27 - %34 = fdiv double %21, %.06075.i - %35 = tail call double @llvm.fmuladd.f64(double %34, double %34, double %.06772.i) - br label %47 - -36: ; preds = %.lr.ph.i - %37 = fcmp ogt double %21, %.076.i - br i1 %37, label %38, label %42 - -38: ; preds = %36 - %39 = fdiv double %.076.i, %21 - %40 = fmul double %.06374.i, %39 - %41 = tail call double @llvm.fmuladd.f64(double %40, double %39, double 1.000000e+00) - br label %47 - -42: ; preds = %36 - %43 = fcmp une double %20, 0.000000e+00 - br i1 %43, label %44, label %47 - -44: ; preds = %42 - %45 = fdiv double %21, %.076.i - %46 = tail call double @llvm.fmuladd.f64(double %45, double %45, double %.06374.i) - br label %47 - -47: ; preds = %44, %42, %38, %33, %29, %25 - %.168.i = phi double [ %.06772.i, %25 ], [ %32, %29 ], [ %35, %33 ], [ %.06772.i, %38 ], [ %.06772.i, %44 ], [ %.06772.i, %42 ] - %.166.i = phi double [ %26, %25 ], [ %.06573.i, %29 ], [ %.06573.i, %33 ], [ %.06573.i, %38 ], [ %.06573.i, %44 ], [ %.06573.i, %42 ] - %.164.i = phi double [ %.06374.i, %25 ], [ %.06374.i, %29 ], [ %.06374.i, %33 ], [ %41, %38 ], [ %46, %44 ], [ %.06374.i, %42 ] - %.161.i = phi double [ %.06075.i, %25 ], [ %21, %29 ], [ %.06075.i, %33 ], [ %.06075.i, %38 ], [ %.06075.i, %44 ], [ %.06075.i, %42 ] - %.1.i = phi double [ %.076.i, %25 ], [ %.076.i, %29 ], [ %.076.i, %33 ], [ %21, %38 ], [ %.076.i, %44 ], [ %.076.i, %42 ] +.lr.ph.i: ; preds = %48, %.lr.ph.preheader.i + %indvars.iv.i = phi i64 [ 0, %.lr.ph.preheader.i ], [ %indvars.iv.next.i, %48 ] + %.076.i = phi double [ 0.000000e+00, %.lr.ph.preheader.i ], [ %.1.i, %48 ] + %.06075.i = phi double [ 0.000000e+00, %.lr.ph.preheader.i ], [ %.161.i, %48 ] + %.06374.i = phi double [ 0.000000e+00, %.lr.ph.preheader.i ], [ %.164.i, %48 ] + %.06573.i = phi double [ 0.000000e+00, %.lr.ph.preheader.i ], [ %.166.i, %48 ] + %.06772.i = phi double [ 0.000000e+00, %.lr.ph.preheader.i ], [ %.168.i, %48 ] + %20 = getelementptr inbounds nuw double, ptr %19, i64 %indvars.iv.i + %21 = load double, ptr %20, align 8 + %22 = tail call double @llvm.fabs.f64(double %21) + %23 = fcmp ogt double %22, 0x2000000000000000 + br i1 %23, label %24, label %37 + +24: ; preds = %.lr.ph.i + %25 = fcmp olt double %22, %9 + br i1 %25, label %26, label %28 + +26: ; preds = %24 + %27 = tail call double @llvm.fmuladd.f64(double %21, double %21, double %.06573.i) + br label %48 + +28: ; preds = %24 + %29 = fcmp ogt double %22, %.06075.i + br i1 %29, label %30, label %34 + +30: ; preds = %28 + %31 = fdiv double %.06075.i, %22 + %32 = fmul double %.06772.i, %31 + %33 = tail call double @llvm.fmuladd.f64(double %32, double %31, double 1.000000e+00) + br label %48 + +34: ; preds = %28 + %35 = fdiv double %22, %.06075.i + %36 = tail call double @llvm.fmuladd.f64(double %35, double %35, double %.06772.i) + br label %48 + +37: ; preds = %.lr.ph.i + %38 = fcmp ogt double %22, %.076.i + br i1 %38, label %39, label %43 + +39: ; preds = %37 + %40 = fdiv double %.076.i, %22 + %41 = fmul double %.06374.i, %40 + %42 = tail call double @llvm.fmuladd.f64(double %41, double %40, double 1.000000e+00) + br label %48 + +43: ; preds = %37 + %44 = fcmp une double %21, 0.000000e+00 + br i1 %44, label %45, label %48 + +45: ; preds = %43 + %46 = fdiv double %22, %.076.i + %47 = tail call double @llvm.fmuladd.f64(double %46, double %46, double %.06374.i) + br label %48 + +48: ; preds = %45, %43, %39, %34, %30, %26 + %.168.i = phi double [ %.06772.i, %26 ], [ %33, %30 ], [ %36, %34 ], [ %.06772.i, %39 ], [ %.06772.i, %45 ], [ %.06772.i, %43 ] + %.166.i = phi double [ %27, %26 ], [ %.06573.i, %30 ], [ %.06573.i, %34 ], [ %.06573.i, %39 ], [ %.06573.i, %45 ], [ %.06573.i, %43 ] + %.164.i = phi double [ %.06374.i, %26 ], [ %.06374.i, %30 ], [ %.06374.i, %34 ], [ %42, %39 ], [ %47, %45 ], [ %.06374.i, %43 ] + %.161.i = phi double [ %.06075.i, %26 ], [ %22, %30 ], [ %.06075.i, %34 ], [ %.06075.i, %39 ], [ %.06075.i, %45 ], [ %.06075.i, %43 ] + %.1.i = phi double [ %.076.i, %26 ], [ %.076.i, %30 ], [ %.076.i, %34 ], [ %22, %39 ], [ %.076.i, %45 ], [ %.076.i, %43 ] %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i br i1 %exitcond.not.i, label %._crit_edge.i, label %.lr.ph.i, !llvm.loop !28 -._crit_edge.i: ; preds = %47 - %48 = fcmp une double %.168.i, 0.000000e+00 - br i1 %48, label %49, label %55 +._crit_edge.i: ; preds = %48 + %49 = fcmp une double %.168.i, 0.000000e+00 + br i1 %49, label %50, label %56 -49: ; preds = %._crit_edge.i - %50 = fdiv double %.166.i, %.161.i - %51 = fdiv double %50, %.161.i - %52 = fadd double %.168.i, %51 - %53 = tail call double @sqrt(double noundef %52) #13 - %54 = fmul double %.161.i, %53 +50: ; preds = %._crit_edge.i + %51 = fdiv double %.166.i, %.161.i + %52 = fdiv double %51, %.161.i + %53 = fadd double %.168.i, %52 + %54 = tail call double @sqrt(double noundef %53) #13 + %55 = fmul double %.161.i, %54 br label %_Z8lm_enormiPKd.exit -55: ; preds = %._crit_edge.i - %56 = fcmp une double %.166.i, 0.000000e+00 - br i1 %56, label %57, label %.thread.i +56: ; preds = %._crit_edge.i + %57 = fcmp une double %.166.i, 0.000000e+00 + br i1 %57, label %58, label %.thread.i -57: ; preds = %55 - %58 = fcmp ult double %.166.i, %.1.i - br i1 %58, label %65, label %59 +58: ; preds = %56 + %59 = fcmp ult double %.166.i, %.1.i + br i1 %59, label %66, label %60 -59: ; preds = %57 - %60 = fdiv double %.1.i, %.166.i - %61 = fmul double %.164.i, %.1.i - %62 = tail call double @llvm.fmuladd.f64(double %60, double %61, double 1.000000e+00) - %63 = fmul double %.166.i, %62 - %64 = tail call double @sqrt(double noundef %63) #13 +60: ; preds = %58 + %61 = fdiv double %.1.i, %.166.i + %62 = fmul double %.164.i, %.1.i + %63 = tail call double @llvm.fmuladd.f64(double %61, double %62, double 1.000000e+00) + %64 = fmul double %.166.i, %63 + %65 = tail call double @sqrt(double noundef %64) #13 br label %_Z8lm_enormiPKd.exit -65: ; preds = %57 - %66 = fdiv double %.166.i, %.1.i - %67 = tail call double @llvm.fmuladd.f64(double %.1.i, double %.164.i, double %66) - %68 = fmul double %.1.i, %67 - %69 = tail call double @sqrt(double noundef %68) #13 +66: ; preds = %58 + %67 = fdiv double %.166.i, %.1.i + %68 = tail call double @llvm.fmuladd.f64(double %.1.i, double %.164.i, double %67) + %69 = fmul double %.1.i, %68 + %70 = tail call double @sqrt(double noundef %69) #13 br label %_Z8lm_enormiPKd.exit -.thread.i: ; preds = %55 - %70 = tail call double @sqrt(double noundef %.164.i) #13 - %71 = fmul double %.1.i, %70 +.thread.i: ; preds = %56 + %71 = tail call double @sqrt(double noundef %.164.i) #13 + %72 = fmul double %.1.i, %71 br label %_Z8lm_enormiPKd.exit -_Z8lm_enormiPKd.exit: ; preds = %49, %59, %65, %.thread.i - %.062.i = phi double [ %54, %49 ], [ %64, %59 ], [ %69, %65 ], [ %71, %.thread.i ] - %72 = getelementptr inbounds nuw double, ptr %5, i64 %indvars.iv - store double %.062.i, ptr %72, align 8 - %73 = getelementptr inbounds nuw double, ptr %4, i64 %indvars.iv +_Z8lm_enormiPKd.exit: ; preds = %50, %60, %66, %.thread.i + %.062.i = phi double [ %55, %50 ], [ %65, %60 ], [ %70, %66 ], [ %72, %.thread.i ] + %73 = getelementptr inbounds nuw double, ptr %5, i64 %indvars.iv store double %.062.i, ptr %73, align 8 - %74 = getelementptr inbounds nuw double, ptr %6, i64 %indvars.iv + %74 = getelementptr inbounds nuw double, ptr %4, i64 %indvars.iv store double %.062.i, ptr %74, align 8 - %75 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv - %76 = trunc nuw nsw i64 %indvars.iv to i32 - store i32 %76, ptr %75, align 4 + %75 = getelementptr inbounds nuw double, ptr %6, i64 %indvars.iv + store double %.062.i, ptr %75, align 8 + %76 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv + %77 = trunc nuw nsw i64 %indvars.iv to i32 + store i32 %77, ptr %76, align 4 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count254 br i1 %exitcond.not, label %.preheader224, label %.lr.ph.preheader.i, !llvm.loop !62 -77: ; preds = %.preheader224, %278 - %indvars.iv268 = phi i64 [ 0, %.preheader224 ], [ %indvars.iv.next269, %278 ] - %indvars.iv256 = phi i64 [ 1, %.preheader224 ], [ %indvars.iv.next257, %278 ] +78: ; preds = %.preheader224, %279 + %indvars.iv268 = phi i64 [ 0, %.preheader224 ], [ %indvars.iv.next269, %279 ] + %indvars.iv256 = phi i64 [ 1, %.preheader224 ], [ %indvars.iv.next257, %279 ] %indvars290 = trunc i64 %indvars.iv268 to i32 %indvars.iv.next269 = add nuw nsw i64 %indvars.iv268, 1 - %78 = icmp samesign ult i64 %indvars.iv.next269, %wide.trip.count254 - br i1 %78, label %.lr.ph, label %._crit_edge - -.lr.ph: ; preds = %77, %.lr.ph - %indvars.iv258 = phi i64 [ %indvars.iv.next259, %.lr.ph ], [ %indvars.iv256, %77 ] - %.0166227 = phi i32 [ %.1, %.lr.ph ], [ %indvars290, %77 ] - %79 = getelementptr inbounds nuw double, ptr %4, i64 %indvars.iv258 - %80 = load double, ptr %79, align 8 - %81 = sext i32 %.0166227 to i64 - %82 = getelementptr inbounds double, ptr %4, i64 %81 - %83 = load double, ptr %82, align 8 - %84 = fcmp ogt double %80, %83 - %85 = trunc nuw nsw i64 %indvars.iv258 to i32 - %.1 = select i1 %84, i32 %85, i32 %.0166227 + %79 = icmp samesign ult i64 %indvars.iv.next269, %16 + br i1 %79, label %.lr.ph, label %._crit_edge + +.lr.ph: ; preds = %78, %.lr.ph + %indvars.iv258 = phi i64 [ %indvars.iv.next259, %.lr.ph ], [ %indvars.iv256, %78 ] + %.0166227 = phi i32 [ %.1, %.lr.ph ], [ %indvars290, %78 ] + %80 = getelementptr inbounds nuw double, ptr %4, i64 %indvars.iv258 + %81 = load double, ptr %80, align 8 + %82 = sext i32 %.0166227 to i64 + %83 = getelementptr inbounds double, ptr %4, i64 %82 + %84 = load double, ptr %83, align 8 + %85 = fcmp ogt double %81, %84 + %86 = trunc nuw nsw i64 %indvars.iv258 to i32 + %.1 = select i1 %85, i32 %86, i32 %.0166227 %indvars.iv.next259 = add nuw nsw i64 %indvars.iv258, 1 %exitcond262.not = icmp eq i64 %indvars.iv.next259, %wide.trip.count254 br i1 %exitcond262.not, label %._crit_edge, label %.lr.ph, !llvm.loop !63 -._crit_edge: ; preds = %.lr.ph, %77 - %.0166.lcssa = phi i32 [ %indvars290, %77 ], [ %.1, %.lr.ph ] - %86 = zext i32 %.0166.lcssa to i64 - %.not = icmp eq i64 %indvars.iv268, %86 - br i1 %.not, label %105, label %87 - -87: ; preds = %._crit_edge - %88 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv268 - %89 = load i32, ptr %88, align 4 - %90 = sext i32 %.0166.lcssa to i64 - %91 = getelementptr inbounds i32, ptr %3, i64 %90 - %92 = load i32, ptr %91, align 4 - store i32 %92, ptr %88, align 4 - store i32 %89, ptr %91, align 4 +._crit_edge: ; preds = %.lr.ph, %78 + %.0166.lcssa = phi i32 [ %indvars290, %78 ], [ %.1, %.lr.ph ] + %87 = zext i32 %.0166.lcssa to i64 + %.not = icmp eq i64 %indvars.iv268, %87 + br i1 %.not, label %106, label %88 + +88: ; preds = %._crit_edge + %89 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv268 + %90 = load i32, ptr %89, align 4 + %91 = sext i32 %.0166.lcssa to i64 + %92 = getelementptr inbounds i32, ptr %3, i64 %91 + %93 = load i32, ptr %92, align 4 + store i32 %93, ptr %89, align 4 + store i32 %90, ptr %92, align 4 br i1 %.not223, label %._crit_edge231, label %.lr.ph230 -.lr.ph230: ; preds = %87 - %93 = mul nuw nsw i64 %indvars.iv268, %15 - %94 = mul nsw i32 %.0166.lcssa, %0 - %95 = sext i32 %94 to i64 - %invariant.gep = getelementptr inbounds nuw double, ptr %2, i64 %93 - %invariant.gep295 = getelementptr double, ptr %2, i64 %95 - br label %96 +.lr.ph230: ; preds = %88 + %94 = mul nuw nsw i64 %indvars.iv268, %15 + %95 = mul nsw i32 %.0166.lcssa, %0 + %96 = sext i32 %95 to i64 + %invariant.gep = getelementptr inbounds nuw double, ptr %2, i64 %94 + %invariant.gep295 = getelementptr double, ptr %2, i64 %96 + br label %97 -96: ; preds = %.lr.ph230, %96 - %indvars.iv263 = phi i64 [ 0, %.lr.ph230 ], [ %indvars.iv.next264, %96 ] +97: ; preds = %.lr.ph230, %97 + %indvars.iv263 = phi i64 [ 0, %.lr.ph230 ], [ %indvars.iv.next264, %97 ] %gep = getelementptr inbounds nuw double, ptr %invariant.gep, i64 %indvars.iv263 - %97 = load double, ptr %gep, align 8 + %98 = load double, ptr %gep, align 8 %gep296 = getelementptr double, ptr %invariant.gep295, i64 %indvars.iv263 - %98 = load double, ptr %gep296, align 8 - store double %98, ptr %gep, align 8 - store double %97, ptr %gep296, align 8 + %99 = load double, ptr %gep296, align 8 + store double %99, ptr %gep, align 8 + store double %98, ptr %gep296, align 8 %indvars.iv.next264 = add nuw nsw i64 %indvars.iv263, 1 %exitcond267.not = icmp eq i64 %indvars.iv.next264, %wide.trip.count.i - br i1 %exitcond267.not, label %._crit_edge231, label %96, !llvm.loop !64 - -._crit_edge231: ; preds = %96, %87 - %99 = getelementptr inbounds nuw double, ptr %4, i64 %indvars.iv268 - %100 = load double, ptr %99, align 8 - %101 = getelementptr inbounds double, ptr %4, i64 %90 - store double %100, ptr %101, align 8 - %102 = getelementptr inbounds nuw double, ptr %6, i64 %indvars.iv268 - %103 = load double, ptr %102, align 8 - %104 = getelementptr inbounds double, ptr %6, i64 %90 - store double %103, ptr %104, align 8 - br label %105 - -105: ; preds = %._crit_edge231, %._crit_edge - %106 = sub nsw i64 %15, %indvars.iv268 - %107 = mul nuw nsw i64 %indvars.iv268, %15 - %108 = mul nuw i32 %16, %indvars290 - %109 = zext nneg i32 %108 to i64 - %110 = getelementptr inbounds nuw double, ptr %2, i64 %109 - %111 = trunc nsw i64 %106 to i32 - %112 = sitofp i32 %111 to double - %113 = fdiv double 0x5FEFFFFFFFFFFFFF, %112 - %114 = icmp sgt i64 %106, 0 - br i1 %114, label %.lr.ph.i184, label %.thread.i178 - -.lr.ph.i184: ; preds = %105, %143 - %indvars.iv.i185 = phi i64 [ %indvars.iv.next.i196, %143 ], [ 0, %105 ] - %.076.i186 = phi double [ %.1.i195, %143 ], [ 0.000000e+00, %105 ] - %.06075.i187 = phi double [ %.161.i194, %143 ], [ 0.000000e+00, %105 ] - %.06374.i188 = phi double [ %.164.i193, %143 ], [ 0.000000e+00, %105 ] - %.06573.i189 = phi double [ %.166.i192, %143 ], [ 0.000000e+00, %105 ] - %.06772.i190 = phi double [ %.168.i191, %143 ], [ 0.000000e+00, %105 ] - %115 = getelementptr inbounds nuw double, ptr %110, i64 %indvars.iv.i185 - %116 = load double, ptr %115, align 8 - %117 = tail call double @llvm.fabs.f64(double %116) - %118 = fcmp ogt double %117, 0x2000000000000000 - br i1 %118, label %119, label %132 - -119: ; preds = %.lr.ph.i184 - %120 = fcmp olt double %117, %113 - br i1 %120, label %121, label %123 - -121: ; preds = %119 - %122 = tail call double @llvm.fmuladd.f64(double %116, double %116, double %.06573.i189) - br label %143 - -123: ; preds = %119 - %124 = fcmp ogt double %117, %.06075.i187 - br i1 %124, label %125, label %129 - -125: ; preds = %123 - %126 = fdiv double %.06075.i187, %117 - %127 = fmul double %.06772.i190, %126 - %128 = tail call double @llvm.fmuladd.f64(double %127, double %126, double 1.000000e+00) - br label %143 - -129: ; preds = %123 - %130 = fdiv double %117, %.06075.i187 - %131 = tail call double @llvm.fmuladd.f64(double %130, double %130, double %.06772.i190) - br label %143 - -132: ; preds = %.lr.ph.i184 - %133 = fcmp ogt double %117, %.076.i186 - br i1 %133, label %134, label %138 - -134: ; preds = %132 - %135 = fdiv double %.076.i186, %117 - %136 = fmul double %.06374.i188, %135 - %137 = tail call double @llvm.fmuladd.f64(double %136, double %135, double 1.000000e+00) - br label %143 - -138: ; preds = %132 - %139 = fcmp une double %116, 0.000000e+00 - br i1 %139, label %140, label %143 - -140: ; preds = %138 - %141 = fdiv double %117, %.076.i186 - %142 = tail call double @llvm.fmuladd.f64(double %141, double %141, double %.06374.i188) - br label %143 - -143: ; preds = %140, %138, %134, %129, %125, %121 - %.168.i191 = phi double [ %.06772.i190, %121 ], [ %128, %125 ], [ %131, %129 ], [ %.06772.i190, %134 ], [ %.06772.i190, %140 ], [ %.06772.i190, %138 ] - %.166.i192 = phi double [ %122, %121 ], [ %.06573.i189, %125 ], [ %.06573.i189, %129 ], [ %.06573.i189, %134 ], [ %.06573.i189, %140 ], [ %.06573.i189, %138 ] - %.164.i193 = phi double [ %.06374.i188, %121 ], [ %.06374.i188, %125 ], [ %.06374.i188, %129 ], [ %137, %134 ], [ %142, %140 ], [ %.06374.i188, %138 ] - %.161.i194 = phi double [ %.06075.i187, %121 ], [ %117, %125 ], [ %.06075.i187, %129 ], [ %.06075.i187, %134 ], [ %.06075.i187, %140 ], [ %.06075.i187, %138 ] - %.1.i195 = phi double [ %.076.i186, %121 ], [ %.076.i186, %125 ], [ %.076.i186, %129 ], [ %117, %134 ], [ %.076.i186, %140 ], [ %.076.i186, %138 ] + br i1 %exitcond267.not, label %._crit_edge231, label %97, !llvm.loop !64 + +._crit_edge231: ; preds = %97, %88 + %100 = getelementptr inbounds nuw double, ptr %4, i64 %indvars.iv268 + %101 = load double, ptr %100, align 8 + %102 = getelementptr inbounds double, ptr %4, i64 %91 + store double %101, ptr %102, align 8 + %103 = getelementptr inbounds nuw double, ptr %6, i64 %indvars.iv268 + %104 = load double, ptr %103, align 8 + %105 = getelementptr inbounds double, ptr %6, i64 %91 + store double %104, ptr %105, align 8 + br label %106 + +106: ; preds = %._crit_edge231, %._crit_edge + %107 = sub nsw i64 %15, %indvars.iv268 + %108 = mul nuw nsw i64 %indvars.iv268, %15 + %109 = mul nuw i32 %17, %indvars290 + %110 = zext nneg i32 %109 to i64 + %111 = getelementptr inbounds nuw double, ptr %2, i64 %110 + %112 = trunc nsw i64 %107 to i32 + %113 = sitofp i32 %112 to double + %114 = fdiv double 0x5FEFFFFFFFFFFFFF, %113 + %115 = icmp sgt i64 %107, 0 + br i1 %115, label %.lr.ph.i184, label %.thread.i178 + +.lr.ph.i184: ; preds = %106, %144 + %indvars.iv.i185 = phi i64 [ %indvars.iv.next.i196, %144 ], [ 0, %106 ] + %.076.i186 = phi double [ %.1.i195, %144 ], [ 0.000000e+00, %106 ] + %.06075.i187 = phi double [ %.161.i194, %144 ], [ 0.000000e+00, %106 ] + %.06374.i188 = phi double [ %.164.i193, %144 ], [ 0.000000e+00, %106 ] + %.06573.i189 = phi double [ %.166.i192, %144 ], [ 0.000000e+00, %106 ] + %.06772.i190 = phi double [ %.168.i191, %144 ], [ 0.000000e+00, %106 ] + %116 = getelementptr inbounds nuw double, ptr %111, i64 %indvars.iv.i185 + %117 = load double, ptr %116, align 8 + %118 = tail call double @llvm.fabs.f64(double %117) + %119 = fcmp ogt double %118, 0x2000000000000000 + br i1 %119, label %120, label %133 + +120: ; preds = %.lr.ph.i184 + %121 = fcmp olt double %118, %114 + br i1 %121, label %122, label %124 + +122: ; preds = %120 + %123 = tail call double @llvm.fmuladd.f64(double %117, double %117, double %.06573.i189) + br label %144 + +124: ; preds = %120 + %125 = fcmp ogt double %118, %.06075.i187 + br i1 %125, label %126, label %130 + +126: ; preds = %124 + %127 = fdiv double %.06075.i187, %118 + %128 = fmul double %.06772.i190, %127 + %129 = tail call double @llvm.fmuladd.f64(double %128, double %127, double 1.000000e+00) + br label %144 + +130: ; preds = %124 + %131 = fdiv double %118, %.06075.i187 + %132 = tail call double @llvm.fmuladd.f64(double %131, double %131, double %.06772.i190) + br label %144 + +133: ; preds = %.lr.ph.i184 + %134 = fcmp ogt double %118, %.076.i186 + br i1 %134, label %135, label %139 + +135: ; preds = %133 + %136 = fdiv double %.076.i186, %118 + %137 = fmul double %.06374.i188, %136 + %138 = tail call double @llvm.fmuladd.f64(double %137, double %136, double 1.000000e+00) + br label %144 + +139: ; preds = %133 + %140 = fcmp une double %117, 0.000000e+00 + br i1 %140, label %141, label %144 + +141: ; preds = %139 + %142 = fdiv double %118, %.076.i186 + %143 = tail call double @llvm.fmuladd.f64(double %142, double %142, double %.06374.i188) + br label %144 + +144: ; preds = %141, %139, %135, %130, %126, %122 + %.168.i191 = phi double [ %.06772.i190, %122 ], [ %129, %126 ], [ %132, %130 ], [ %.06772.i190, %135 ], [ %.06772.i190, %141 ], [ %.06772.i190, %139 ] + %.166.i192 = phi double [ %123, %122 ], [ %.06573.i189, %126 ], [ %.06573.i189, %130 ], [ %.06573.i189, %135 ], [ %.06573.i189, %141 ], [ %.06573.i189, %139 ] + %.164.i193 = phi double [ %.06374.i188, %122 ], [ %.06374.i188, %126 ], [ %.06374.i188, %130 ], [ %138, %135 ], [ %143, %141 ], [ %.06374.i188, %139 ] + %.161.i194 = phi double [ %.06075.i187, %122 ], [ %118, %126 ], [ %.06075.i187, %130 ], [ %.06075.i187, %135 ], [ %.06075.i187, %141 ], [ %.06075.i187, %139 ] + %.1.i195 = phi double [ %.076.i186, %122 ], [ %.076.i186, %126 ], [ %.076.i186, %130 ], [ %118, %135 ], [ %.076.i186, %141 ], [ %.076.i186, %139 ] %indvars.iv.next.i196 = add nuw nsw i64 %indvars.iv.i185, 1 - %exitcond.not.i197 = icmp eq i64 %indvars.iv.next.i196, %106 + %exitcond.not.i197 = icmp eq i64 %indvars.iv.next.i196, %107 br i1 %exitcond.not.i197, label %._crit_edge.i198, label %.lr.ph.i184, !llvm.loop !28 -._crit_edge.i198: ; preds = %143 - %144 = fcmp une double %.168.i191, 0.000000e+00 - br i1 %144, label %145, label %151 +._crit_edge.i198: ; preds = %144 + %145 = fcmp une double %.168.i191, 0.000000e+00 + br i1 %145, label %146, label %152 -145: ; preds = %._crit_edge.i198 - %146 = fdiv double %.166.i192, %.161.i194 - %147 = fdiv double %146, %.161.i194 - %148 = fadd double %.168.i191, %147 - %149 = tail call double @sqrt(double noundef %148) #13 - %150 = fmul double %.161.i194, %149 +146: ; preds = %._crit_edge.i198 + %147 = fdiv double %.166.i192, %.161.i194 + %148 = fdiv double %147, %.161.i194 + %149 = fadd double %.168.i191, %148 + %150 = tail call double @sqrt(double noundef %149) #13 + %151 = fmul double %.161.i194, %150 br label %_Z8lm_enormiPKd.exit199 -151: ; preds = %._crit_edge.i198 - %152 = fcmp une double %.166.i192, 0.000000e+00 - br i1 %152, label %153, label %.thread.i178 +152: ; preds = %._crit_edge.i198 + %153 = fcmp une double %.166.i192, 0.000000e+00 + br i1 %153, label %154, label %.thread.i178 -153: ; preds = %151 - %154 = fcmp ult double %.166.i192, %.1.i195 - br i1 %154, label %161, label %155 +154: ; preds = %152 + %155 = fcmp ult double %.166.i192, %.1.i195 + br i1 %155, label %162, label %156 -155: ; preds = %153 - %156 = fdiv double %.1.i195, %.166.i192 - %157 = fmul double %.164.i193, %.1.i195 - %158 = tail call double @llvm.fmuladd.f64(double %156, double %157, double 1.000000e+00) - %159 = fmul double %.166.i192, %158 - %160 = tail call double @sqrt(double noundef %159) #13 +156: ; preds = %154 + %157 = fdiv double %.1.i195, %.166.i192 + %158 = fmul double %.164.i193, %.1.i195 + %159 = tail call double @llvm.fmuladd.f64(double %157, double %158, double 1.000000e+00) + %160 = fmul double %.166.i192, %159 + %161 = tail call double @sqrt(double noundef %160) #13 br label %_Z8lm_enormiPKd.exit199 -161: ; preds = %153 - %162 = fdiv double %.166.i192, %.1.i195 - %163 = tail call double @llvm.fmuladd.f64(double %.1.i195, double %.164.i193, double %162) - %164 = fmul double %.1.i195, %163 - %165 = tail call double @sqrt(double noundef %164) #13 +162: ; preds = %154 + %163 = fdiv double %.166.i192, %.1.i195 + %164 = tail call double @llvm.fmuladd.f64(double %.1.i195, double %.164.i193, double %163) + %165 = fmul double %.1.i195, %164 + %166 = tail call double @sqrt(double noundef %165) #13 br label %_Z8lm_enormiPKd.exit199 -.thread.i178: ; preds = %151, %105 - %.063.lcssa8894.i179 = phi double [ %.164.i193, %151 ], [ 0.000000e+00, %105 ] - %.0.lcssa8993.i180 = phi double [ %.1.i195, %151 ], [ 0.000000e+00, %105 ] - %166 = tail call double @sqrt(double noundef %.063.lcssa8894.i179) #13 - %167 = fmul double %.0.lcssa8993.i180, %166 +.thread.i178: ; preds = %152, %106 + %.063.lcssa8894.i179 = phi double [ %.164.i193, %152 ], [ 0.000000e+00, %106 ] + %.0.lcssa8993.i180 = phi double [ %.1.i195, %152 ], [ 0.000000e+00, %106 ] + %167 = tail call double @sqrt(double noundef %.063.lcssa8894.i179) #13 + %168 = fmul double %.0.lcssa8993.i180, %167 br label %_Z8lm_enormiPKd.exit199 -_Z8lm_enormiPKd.exit199: ; preds = %145, %155, %161, %.thread.i178 - %.062.i181 = phi double [ %150, %145 ], [ %160, %155 ], [ %165, %161 ], [ %167, %.thread.i178 ] - %168 = fcmp oeq double %.062.i181, 0.000000e+00 - br i1 %168, label %278, label %169 - -169: ; preds = %_Z8lm_enormiPKd.exit199 - %170 = load double, ptr %110, align 8 - %171 = fcmp olt double %170, 0.000000e+00 - %172 = fneg double %.062.i181 - %.0165 = select i1 %171, double %172, double %.062.i181 - %173 = icmp samesign ult i64 %indvars.iv268, %wide.trip.count.i - br i1 %173, label %.lr.ph234.preheader, label %._crit_edge235 - -.lr.ph234.preheader: ; preds = %169 - %174 = and i64 %107, 4294967295 - %invariant.gep297 = getelementptr inbounds nuw double, ptr %2, i64 %174 +_Z8lm_enormiPKd.exit199: ; preds = %146, %156, %162, %.thread.i178 + %.062.i181 = phi double [ %151, %146 ], [ %161, %156 ], [ %166, %162 ], [ %168, %.thread.i178 ] + %169 = fcmp oeq double %.062.i181, 0.000000e+00 + br i1 %169, label %279, label %170 + +170: ; preds = %_Z8lm_enormiPKd.exit199 + %171 = load double, ptr %111, align 8 + %172 = fcmp olt double %171, 0.000000e+00 + %173 = fneg double %.062.i181 + %.0165 = select i1 %172, double %173, double %.062.i181 + %174 = icmp samesign ult i64 %indvars.iv268, %15 + br i1 %174, label %.lr.ph234.preheader, label %._crit_edge235 + +.lr.ph234.preheader: ; preds = %170 + %175 = and i64 %108, 4294967295 + %invariant.gep297 = getelementptr inbounds nuw double, ptr %2, i64 %175 br label %.lr.ph234 .lr.ph234: ; preds = %.lr.ph234.preheader, %.lr.ph234 %indvars.iv270 = phi i64 [ %indvars.iv268, %.lr.ph234.preheader ], [ %indvars.iv.next271, %.lr.ph234 ] %gep298 = getelementptr inbounds nuw double, ptr %invariant.gep297, i64 %indvars.iv270 - %175 = load double, ptr %gep298, align 8 - %176 = fdiv double %175, %.0165 - store double %176, ptr %gep298, align 8 + %176 = load double, ptr %gep298, align 8 + %177 = fdiv double %176, %.0165 + store double %177, ptr %gep298, align 8 %indvars.iv.next271 = add nuw nsw i64 %indvars.iv270, 1 %exitcond274.not = icmp eq i64 %indvars.iv.next271, %wide.trip.count.i br i1 %exitcond274.not, label %._crit_edge235.loopexit, label %.lr.ph234, !llvm.loop !65 ._crit_edge235.loopexit: ; preds = %.lr.ph234 - %.pre = load double, ptr %110, align 8 + %.pre = load double, ptr %111, align 8 br label %._crit_edge235 -._crit_edge235: ; preds = %._crit_edge235.loopexit, %169 - %177 = phi double [ %.pre, %._crit_edge235.loopexit ], [ %170, %169 ] - %178 = fadd double %177, 1.000000e+00 - store double %178, ptr %110, align 8 - br i1 %78, label %.preheader.lr.ph, label %._crit_edge246 +._crit_edge235: ; preds = %._crit_edge235.loopexit, %170 + %178 = phi double [ %.pre, %._crit_edge235.loopexit ], [ %171, %170 ] + %179 = fadd double %178, 1.000000e+00 + store double %179, ptr %111, align 8 + br i1 %79, label %.preheader.lr.ph, label %._crit_edge246 .preheader.lr.ph: ; preds = %._crit_edge235 - %179 = add nsw i64 %106, -1 - %180 = trunc nsw i64 %179 to i32 - %181 = sitofp i32 %180 to double - %182 = fdiv double 0x5FEFFFFFFFFFFFFF, %181 - %183 = icmp sgt i64 %106, 1 - %184 = and i64 %107, 4294967295 - %invariant.gep299 = getelementptr inbounds nuw double, ptr %2, i64 %184 - %invariant.gep303 = getelementptr inbounds nuw double, ptr %2, i64 %184 + %180 = add nsw i64 %107, -1 + %181 = trunc nsw i64 %180 to i32 + %182 = sitofp i32 %181 to double + %183 = fdiv double 0x5FEFFFFFFFFFFFFF, %182 + %184 = icmp sgt i64 %107, 1 + %185 = and i64 %108, 4294967295 + %invariant.gep299 = getelementptr inbounds nuw double, ptr %2, i64 %185 + %invariant.gep303 = getelementptr inbounds nuw double, ptr %2, i64 %185 %invariant.gep307 = getelementptr inbounds nuw double, ptr %2, i64 %indvars.iv268 br label %.preheader -.preheader: ; preds = %.preheader.lr.ph, %276 - %indvars.iv285 = phi i64 [ %indvars.iv256, %.preheader.lr.ph ], [ %indvars.iv.next286, %276 ] - br i1 %173, label %.lr.ph238, label %._crit_edge244 +.preheader: ; preds = %.preheader.lr.ph, %277 + %indvars.iv285 = phi i64 [ %indvars.iv256, %.preheader.lr.ph ], [ %indvars.iv.next286, %277 ] + br i1 %174, label %.lr.ph238, label %._crit_edge244 .lr.ph238: ; preds = %.preheader - %185 = mul nuw nsw i64 %indvars.iv285, %wide.trip.count.i - %invariant.gep301 = getelementptr inbounds nuw double, ptr %2, i64 %185 - br label %186 + %186 = mul nuw nsw i64 %indvars.iv285, %wide.trip.count.i + %invariant.gep301 = getelementptr inbounds nuw double, ptr %2, i64 %186 + br label %187 -186: ; preds = %.lr.ph238, %186 - %indvars.iv275 = phi i64 [ %indvars.iv268, %.lr.ph238 ], [ %indvars.iv.next276, %186 ] - %.0164237 = phi double [ 0.000000e+00, %.lr.ph238 ], [ %189, %186 ] +187: ; preds = %.lr.ph238, %187 + %indvars.iv275 = phi i64 [ %indvars.iv268, %.lr.ph238 ], [ %indvars.iv.next276, %187 ] + %.0164237 = phi double [ 0.000000e+00, %.lr.ph238 ], [ %190, %187 ] %gep300 = getelementptr inbounds nuw double, ptr %invariant.gep299, i64 %indvars.iv275 - %187 = load double, ptr %gep300, align 8 + %188 = load double, ptr %gep300, align 8 %gep302 = getelementptr inbounds nuw double, ptr %invariant.gep301, i64 %indvars.iv275 - %188 = load double, ptr %gep302, align 8 - %189 = tail call double @llvm.fmuladd.f64(double %187, double %188, double %.0164237) + %189 = load double, ptr %gep302, align 8 + %190 = tail call double @llvm.fmuladd.f64(double %188, double %189, double %.0164237) %indvars.iv.next276 = add nuw nsw i64 %indvars.iv275, 1 %exitcond279.not = icmp eq i64 %indvars.iv.next276, %wide.trip.count.i - br i1 %exitcond279.not, label %.lr.ph243, label %186, !llvm.loop !66 - -.lr.ph243: ; preds = %186 - %190 = load double, ptr %110, align 8 - %191 = mul nuw nsw i64 %indvars.iv285, %wide.trip.count.i - %192 = fneg double %189 - %193 = fdiv double %192, %190 - %invariant.gep305 = getelementptr inbounds nuw double, ptr %2, i64 %191 - br label %194 - -194: ; preds = %.lr.ph243, %194 - %indvars.iv280 = phi i64 [ %indvars.iv268, %.lr.ph243 ], [ %indvars.iv.next281, %194 ] + br i1 %exitcond279.not, label %.lr.ph243, label %187, !llvm.loop !66 + +.lr.ph243: ; preds = %187 + %191 = load double, ptr %111, align 8 + %192 = mul nuw nsw i64 %indvars.iv285, %wide.trip.count.i + %193 = fneg double %190 + %194 = fdiv double %193, %191 + %invariant.gep305 = getelementptr inbounds nuw double, ptr %2, i64 %192 + br label %195 + +195: ; preds = %.lr.ph243, %195 + %indvars.iv280 = phi i64 [ %indvars.iv268, %.lr.ph243 ], [ %indvars.iv.next281, %195 ] %gep304 = getelementptr inbounds nuw double, ptr %invariant.gep303, i64 %indvars.iv280 - %195 = load double, ptr %gep304, align 8 + %196 = load double, ptr %gep304, align 8 %gep306 = getelementptr inbounds nuw double, ptr %invariant.gep305, i64 %indvars.iv280 - %196 = load double, ptr %gep306, align 8 - %197 = tail call double @llvm.fmuladd.f64(double %193, double %195, double %196) - store double %197, ptr %gep306, align 8 + %197 = load double, ptr %gep306, align 8 + %198 = tail call double @llvm.fmuladd.f64(double %194, double %196, double %197) + store double %198, ptr %gep306, align 8 %indvars.iv.next281 = add nuw nsw i64 %indvars.iv280, 1 %exitcond284.not = icmp eq i64 %indvars.iv.next281, %wide.trip.count.i - br i1 %exitcond284.not, label %._crit_edge244, label %194, !llvm.loop !67 - -._crit_edge244: ; preds = %194, %.preheader - %198 = getelementptr inbounds nuw double, ptr %4, i64 %indvars.iv285 - %199 = load double, ptr %198, align 8 - %200 = fcmp une double %199, 0.000000e+00 - br i1 %200, label %201, label %276 - -201: ; preds = %._crit_edge244 - %202 = mul nuw nsw i64 %indvars.iv285, %wide.trip.count.i - %gep308 = getelementptr inbounds nuw double, ptr %invariant.gep307, i64 %202 - %203 = load double, ptr %gep308, align 8 - %204 = fdiv double %203, %199 - %205 = tail call double @llvm.fabs.f64(double %204) - %206 = fcmp olt double %205, 1.000000e+00 - br i1 %206, label %207, label %.thread - -207: ; preds = %201 - %208 = fneg double %204 - %209 = tail call double @llvm.fmuladd.f64(double %208, double %204, double 1.000000e+00) - %210 = tail call double @sqrt(double noundef %209) #13 - %211 = load double, ptr %198, align 8 - %212 = fmul double %210, %211 - store double %212, ptr %198, align 8 - %213 = getelementptr inbounds nuw double, ptr %6, i64 %indvars.iv285 - %214 = load double, ptr %213, align 8 - %215 = fdiv double %212, %214 - %216 = fcmp oeq double %215, 0.000000e+00 - br i1 %216, label %.thread, label %217 - -217: ; preds = %207 - %218 = fmul double %215, 5.000000e-02 - %219 = fmul double %215, %218 - %220 = fcmp ugt double %219, 0x3CB0000000000000 - br i1 %220, label %276, label %.thread - -.thread: ; preds = %201, %217, %207 - %221 = getelementptr inbounds nuw i8, ptr %gep308, i64 8 - br i1 %183, label %.lr.ph.i206, label %.thread.i200 - -.lr.ph.i206: ; preds = %.thread, %250 - %indvars.iv.i207 = phi i64 [ %indvars.iv.next.i218, %250 ], [ 0, %.thread ] - %.076.i208 = phi double [ %.1.i217, %250 ], [ 0.000000e+00, %.thread ] - %.06075.i209 = phi double [ %.161.i216, %250 ], [ 0.000000e+00, %.thread ] - %.06374.i210 = phi double [ %.164.i215, %250 ], [ 0.000000e+00, %.thread ] - %.06573.i211 = phi double [ %.166.i214, %250 ], [ 0.000000e+00, %.thread ] - %.06772.i212 = phi double [ %.168.i213, %250 ], [ 0.000000e+00, %.thread ] - %222 = getelementptr inbounds nuw double, ptr %221, i64 %indvars.iv.i207 - %223 = load double, ptr %222, align 8 - %224 = tail call double @llvm.fabs.f64(double %223) - %225 = fcmp ogt double %224, 0x2000000000000000 - br i1 %225, label %226, label %239 - -226: ; preds = %.lr.ph.i206 - %227 = fcmp olt double %224, %182 - br i1 %227, label %228, label %230 - -228: ; preds = %226 - %229 = tail call double @llvm.fmuladd.f64(double %223, double %223, double %.06573.i211) - br label %250 - -230: ; preds = %226 - %231 = fcmp ogt double %224, %.06075.i209 - br i1 %231, label %232, label %236 - -232: ; preds = %230 - %233 = fdiv double %.06075.i209, %224 - %234 = fmul double %.06772.i212, %233 - %235 = tail call double @llvm.fmuladd.f64(double %234, double %233, double 1.000000e+00) - br label %250 - -236: ; preds = %230 - %237 = fdiv double %224, %.06075.i209 - %238 = tail call double @llvm.fmuladd.f64(double %237, double %237, double %.06772.i212) - br label %250 - -239: ; preds = %.lr.ph.i206 - %240 = fcmp ogt double %224, %.076.i208 - br i1 %240, label %241, label %245 - -241: ; preds = %239 - %242 = fdiv double %.076.i208, %224 - %243 = fmul double %.06374.i210, %242 - %244 = tail call double @llvm.fmuladd.f64(double %243, double %242, double 1.000000e+00) - br label %250 - -245: ; preds = %239 - %246 = fcmp une double %223, 0.000000e+00 - br i1 %246, label %247, label %250 - -247: ; preds = %245 - %248 = fdiv double %224, %.076.i208 - %249 = tail call double @llvm.fmuladd.f64(double %248, double %248, double %.06374.i210) - br label %250 - -250: ; preds = %247, %245, %241, %236, %232, %228 - %.168.i213 = phi double [ %.06772.i212, %228 ], [ %235, %232 ], [ %238, %236 ], [ %.06772.i212, %241 ], [ %.06772.i212, %247 ], [ %.06772.i212, %245 ] - %.166.i214 = phi double [ %229, %228 ], [ %.06573.i211, %232 ], [ %.06573.i211, %236 ], [ %.06573.i211, %241 ], [ %.06573.i211, %247 ], [ %.06573.i211, %245 ] - %.164.i215 = phi double [ %.06374.i210, %228 ], [ %.06374.i210, %232 ], [ %.06374.i210, %236 ], [ %244, %241 ], [ %249, %247 ], [ %.06374.i210, %245 ] - %.161.i216 = phi double [ %.06075.i209, %228 ], [ %224, %232 ], [ %.06075.i209, %236 ], [ %.06075.i209, %241 ], [ %.06075.i209, %247 ], [ %.06075.i209, %245 ] - %.1.i217 = phi double [ %.076.i208, %228 ], [ %.076.i208, %232 ], [ %.076.i208, %236 ], [ %224, %241 ], [ %.076.i208, %247 ], [ %.076.i208, %245 ] + br i1 %exitcond284.not, label %._crit_edge244, label %195, !llvm.loop !67 + +._crit_edge244: ; preds = %195, %.preheader + %199 = getelementptr inbounds nuw double, ptr %4, i64 %indvars.iv285 + %200 = load double, ptr %199, align 8 + %201 = fcmp une double %200, 0.000000e+00 + br i1 %201, label %202, label %277 + +202: ; preds = %._crit_edge244 + %203 = mul nuw nsw i64 %indvars.iv285, %wide.trip.count.i + %gep308 = getelementptr inbounds nuw double, ptr %invariant.gep307, i64 %203 + %204 = load double, ptr %gep308, align 8 + %205 = fdiv double %204, %200 + %206 = tail call double @llvm.fabs.f64(double %205) + %207 = fcmp olt double %206, 1.000000e+00 + br i1 %207, label %208, label %.thread + +208: ; preds = %202 + %209 = fneg double %205 + %210 = tail call double @llvm.fmuladd.f64(double %209, double %205, double 1.000000e+00) + %211 = tail call double @sqrt(double noundef %210) #13 + %212 = load double, ptr %199, align 8 + %213 = fmul double %211, %212 + store double %213, ptr %199, align 8 + %214 = getelementptr inbounds nuw double, ptr %6, i64 %indvars.iv285 + %215 = load double, ptr %214, align 8 + %216 = fdiv double %213, %215 + %217 = fcmp oeq double %216, 0.000000e+00 + br i1 %217, label %.thread, label %218 + +218: ; preds = %208 + %219 = fmul double %216, 5.000000e-02 + %220 = fmul double %216, %219 + %221 = fcmp ugt double %220, 0x3CB0000000000000 + br i1 %221, label %277, label %.thread + +.thread: ; preds = %202, %218, %208 + %222 = getelementptr inbounds nuw i8, ptr %gep308, i64 8 + br i1 %184, label %.lr.ph.i206, label %.thread.i200 + +.lr.ph.i206: ; preds = %.thread, %251 + %indvars.iv.i207 = phi i64 [ %indvars.iv.next.i218, %251 ], [ 0, %.thread ] + %.076.i208 = phi double [ %.1.i217, %251 ], [ 0.000000e+00, %.thread ] + %.06075.i209 = phi double [ %.161.i216, %251 ], [ 0.000000e+00, %.thread ] + %.06374.i210 = phi double [ %.164.i215, %251 ], [ 0.000000e+00, %.thread ] + %.06573.i211 = phi double [ %.166.i214, %251 ], [ 0.000000e+00, %.thread ] + %.06772.i212 = phi double [ %.168.i213, %251 ], [ 0.000000e+00, %.thread ] + %223 = getelementptr inbounds nuw double, ptr %222, i64 %indvars.iv.i207 + %224 = load double, ptr %223, align 8 + %225 = tail call double @llvm.fabs.f64(double %224) + %226 = fcmp ogt double %225, 0x2000000000000000 + br i1 %226, label %227, label %240 + +227: ; preds = %.lr.ph.i206 + %228 = fcmp olt double %225, %183 + br i1 %228, label %229, label %231 + +229: ; preds = %227 + %230 = tail call double @llvm.fmuladd.f64(double %224, double %224, double %.06573.i211) + br label %251 + +231: ; preds = %227 + %232 = fcmp ogt double %225, %.06075.i209 + br i1 %232, label %233, label %237 + +233: ; preds = %231 + %234 = fdiv double %.06075.i209, %225 + %235 = fmul double %.06772.i212, %234 + %236 = tail call double @llvm.fmuladd.f64(double %235, double %234, double 1.000000e+00) + br label %251 + +237: ; preds = %231 + %238 = fdiv double %225, %.06075.i209 + %239 = tail call double @llvm.fmuladd.f64(double %238, double %238, double %.06772.i212) + br label %251 + +240: ; preds = %.lr.ph.i206 + %241 = fcmp ogt double %225, %.076.i208 + br i1 %241, label %242, label %246 + +242: ; preds = %240 + %243 = fdiv double %.076.i208, %225 + %244 = fmul double %.06374.i210, %243 + %245 = tail call double @llvm.fmuladd.f64(double %244, double %243, double 1.000000e+00) + br label %251 + +246: ; preds = %240 + %247 = fcmp une double %224, 0.000000e+00 + br i1 %247, label %248, label %251 + +248: ; preds = %246 + %249 = fdiv double %225, %.076.i208 + %250 = tail call double @llvm.fmuladd.f64(double %249, double %249, double %.06374.i210) + br label %251 + +251: ; preds = %248, %246, %242, %237, %233, %229 + %.168.i213 = phi double [ %.06772.i212, %229 ], [ %236, %233 ], [ %239, %237 ], [ %.06772.i212, %242 ], [ %.06772.i212, %248 ], [ %.06772.i212, %246 ] + %.166.i214 = phi double [ %230, %229 ], [ %.06573.i211, %233 ], [ %.06573.i211, %237 ], [ %.06573.i211, %242 ], [ %.06573.i211, %248 ], [ %.06573.i211, %246 ] + %.164.i215 = phi double [ %.06374.i210, %229 ], [ %.06374.i210, %233 ], [ %.06374.i210, %237 ], [ %245, %242 ], [ %250, %248 ], [ %.06374.i210, %246 ] + %.161.i216 = phi double [ %.06075.i209, %229 ], [ %225, %233 ], [ %.06075.i209, %237 ], [ %.06075.i209, %242 ], [ %.06075.i209, %248 ], [ %.06075.i209, %246 ] + %.1.i217 = phi double [ %.076.i208, %229 ], [ %.076.i208, %233 ], [ %.076.i208, %237 ], [ %225, %242 ], [ %.076.i208, %248 ], [ %.076.i208, %246 ] %indvars.iv.next.i218 = add nuw nsw i64 %indvars.iv.i207, 1 - %exitcond.not.i219 = icmp eq i64 %indvars.iv.next.i218, %179 + %exitcond.not.i219 = icmp eq i64 %indvars.iv.next.i218, %180 br i1 %exitcond.not.i219, label %._crit_edge.i220, label %.lr.ph.i206, !llvm.loop !28 -._crit_edge.i220: ; preds = %250 - %251 = fcmp une double %.168.i213, 0.000000e+00 - br i1 %251, label %252, label %258 +._crit_edge.i220: ; preds = %251 + %252 = fcmp une double %.168.i213, 0.000000e+00 + br i1 %252, label %253, label %259 -252: ; preds = %._crit_edge.i220 - %253 = fdiv double %.166.i214, %.161.i216 - %254 = fdiv double %253, %.161.i216 - %255 = fadd double %.168.i213, %254 - %256 = tail call double @sqrt(double noundef %255) #13 - %257 = fmul double %.161.i216, %256 +253: ; preds = %._crit_edge.i220 + %254 = fdiv double %.166.i214, %.161.i216 + %255 = fdiv double %254, %.161.i216 + %256 = fadd double %.168.i213, %255 + %257 = tail call double @sqrt(double noundef %256) #13 + %258 = fmul double %.161.i216, %257 br label %_Z8lm_enormiPKd.exit221 -258: ; preds = %._crit_edge.i220 - %259 = fcmp une double %.166.i214, 0.000000e+00 - br i1 %259, label %260, label %.thread.i200 +259: ; preds = %._crit_edge.i220 + %260 = fcmp une double %.166.i214, 0.000000e+00 + br i1 %260, label %261, label %.thread.i200 -260: ; preds = %258 - %261 = fcmp ult double %.166.i214, %.1.i217 - br i1 %261, label %268, label %262 +261: ; preds = %259 + %262 = fcmp ult double %.166.i214, %.1.i217 + br i1 %262, label %269, label %263 -262: ; preds = %260 - %263 = fdiv double %.1.i217, %.166.i214 - %264 = fmul double %.164.i215, %.1.i217 - %265 = tail call double @llvm.fmuladd.f64(double %263, double %264, double 1.000000e+00) - %266 = fmul double %.166.i214, %265 - %267 = tail call double @sqrt(double noundef %266) #13 +263: ; preds = %261 + %264 = fdiv double %.1.i217, %.166.i214 + %265 = fmul double %.164.i215, %.1.i217 + %266 = tail call double @llvm.fmuladd.f64(double %264, double %265, double 1.000000e+00) + %267 = fmul double %.166.i214, %266 + %268 = tail call double @sqrt(double noundef %267) #13 br label %_Z8lm_enormiPKd.exit221 -268: ; preds = %260 - %269 = fdiv double %.166.i214, %.1.i217 - %270 = tail call double @llvm.fmuladd.f64(double %.1.i217, double %.164.i215, double %269) - %271 = fmul double %.1.i217, %270 - %272 = tail call double @sqrt(double noundef %271) #13 +269: ; preds = %261 + %270 = fdiv double %.166.i214, %.1.i217 + %271 = tail call double @llvm.fmuladd.f64(double %.1.i217, double %.164.i215, double %270) + %272 = fmul double %.1.i217, %271 + %273 = tail call double @sqrt(double noundef %272) #13 br label %_Z8lm_enormiPKd.exit221 -.thread.i200: ; preds = %258, %.thread - %.063.lcssa8894.i201 = phi double [ %.164.i215, %258 ], [ 0.000000e+00, %.thread ] - %.0.lcssa8993.i202 = phi double [ %.1.i217, %258 ], [ 0.000000e+00, %.thread ] - %273 = tail call double @sqrt(double noundef %.063.lcssa8894.i201) #13 - %274 = fmul double %.0.lcssa8993.i202, %273 +.thread.i200: ; preds = %259, %.thread + %.063.lcssa8894.i201 = phi double [ %.164.i215, %259 ], [ 0.000000e+00, %.thread ] + %.0.lcssa8993.i202 = phi double [ %.1.i217, %259 ], [ 0.000000e+00, %.thread ] + %274 = tail call double @sqrt(double noundef %.063.lcssa8894.i201) #13 + %275 = fmul double %.0.lcssa8993.i202, %274 br label %_Z8lm_enormiPKd.exit221 -_Z8lm_enormiPKd.exit221: ; preds = %252, %262, %268, %.thread.i200 - %.062.i203 = phi double [ %257, %252 ], [ %267, %262 ], [ %272, %268 ], [ %274, %.thread.i200 ] - store double %.062.i203, ptr %198, align 8 - %275 = getelementptr inbounds nuw double, ptr %6, i64 %indvars.iv285 - store double %.062.i203, ptr %275, align 8 - br label %276 +_Z8lm_enormiPKd.exit221: ; preds = %253, %263, %269, %.thread.i200 + %.062.i203 = phi double [ %258, %253 ], [ %268, %263 ], [ %273, %269 ], [ %275, %.thread.i200 ] + store double %.062.i203, ptr %199, align 8 + %276 = getelementptr inbounds nuw double, ptr %6, i64 %indvars.iv285 + store double %.062.i203, ptr %276, align 8 + br label %277 -276: ; preds = %._crit_edge244, %_Z8lm_enormiPKd.exit221, %217 +277: ; preds = %._crit_edge244, %_Z8lm_enormiPKd.exit221, %218 %indvars.iv.next286 = add nuw nsw i64 %indvars.iv285, 1 %exitcond289.not = icmp eq i64 %indvars.iv.next286, %wide.trip.count254 br i1 %exitcond289.not, label %._crit_edge246, label %.preheader, !llvm.loop !68 -._crit_edge246: ; preds = %276, %._crit_edge235 - %277 = fneg double %.0165 - br label %278 +._crit_edge246: ; preds = %277, %._crit_edge235 + %278 = fneg double %.0165 + br label %279 -278: ; preds = %_Z8lm_enormiPKd.exit199, %._crit_edge246 - %.sink = phi double [ %277, %._crit_edge246 ], [ 0.000000e+00, %_Z8lm_enormiPKd.exit199 ] - %279 = getelementptr inbounds nuw double, ptr %4, i64 %indvars.iv268 - store double %.sink, ptr %279, align 8 +279: ; preds = %_Z8lm_enormiPKd.exit199, %._crit_edge246 + %.sink = phi double [ %278, %._crit_edge246 ], [ 0.000000e+00, %_Z8lm_enormiPKd.exit199 ] + %280 = getelementptr inbounds nuw double, ptr %4, i64 %indvars.iv268 + store double %.sink, ptr %280, align 8 %indvars.iv.next257 = add nuw nsw i64 %indvars.iv256, 1 %exitcond292.not = icmp eq i64 %indvars.iv.next269, %wide.trip.count254 - br i1 %exitcond292.not, label %280, label %77, !llvm.loop !69 + br i1 %exitcond292.not, label %281, label %78, !llvm.loop !69 -280: ; preds = %278 +281: ; preds = %279 ret void } diff --git a/bench/icu/optimized/rematch.ll b/bench/icu/optimized/rematch.ll index a2e71d880b0..e84c62bd71d 100644 --- a/bench/icu/optimized/rematch.ll +++ b/bench/icu/optimized/rematch.ll @@ -16431,7 +16431,7 @@ if.end74.lr.ph: ; preds = %if.end7 br label %if.end74 if.then10: ; preds = %for.inc271, %if.end7 - %9 = phi i64 [ %1, %if.end7 ], [ %78, %for.inc271 ] + %9 = phi i64 [ %1, %if.end7 ], [ %77, %for.inc271 ] %nextOutputStringStart.0.lcssa = phi i64 [ 0, %if.end7 ], [ %35, %for.inc271 ] %cmp13 = icmp sgt i64 %9, %nextOutputStringStart.0.lcssa br i1 %cmp13, label %if.then14, label %for.end273 @@ -16688,30 +16688,29 @@ if.end8.i: ; preds = %if.end6.i if.end13.i: ; preds = %if.end8.i %46 = add nsw i64 %indvars.iv, -1 - %47 = zext i32 %44 to i64 - %cmp5.i.i = icmp samesign ult i64 %46, %47 + %cmp5.i.i = icmp samesign ult i64 %46, %45 br i1 %cmp5.i.i, label %cond.true.i.i196, label %if.end8.i188 if.end8.i188: ; preds = %if.end13.i - %48 = load ptr, ptr %fFrame.i, align 8 - %fExtra.i = getelementptr inbounds nuw i8, ptr %48, i64 16 + %47 = load ptr, ptr %fFrame.i, align 8 + %fExtra.i = getelementptr inbounds nuw i8, ptr %47, i64 16 br label %if.end.i203 cond.true.i.i196: ; preds = %if.end13.i %elements.i.i = getelementptr inbounds nuw i8, ptr %43, i64 24 - %49 = load ptr, ptr %elements.i.i, align 8 - %arrayidx.i.i = getelementptr inbounds nuw i32, ptr %49, i64 %46 - %50 = load i32, ptr %arrayidx.i.i, align 4 - %51 = sext i32 %50 to i64 - %52 = load ptr, ptr %fFrame.i, align 8 - %fExtra.i297 = getelementptr inbounds nuw i8, ptr %52, i64 16 - %arrayidx.i298 = getelementptr inbounds [1 x i64], ptr %fExtra.i297, i64 0, i64 %51 + %48 = load ptr, ptr %elements.i.i, align 8 + %arrayidx.i.i = getelementptr inbounds nuw i32, ptr %48, i64 %46 + %49 = load i32, ptr %arrayidx.i.i, align 4 + %50 = sext i32 %49 to i64 + %51 = load ptr, ptr %fFrame.i, align 8 + %fExtra.i297 = getelementptr inbounds nuw i8, ptr %51, i64 16 + %arrayidx.i298 = getelementptr inbounds [1 x i64], ptr %fExtra.i297, i64 0, i64 %50 %elements.i.i197 = getelementptr inbounds nuw i8, ptr %43, i64 24 - %53 = load ptr, ptr %elements.i.i197, align 8 - %arrayidx.i.i199 = getelementptr inbounds nuw i32, ptr %53, i64 %46 - %54 = load i32, ptr %arrayidx.i.i199, align 4 - %55 = add nsw i32 %54, 1 - %56 = sext i32 %55 to i64 + %52 = load ptr, ptr %elements.i.i197, align 8 + %arrayidx.i.i199 = getelementptr inbounds nuw i32, ptr %52, i64 %46 + %53 = load i32, ptr %arrayidx.i.i199, align 4 + %54 = add nsw i32 %53, 1 + %55 = sext i32 %54 to i64 br label %if.end.i203 _ZNK6icu_7512RegexMatcher5end64EiR10UErrorCode.exit.thread218.sink.split: ; preds = %if.end8.i, %if.end6.i, %if.end.i177 @@ -16725,11 +16724,11 @@ _ZNK6icu_7512RegexMatcher5end64EiR10UErrorCode.exit.thread218: ; preds = %_ZNK6i if.end.i203: ; preds = %cond.true.i.i196, %if.end8.i188 %s.0.i302.in = phi ptr [ %arrayidx.i298, %cond.true.i.i196 ], [ %fExtra.i, %if.end8.i188 ] - %57 = phi ptr [ %52, %cond.true.i.i196 ], [ %48, %if.end8.i188 ] - %cond.i.i192 = phi i64 [ %56, %cond.true.i.i196 ], [ 1, %if.end8.i188 ] - %58 = getelementptr inbounds nuw i8, ptr %57, i64 16 + %56 = phi ptr [ %51, %cond.true.i.i196 ], [ %47, %if.end8.i188 ] + %cond.i.i192 = phi i64 [ %55, %cond.true.i.i196 ], [ 1, %if.end8.i188 ] + %57 = getelementptr inbounds nuw i8, ptr %56, i64 16 %s.0.i302 = load i64, ptr %s.0.i302.in, align 8 - %arrayidx.i195 = getelementptr inbounds [1 x i64], ptr %58, i64 0, i64 %cond.i.i192 + %arrayidx.i195 = getelementptr inbounds [1 x i64], ptr %57, i64 0, i64 %cond.i.i192 %e.0.i = load i64, ptr %arrayidx.i195, align 8 call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %buffer.i) %cmp.i204 = icmp eq i64 %s.0.i302, %e.0.i @@ -16750,9 +16749,9 @@ if.else.i: ; preds = %if.then1.i if.end7.i: ; preds = %if.end.i203 %call8.i = call i32 @utext_extract_75(ptr noundef %37, i64 noundef %s.0.i302, i64 noundef %e.0.i, ptr noundef null, i32 noundef 0, ptr noundef nonnull %status) - %59 = load i32, ptr %status, align 4 - %cmp9.not.i = icmp eq i32 %59, 15 - %cmp.i36.i = icmp slt i32 %59, 1 + %58 = load i32, ptr %status, align 4 + %cmp9.not.i = icmp eq i32 %58, 15 + %cmp.i36.i = icmp slt i32 %58, 1 %or.cond.i = or i1 %cmp9.not.i, %cmp.i36.i br i1 %or.cond.i, label %if.end13.i205, label %_ZN6icu_75L21utext_extract_replaceEP5UTextS1_llP10UErrorCode.exit @@ -16766,8 +16765,8 @@ if.end13.i205: ; preds = %if.end7.i br i1 %cmp15.not.i, label %if.end22.i, label %if.then16.i if.then16.i: ; preds = %if.end13.i205 - %60 = shl nuw i32 %.pre65.i, 1 - %mul.i.i = zext i32 %60 to i64 + %59 = shl nuw i32 %.pre65.i, 1 + %mul.i.i = zext i32 %59 to i64 %call.i40.i = invoke noalias ptr @uprv_malloc_75(i64 noundef %mul.i.i) #19 to label %call.i.noexc.i unwind label %lpad.i @@ -16776,13 +16775,13 @@ call.i.noexc.i: ; preds = %if.then16.i br i1 %cmp2.not.i.i, label %if.then20.i, label %if.then3.i.i if.then3.i.i: ; preds = %call.i.noexc.i - %61 = load i8, ptr %needToRelease.i.i, align 4 - %tobool.not.i.i.i = icmp eq i8 %61, 0 + %60 = load i8, ptr %needToRelease.i.i, align 4 + %tobool.not.i.i.i = icmp eq i8 %60, 0 br i1 %tobool.not.i.i.i, label %invoke.cont17.i, label %if.then.i.i.i if.then.i.i.i: ; preds = %if.then3.i.i - %62 = load ptr, ptr %buffer.i, align 8 - invoke void @uprv_free_75(ptr noundef %62) + %61 = load ptr, ptr %buffer.i, align 8 + invoke void @uprv_free_75(ptr noundef %61) to label %invoke.cont17.i unwind label %lpad.i invoke.cont17.i: ; preds = %if.then.i.i.i, %if.then3.i.i @@ -16797,14 +16796,14 @@ if.then20.i: ; preds = %call.i.noexc.i br label %if.end22.i lpad.i: ; preds = %if.then51.i, %if.end46.i, %if.else3.i.i, %invoke.cont30.i, %if.then29.i, %if.end22.i, %if.then.i.i.i, %if.then16.i - %63 = landingpad { ptr, i32 } + %62 = landingpad { ptr, i32 } cleanup call void @_ZN6icu_7515MaybeStackArrayIDsLi40EED2Ev(ptr noundef nonnull align 8 dereferenceable(94) %buffer.i) #18 - resume { ptr, i32 } %63 + resume { ptr, i32 } %62 if.end22.i: ; preds = %if.then20.i, %invoke.cont17.i, %if.end13.i205 - %64 = phi ptr [ %call.i40.i, %invoke.cont17.i ], [ %.pre.i, %if.then20.i ], [ %stackArray.i.i, %if.end13.i205 ] - %call27.i = invoke i32 @utext_extract_75(ptr noundef %37, i64 noundef %s.0.i302, i64 noundef %e.0.i, ptr noundef %64, i32 noundef %.pre65.i, ptr noundef nonnull %status) + %63 = phi ptr [ %call.i40.i, %invoke.cont17.i ], [ %.pre.i, %if.then20.i ], [ %stackArray.i.i, %if.end13.i205 ] + %call27.i = invoke i32 @utext_extract_75(ptr noundef %37, i64 noundef %s.0.i302, i64 noundef %e.0.i, ptr noundef %63, i32 noundef %.pre65.i, ptr noundef nonnull %status) to label %invoke.cont26.i unwind label %lpad.i invoke.cont26.i: ; preds = %if.end22.i @@ -16816,18 +16815,18 @@ if.then29.i: ; preds = %invoke.cont26.i to label %invoke.cont30.i unwind label %lpad.i invoke.cont30.i: ; preds = %if.then29.i - %65 = load ptr, ptr %buffer.i, align 8 - %call35.i = invoke i32 @utext_replace_75(ptr noundef nonnull %38, i64 noundef 0, i64 noundef %call31.i, ptr noundef %65, i32 noundef %call8.i, ptr noundef nonnull %status) + %64 = load ptr, ptr %buffer.i, align 8 + %call35.i = invoke i32 @utext_replace_75(ptr noundef nonnull %38, i64 noundef 0, i64 noundef %call31.i, ptr noundef %64, i32 noundef %call8.i, ptr noundef nonnull %status) to label %cleanup.i unwind label %lpad.i if.end36.i: ; preds = %invoke.cont26.i - %66 = load i32, ptr %status, align 4 - %cmp.i41.i = icmp slt i32 %66, 1 + %65 = load i32, ptr %status, align 4 + %cmp.i41.i = icmp slt i32 %65, 1 br i1 %cmp.i41.i, label %if.end40.i, label %cleanup.i if.end40.i: ; preds = %if.end36.i - %67 = load i8, ptr %needToRelease.i.i, align 4 - %tobool.not.i.i = icmp eq i8 %67, 0 + %66 = load i8, ptr %needToRelease.i.i, align 4 + %tobool.not.i.i = icmp eq i8 %66, 0 br i1 %tobool.not.i.i, label %if.else.i.i, label %invoke.cont42.i if.else.i.i: ; preds = %if.end40.i @@ -16835,8 +16834,8 @@ if.else.i.i: ; preds = %if.end40.i br i1 %cmp.i46.i, label %if.then45.i, label %if.else3.i.i if.else3.i.i: ; preds = %if.else.i.i - %68 = load i32, ptr %capacity.i.i, align 8 - %spec.select.i.i = call i32 @llvm.smin.i32(i32 %.pre65.i, i32 %68) + %67 = load i32, ptr %capacity.i.i, align 8 + %spec.select.i.i = call i32 @llvm.smin.i32(i32 %.pre65.i, i32 %67) %conv.i48.i = sext i32 %spec.select.i.i to i64 %mul.i49.i = shl nsw i64 %conv.i48.i, 1 %call.i51.i = invoke noalias ptr @uprv_malloc_75(i64 noundef %mul.i49.i) #19 @@ -16847,19 +16846,19 @@ call.i.noexc50.i: ; preds = %if.else3.i.i br i1 %cmp7.i.i, label %if.then45.i, label %invoke.cont42.thread61.i invoke.cont42.thread61.i: ; preds = %call.i.noexc50.i - %69 = load ptr, ptr %buffer.i, align 8 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 2 %call.i51.i, ptr align 2 %69, i64 %mul.i49.i, i1 false) + %68 = load ptr, ptr %buffer.i, align 8 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 2 %call.i51.i, ptr align 2 %68, i64 %mul.i49.i, i1 false) store ptr %stackArray.i.i, ptr %buffer.i, align 8 store i32 40, ptr %capacity.i.i, align 8 store i8 0, ptr %needToRelease.i.i, align 4 br label %if.end46.i invoke.cont42.i: ; preds = %if.end40.i - %70 = load ptr, ptr %buffer.i, align 8 + %69 = load ptr, ptr %buffer.i, align 8 store ptr %stackArray.i.i, ptr %buffer.i, align 8 store i32 40, ptr %capacity.i.i, align 8 store i8 0, ptr %needToRelease.i.i, align 4 - %cmp44.i = icmp eq ptr %70, null + %cmp44.i = icmp eq ptr %69, null br i1 %cmp44.i, label %if.then45.i, label %if.end46.i if.then45.i: ; preds = %invoke.cont42.i, %call.i.noexc50.i, %if.else.i.i @@ -16867,14 +16866,14 @@ if.then45.i: ; preds = %invoke.cont42.i, %c br label %cleanup.i if.end46.i: ; preds = %invoke.cont42.i, %invoke.cont42.thread61.i - %p.0.i64.i = phi ptr [ %call.i51.i, %invoke.cont42.thread61.i ], [ %70, %invoke.cont42.i ] + %p.0.i64.i = phi ptr [ %call.i51.i, %invoke.cont42.thread61.i ], [ %69, %invoke.cont42.i ] %conv.i206 = sext i32 %call8.i to i64 %call48.i = invoke ptr @utext_openUChars_75(ptr noundef null, ptr noundef nonnull %p.0.i64.i, i64 noundef %conv.i206, ptr noundef nonnull %status) to label %invoke.cont47.i unwind label %lpad.i invoke.cont47.i: ; preds = %if.end46.i - %71 = load i32, ptr %status, align 4 - %cmp.i52.i = icmp slt i32 %71, 1 + %70 = load i32, ptr %status, align 4 + %cmp.i52.i = icmp slt i32 %70, 1 br i1 %cmp.i52.i, label %if.end53.i, label %if.then51.i if.then51.i: ; preds = %invoke.cont47.i @@ -16883,27 +16882,27 @@ if.then51.i: ; preds = %invoke.cont47.i if.end53.i: ; preds = %invoke.cont47.i %providerProperties.i = getelementptr inbounds nuw i8, ptr %call48.i, i64 8 - %72 = load i32, ptr %providerProperties.i, align 8 - %or.i = or i32 %72, 32 + %71 = load i32, ptr %providerProperties.i, align 8 + %or.i = or i32 %71, 32 store i32 %or.i, ptr %providerProperties.i, align 8 br label %cleanup.i cleanup.i: ; preds = %if.end53.i, %if.then51.i, %if.then45.i, %if.end36.i, %invoke.cont30.i %retval.1.i = phi ptr [ null, %if.then45.i ], [ %call48.i, %if.end53.i ], [ %38, %invoke.cont30.i ], [ null, %if.end36.i ], [ null, %if.then51.i ] - %73 = load i8, ptr %needToRelease.i.i, align 4 - %tobool.not.i.i55.i = icmp eq i8 %73, 0 + %72 = load i8, ptr %needToRelease.i.i, align 4 + %tobool.not.i.i55.i = icmp eq i8 %72, 0 br i1 %tobool.not.i.i55.i, label %_ZN6icu_75L21utext_extract_replaceEP5UTextS1_llP10UErrorCode.exit, label %if.then.i.i56.i if.then.i.i56.i: ; preds = %cleanup.i - %74 = load ptr, ptr %buffer.i, align 8 - invoke void @uprv_free_75(ptr noundef %74) + %73 = load ptr, ptr %buffer.i, align 8 + invoke void @uprv_free_75(ptr noundef %73) to label %_ZN6icu_75L21utext_extract_replaceEP5UTextS1_llP10UErrorCode.exit unwind label %terminate.lpad.i.i terminate.lpad.i.i: ; preds = %if.then.i.i56.i - %75 = landingpad { ptr, i32 } + %74 = landingpad { ptr, i32 } catch ptr null - %76 = extractvalue { ptr, i32 } %75, 0 - call void @__clang_call_terminate(ptr %76) #20 + %75 = extractvalue { ptr, i32 } %74, 0 + call void @__clang_call_terminate(ptr %75) #20 unreachable _ZN6icu_75L21utext_extract_replaceEP5UTextS1_llP10UErrorCode.exit: ; preds = %_ZNK6icu_7512RegexMatcher5end64EiR10UErrorCode.exit.thread218, %if.then3.i, %if.else.i, %if.end7.i, %cleanup.i, %if.then.i.i56.i @@ -16917,13 +16916,13 @@ _ZN6icu_75L21utext_extract_replaceEP5UTextS1_llP10UErrorCode.exit: ; preds = %_Z br i1 %or.cond, label %if.end157, label %for.end.loopexit, !llvm.loop !42 for.end.loopexit: ; preds = %_ZN6icu_75L21utext_extract_replaceEP5UTextS1_llP10UErrorCode.exit - %77 = trunc nsw i64 %indvars.iv.next292 to i32 + %76 = trunc nsw i64 %indvars.iv.next292 to i32 br label %for.end for.end: ; preds = %for.end.loopexit, %if.end151 - %i.2.lcssa = phi i32 [ %i.0261, %if.end151 ], [ %77, %for.end.loopexit ] - %78 = load i64, ptr %fActiveLimit, align 8 - %cmp167 = icmp eq i64 %35, %78 + %i.2.lcssa = phi i32 [ %i.0261, %if.end151 ], [ %76, %for.end.loopexit ] + %77 = load i64, ptr %fActiveLimit, align 8 + %cmp167 = icmp eq i64 %35, %77 br i1 %cmp167, label %if.then168, label %if.end266 if.then168: ; preds = %for.end @@ -16934,8 +16933,8 @@ if.then168: ; preds = %for.end if.then171: ; preds = %if.then168 %idxprom173 = sext i32 %add169 to i64 %arrayidx174 = getelementptr inbounds ptr, ptr %dest, i64 %idxprom173 - %79 = load ptr, ptr %arrayidx174, align 8 - %cmp175 = icmp eq ptr %79, null + %78 = load ptr, ptr %arrayidx174, align 8 + %cmp175 = icmp eq ptr %78, null br i1 %cmp175, label %if.then176, label %if.else180 if.then176: ; preds = %if.then171 @@ -16944,53 +16943,53 @@ if.then176: ; preds = %if.then171 br label %for.end273 if.else180: ; preds = %if.then171 - %call185 = call i64 @utext_nativeLength_75(ptr noundef nonnull %79) - %call186 = call i32 @utext_replace_75(ptr noundef nonnull %79, i64 noundef 0, i64 noundef %call185, ptr noundef nonnull @_ZZN6icu_7512RegexMatcher5splitEP5UTextPS2_iR10UErrorCodeE11emptyString, i32 noundef 0, ptr noundef nonnull %status) + %call185 = call i64 @utext_nativeLength_75(ptr noundef nonnull %78) + %call186 = call i32 @utext_replace_75(ptr noundef nonnull %78, i64 noundef 0, i64 noundef %call185, ptr noundef nonnull @_ZZN6icu_7512RegexMatcher5splitEP5UTextPS2_iR10UErrorCodeE11emptyString, i32 noundef 0, ptr noundef nonnull %status) br label %for.end273 if.else190: ; preds = %_ZN6icu_7512RegexMatcher4findEv.exit, %_ZN6icu_7512RegexMatcher4findEv.exit.thread - %80 = load i64, ptr %chunkNativeStart78, align 8 - %cmp192 = icmp eq i64 %80, 0 + %79 = load i64, ptr %chunkNativeStart78, align 8 + %cmp192 = icmp eq i64 %79, 0 br i1 %cmp192, label %land.lhs.true193, label %if.else230 land.lhs.true193: ; preds = %if.else190 - %81 = load i64, ptr %fInputLength81, align 8 - %82 = load i64, ptr %chunkNativeLimit82, align 8 - %cmp196 = icmp eq i64 %81, %82 + %80 = load i64, ptr %fInputLength81, align 8 + %81 = load i64, ptr %chunkNativeLimit82, align 8 + %cmp196 = icmp eq i64 %80, %81 br i1 %cmp196, label %land.lhs.true197, label %if.else230 land.lhs.true197: ; preds = %land.lhs.true193 - %83 = load i32, ptr %nativeIndexingLimit86, align 4 - %conv200 = sext i32 %83 to i64 - %cmp201 = icmp eq i64 %81, %conv200 + %82 = load i32, ptr %nativeIndexingLimit86, align 4 + %conv200 = sext i32 %82 to i64 + %cmp201 = icmp eq i64 %80, %conv200 br i1 %cmp201, label %if.then202, label %if.else230 if.then202: ; preds = %land.lhs.true197 %idxprom203 = sext i32 %i.0261 to i64 %arrayidx204 = getelementptr inbounds ptr, ptr %dest, i64 %idxprom203 - %84 = load ptr, ptr %arrayidx204, align 8 - %tobool205.not = icmp eq ptr %84, null + %83 = load ptr, ptr %arrayidx204, align 8 + %tobool205.not = icmp eq ptr %83, null br i1 %tobool205.not, label %if.else218, label %if.then206 if.then206: ; preds = %if.then202 - %call211 = call i64 @utext_nativeLength_75(ptr noundef nonnull %84) - %85 = load ptr, ptr %chunkContents99, align 8 - %add.ptr213 = getelementptr inbounds i16, ptr %85, i64 %nextOutputStringStart.0262 - %86 = load i64, ptr %fActiveLimit, align 8 - %sub215 = sub nsw i64 %86, %nextOutputStringStart.0262 + %call211 = call i64 @utext_nativeLength_75(ptr noundef nonnull %83) + %84 = load ptr, ptr %chunkContents99, align 8 + %add.ptr213 = getelementptr inbounds i16, ptr %84, i64 %nextOutputStringStart.0262 + %85 = load i64, ptr %fActiveLimit, align 8 + %sub215 = sub nsw i64 %85, %nextOutputStringStart.0262 %conv216 = trunc i64 %sub215 to i32 - %call217 = call i32 @utext_replace_75(ptr noundef nonnull %84, i64 noundef 0, i64 noundef %call211, ptr noundef %add.ptr213, i32 noundef %conv216, ptr noundef nonnull %status) + %call217 = call i32 @utext_replace_75(ptr noundef nonnull %83, i64 noundef 0, i64 noundef %call211, ptr noundef %add.ptr213, i32 noundef %conv216, ptr noundef nonnull %status) br label %for.end273 if.else218: ; preds = %if.then202 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(144) %remainingText219, i8 0, i64 144, i1 false) store i32 878368812, ptr %remainingText219, align 8 - %87 = getelementptr inbounds nuw i8, ptr %remainingText219, i64 12 - store i32 144, ptr %87, align 4 - %88 = load ptr, ptr %chunkContents99, align 8 - %add.ptr221 = getelementptr inbounds i16, ptr %88, i64 %nextOutputStringStart.0262 - %89 = load i64, ptr %fActiveLimit, align 8 - %sub223 = sub nsw i64 %89, %nextOutputStringStart.0262 + %86 = getelementptr inbounds nuw i8, ptr %remainingText219, i64 12 + store i32 144, ptr %86, align 4 + %87 = load ptr, ptr %chunkContents99, align 8 + %add.ptr221 = getelementptr inbounds i16, ptr %87, i64 %nextOutputStringStart.0262 + %88 = load i64, ptr %fActiveLimit, align 8 + %sub223 = sub nsw i64 %88, %nextOutputStringStart.0262 %call224 = call ptr @utext_openUChars_75(ptr noundef nonnull %remainingText219, ptr noundef %add.ptr221, i64 noundef %sub223, ptr noundef nonnull %status) %call225 = call ptr @utext_clone_75(ptr noundef null, ptr noundef nonnull %remainingText219, i8 noundef signext 1, i8 noundef signext 0, ptr noundef nonnull %status) store ptr %call225, ptr %arrayidx204, align 8 @@ -16999,8 +16998,8 @@ if.else218: ; preds = %if.then202 if.else230: ; preds = %land.lhs.true197, %land.lhs.true193, %if.else190 store i32 0, ptr %lengthStatus231, align 4 - %90 = load i64, ptr %fActiveLimit, align 8 - %call234 = call i32 @utext_extract_75(ptr noundef nonnull %input, i64 noundef %nextOutputStringStart.0262, i64 noundef %90, ptr noundef null, i32 noundef 0, ptr noundef nonnull %lengthStatus231) + %89 = load i64, ptr %fActiveLimit, align 8 + %call234 = call i32 @utext_extract_75(ptr noundef nonnull %input, i64 noundef %nextOutputStringStart.0262, i64 noundef %89, ptr noundef null, i32 noundef 0, ptr noundef nonnull %lengthStatus231) %add236 = add nsw i32 %call234, 1 %conv237 = sext i32 %add236 to i64 %mul238 = shl nsw i64 %conv237, 1 @@ -17013,24 +17012,24 @@ if.then241: ; preds = %if.else230 br label %for.end273 if.end242: ; preds = %if.else230 - %91 = load i64, ptr %fActiveLimit, align 8 - %call245 = call i32 @utext_extract_75(ptr noundef nonnull %input, i64 noundef %nextOutputStringStart.0262, i64 noundef %91, ptr noundef nonnull %call239, i32 noundef %add236, ptr noundef nonnull %status) + %90 = load i64, ptr %fActiveLimit, align 8 + %call245 = call i32 @utext_extract_75(ptr noundef nonnull %input, i64 noundef %nextOutputStringStart.0262, i64 noundef %90, ptr noundef nonnull %call239, i32 noundef %add236, ptr noundef nonnull %status) %idxprom246 = sext i32 %i.0261 to i64 %arrayidx247 = getelementptr inbounds ptr, ptr %dest, i64 %idxprom246 - %92 = load ptr, ptr %arrayidx247, align 8 - %tobool248.not = icmp eq ptr %92, null + %91 = load ptr, ptr %arrayidx247, align 8 + %tobool248.not = icmp eq ptr %91, null br i1 %tobool248.not, label %if.else256, label %if.then249 if.then249: ; preds = %if.end242 - %call254 = call i64 @utext_nativeLength_75(ptr noundef nonnull %92) - %call255 = call i32 @utext_replace_75(ptr noundef nonnull %92, i64 noundef 0, i64 noundef %call254, ptr noundef nonnull %call239, i32 noundef %call234, ptr noundef nonnull %status) + %call254 = call i64 @utext_nativeLength_75(ptr noundef nonnull %91) + %call255 = call i32 @utext_replace_75(ptr noundef nonnull %91, i64 noundef 0, i64 noundef %call254, ptr noundef nonnull %call239, i32 noundef %call234, ptr noundef nonnull %status) br label %if.end264 if.else256: ; preds = %if.end242 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(144) %remainingText257, i8 0, i64 144, i1 false) store i32 878368812, ptr %remainingText257, align 8 - %93 = getelementptr inbounds nuw i8, ptr %remainingText257, i64 12 - store i32 144, ptr %93, align 4 + %92 = getelementptr inbounds nuw i8, ptr %remainingText257, i64 12 + store i32 144, ptr %92, align 4 %conv258 = sext i32 %call234 to i64 %call259 = call ptr @utext_openUChars_75(ptr noundef nonnull %remainingText257, ptr noundef nonnull %call239, i64 noundef %conv258, ptr noundef nonnull %status) %call260 = call ptr @utext_clone_75(ptr noundef null, ptr noundef nonnull %remainingText257, i8 noundef signext 1, i8 noundef signext 0, ptr noundef nonnull %status) @@ -17043,8 +17042,8 @@ if.end264: ; preds = %if.else256, %if.the br label %for.end273 if.end266: ; preds = %for.end - %94 = load i32, ptr %status, align 4 - %cmp.i207 = icmp slt i32 %94, 1 + %93 = load i32, ptr %status, align 4 + %cmp.i207 = icmp slt i32 %93, 1 br i1 %cmp.i207, label %for.inc271, label %for.end273 for.inc271: ; preds = %if.end266 diff --git a/bench/llvm/optimized/TargetLoweringBase.ll b/bench/llvm/optimized/TargetLoweringBase.ll index 2e948827786..194ba3cbfba 100644 --- a/bench/llvm/optimized/TargetLoweringBase.ll +++ b/bench/llvm/optimized/TargetLoweringBase.ll @@ -6101,19 +6101,19 @@ _ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit128: ; preds = %_ZNK4llv %154 = getelementptr inbounds nuw i8, ptr %3, i64 8 br label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit130 -.preheader: ; preds = %341 +.preheader: ; preds = %343 %155 = getelementptr inbounds nuw i8, ptr %0, i64 2912 %156 = getelementptr inbounds nuw i8, ptr %0, i64 4784 - br label %343 + br label %345 -_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit130: ; preds = %151, %341 - %indvars.iv354 = phi i64 [ 17, %151 ], [ %indvars.iv.next355, %341 ] - %indvars.iv346 = phi i64 [ 18, %151 ], [ %indvars.iv.next347, %341 ] +_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit130: ; preds = %151, %343 + %indvars.iv354 = phi i64 [ 17, %151 ], [ %indvars.iv.next355, %343 ] + %indvars.iv346 = phi i64 [ 18, %151 ], [ %indvars.iv.next347, %343 ] %157 = trunc i64 %indvars.iv354 to i16 %158 = getelementptr inbounds nuw [234 x ptr], ptr %10, i64 0, i64 %indvars.iv354 %159 = load ptr, ptr %158, align 8, !tbaa !134 %.not286 = icmp eq ptr %159, null - br i1 %.not286, label %160, label %341 + br i1 %.not286, label %160, label %343 160: ; preds = %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit130 %161 = add nsw i64 %indvars.iv354, -1 @@ -6127,7 +6127,7 @@ _ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit130: ; preds = %151, %34 %168 = getelementptr inbounds nuw i8, ptr %167, i64 168 %169 = load ptr, ptr %168, align 8 %170 = call noundef zeroext i8 %169(ptr noundef nonnull align 8 dereferenceable(412423) %0, i16 %157) #27 - switch i8 %170, label %340 [ + switch i8 %170, label %342 [ i8 1, label %.preheader304 i8 7, label %.loopexit i8 6, label %.thread271 @@ -6135,308 +6135,310 @@ _ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit130: ; preds = %151, %34 ] .preheader304: ; preds = %160 - %171 = select i1 %spec.select.i.i, i64 169, i64 87 - %.not110318.not = icmp samesign ult i64 %indvars.iv354, %171 + %171 = select i1 %spec.select.i.i, i32 169, i32 87 + %172 = zext nneg i32 %171 to i64 + %.not110318.not = icmp samesign ult i64 %indvars.iv354, %172 br i1 %.not110318.not, label %.lr.ph320, label %.loopexit .lr.ph320: ; preds = %.preheader304 - %172 = zext i16 %163 to i64 - %173 = add nsw i64 %172, -1 - %174 = getelementptr inbounds [241 x %"class.llvm::TypeSize"], ptr @_ZZNK4llvm3MVT13getSizeInBitsEvE9SizeTable, i64 0, i64 %173 - %.sroa.0.0.copyload.i.i131 = load i64, ptr %174, align 16 - br label %175 - -175: ; preds = %.lr.ph320, %.critedge + %173 = zext i16 %163 to i64 + %174 = add nsw i64 %173, -1 + %175 = getelementptr inbounds [241 x %"class.llvm::TypeSize"], ptr @_ZZNK4llvm3MVT13getSizeInBitsEvE9SizeTable, i64 0, i64 %174 + %.sroa.0.0.copyload.i.i131 = load i64, ptr %175, align 16 + %176 = zext nneg i32 %171 to i64 + br label %177 + +177: ; preds = %.lr.ph320, %.critedge %indvars.iv348 = phi i64 [ %indvars.iv346, %.lr.ph320 ], [ %indvars.iv.next349, %.critedge ] - %176 = trunc i64 %indvars.iv348 to i16 - %177 = add i16 %176, -17 - %spec.select.i.i.i = icmp ult i16 %177, 174 - br i1 %spec.select.i.i.i, label %178, label %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit - -178: ; preds = %175 - %179 = add nsw i64 %indvars.iv348, -1 - %180 = getelementptr inbounds [241 x i16], ptr @_ZZNK4llvm3MVT20getVectorElementTypeEvE10EltTyTable, i64 0, i64 %179 - %181 = load i16, ptr %180, align 2, !tbaa !138 + %178 = trunc i64 %indvars.iv348 to i16 + %179 = add i16 %178, -17 + %spec.select.i.i.i = icmp ult i16 %179, 174 + br i1 %spec.select.i.i.i, label %180, label %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit + +180: ; preds = %177 + %181 = add nsw i64 %indvars.iv348, -1 + %182 = getelementptr inbounds [241 x i16], ptr @_ZZNK4llvm3MVT20getVectorElementTypeEvE10EltTyTable, i64 0, i64 %181 + %183 = load i16, ptr %182, align 2, !tbaa !138 br label %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit -_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit: ; preds = %175, %178 - %.sroa.0.0.i.i = phi i16 [ %181, %178 ], [ %176, %175 ] - %182 = zext i16 %.sroa.0.0.i.i to i64 - %183 = add nsw i64 %182, -1 - %184 = getelementptr inbounds [241 x %"class.llvm::TypeSize"], ptr @_ZZNK4llvm3MVT13getSizeInBitsEvE9SizeTable, i64 0, i64 %183 - %.sroa.0.0.copyload.i.i = load i64, ptr %184, align 16 - %185 = icmp ugt i64 %.sroa.0.0.copyload.i.i, %.sroa.0.0.copyload.i.i131 - br i1 %185, label %186, label %.critedge - -186: ; preds = %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit - %187 = add nsw i64 %indvars.iv348, -1 - %188 = getelementptr inbounds [241 x i16], ptr @_ZZNK4llvm3MVT23getVectorMinNumElementsEvE10NElemTable, i64 0, i64 %187 - %189 = load i16, ptr %188, align 2, !tbaa !137 - %190 = add i16 %176, -138 - %spec.select.i.i132 = icmp ult i16 %190, 53 - %191 = icmp ne i16 %189, %165 - %192 = xor i1 %spec.select.i.i, %spec.select.i.i132 - %.not291 = select i1 %191, i1 true, i1 %192 - %.not.i136 = icmp eq i16 %176, 0 +_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit: ; preds = %177, %180 + %.sroa.0.0.i.i = phi i16 [ %183, %180 ], [ %178, %177 ] + %184 = zext i16 %.sroa.0.0.i.i to i64 + %185 = add nsw i64 %184, -1 + %186 = getelementptr inbounds [241 x %"class.llvm::TypeSize"], ptr @_ZZNK4llvm3MVT13getSizeInBitsEvE9SizeTable, i64 0, i64 %185 + %.sroa.0.0.copyload.i.i = load i64, ptr %186, align 16 + %187 = icmp ugt i64 %.sroa.0.0.copyload.i.i, %.sroa.0.0.copyload.i.i131 + br i1 %187, label %188, label %.critedge + +188: ; preds = %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit + %189 = add nsw i64 %indvars.iv348, -1 + %190 = getelementptr inbounds [241 x i16], ptr @_ZZNK4llvm3MVT23getVectorMinNumElementsEvE10NElemTable, i64 0, i64 %189 + %191 = load i16, ptr %190, align 2, !tbaa !137 + %192 = add i16 %178, -138 + %spec.select.i.i132 = icmp ult i16 %192, 53 + %193 = icmp ne i16 %191, %165 + %194 = xor i1 %spec.select.i.i, %spec.select.i.i132 + %.not291 = select i1 %193, i1 true, i1 %194 + %.not.i136 = icmp eq i16 %178, 0 %or.cond = or i1 %.not.i136, %.not291 br i1 %or.cond, label %.critedge, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit137 -_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit137: ; preds = %186 - %193 = getelementptr inbounds nuw [234 x ptr], ptr %10, i64 0, i64 %indvars.iv348 - %194 = load ptr, ptr %193, align 8, !tbaa !134 - %.not292 = icmp eq ptr %194, null +_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit137: ; preds = %188 + %195 = getelementptr inbounds nuw [234 x ptr], ptr %10, i64 0, i64 %indvars.iv348 + %196 = load ptr, ptr %195, align 8, !tbaa !134 + %.not292 = icmp eq ptr %196, null br i1 %.not292, label %.critedge, label %.thread260 .thread260: ; preds = %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit137 - %195 = getelementptr inbounds nuw [234 x %"class.llvm::MVT"], ptr %6, i64 0, i64 %indvars.iv354 - store i16 %176, ptr %195, align 2, !tbaa !138 - %196 = getelementptr inbounds nuw [234 x %"class.llvm::MVT"], ptr %7, i64 0, i64 %indvars.iv354 - store i16 %176, ptr %196, align 2, !tbaa !138 - %197 = getelementptr inbounds nuw [234 x i16], ptr %5, i64 0, i64 %indvars.iv354 - store i16 1, ptr %197, align 2, !tbaa !137 - %198 = getelementptr inbounds nuw [234 x i8], ptr %152, i64 0, i64 %indvars.iv354 - store i8 1, ptr %198, align 1, !tbaa !84 - br label %341 - -.critedge: ; preds = %186, %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit137 + %197 = getelementptr inbounds nuw [234 x %"class.llvm::MVT"], ptr %6, i64 0, i64 %indvars.iv354 + store i16 %178, ptr %197, align 2, !tbaa !138 + %198 = getelementptr inbounds nuw [234 x %"class.llvm::MVT"], ptr %7, i64 0, i64 %indvars.iv354 + store i16 %178, ptr %198, align 2, !tbaa !138 + %199 = getelementptr inbounds nuw [234 x i16], ptr %5, i64 0, i64 %indvars.iv354 + store i16 1, ptr %199, align 2, !tbaa !137 + %200 = getelementptr inbounds nuw [234 x i8], ptr %152, i64 0, i64 %indvars.iv354 + store i8 1, ptr %200, align 1, !tbaa !84 + br label %343 + +.critedge: ; preds = %188, %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit137 %indvars.iv.next349 = add nuw nsw i64 %indvars.iv348, 1 - %.not110.not = icmp samesign ult i64 %indvars.iv348, %171 - br i1 %.not110.not, label %175, label %.loopexit, !llvm.loop !392 + %.not110.not = icmp samesign ult i64 %indvars.iv348, %176 + br i1 %.not110.not, label %177, label %.loopexit, !llvm.loop !392 .loopexit: ; preds = %.critedge, %.preheader304, %160 - %199 = call range(i16 0, 17) i16 @llvm.ctpop.i16(i16 %165) - %or.cond277 = icmp eq i16 %199, 1 + %201 = call range(i16 0, 17) i16 @llvm.ctpop.i16(i16 %165) + %or.cond277 = icmp eq i16 %201, 1 br i1 %or.cond277, label %.preheader303, label %_ZN4llvm13isPowerOf2_32Ej.exit.thread .preheader303: ; preds = %.loopexit - %200 = icmp samesign ult i64 %indvars.iv354, 190 - br i1 %200, label %.lr.ph324, label %.thread271 + %202 = icmp samesign ult i64 %indvars.iv354, 190 + br i1 %202, label %.lr.ph324, label %.thread271 .lr.ph324: ; preds = %.preheader303, %.critedge3 %indvars.iv356 = phi i64 [ %indvars.iv.next357, %.critedge3 ], [ %indvars.iv354, %.preheader303 ] %indvars.iv.next357 = add nuw nsw i64 %indvars.iv356, 1 - %201 = getelementptr inbounds nuw [241 x i16], ptr @_ZZNK4llvm3MVT20getVectorElementTypeEvE10EltTyTable, i64 0, i64 %indvars.iv356 - %202 = load i16, ptr %201, align 2, !tbaa !138 - %203 = icmp eq i16 %202, %163 - br i1 %203, label %204, label %.critedge3 - -204: ; preds = %.lr.ph324 - %205 = trunc i64 %indvars.iv356 to i16 - %206 = add i16 %205, -137 - %spec.select.i138 = icmp ult i16 %206, 53 - %207 = xor i1 %spec.select.i.i, %spec.select.i138 - br i1 %207, label %.critedge3, label %208 - -208: ; preds = %204 - %209 = getelementptr inbounds nuw [241 x i16], ptr @_ZZNK4llvm3MVT23getVectorMinNumElementsEvE10NElemTable, i64 0, i64 %indvars.iv356 - %210 = load i16, ptr %209, align 2, !tbaa !137 - %211 = icmp ugt i16 %210, %165 - br i1 %211, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit144, label %.critedge3 - -_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit144: ; preds = %208 - %212 = getelementptr inbounds nuw [234 x ptr], ptr %10, i64 0, i64 %indvars.iv.next357 - %213 = load ptr, ptr %212, align 8, !tbaa !134 - %.not296 = icmp eq ptr %213, null + %203 = getelementptr inbounds nuw [241 x i16], ptr @_ZZNK4llvm3MVT20getVectorElementTypeEvE10EltTyTable, i64 0, i64 %indvars.iv356 + %204 = load i16, ptr %203, align 2, !tbaa !138 + %205 = icmp eq i16 %204, %163 + br i1 %205, label %206, label %.critedge3 + +206: ; preds = %.lr.ph324 + %207 = trunc i64 %indvars.iv356 to i16 + %208 = add i16 %207, -137 + %spec.select.i138 = icmp ult i16 %208, 53 + %209 = xor i1 %spec.select.i.i, %spec.select.i138 + br i1 %209, label %.critedge3, label %210 + +210: ; preds = %206 + %211 = getelementptr inbounds nuw [241 x i16], ptr @_ZZNK4llvm3MVT23getVectorMinNumElementsEvE10NElemTable, i64 0, i64 %indvars.iv356 + %212 = load i16, ptr %211, align 2, !tbaa !137 + %213 = icmp ugt i16 %212, %165 + br i1 %213, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit144, label %.critedge3 + +_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit144: ; preds = %210 + %214 = getelementptr inbounds nuw [234 x ptr], ptr %10, i64 0, i64 %indvars.iv.next357 + %215 = load ptr, ptr %214, align 8, !tbaa !134 + %.not296 = icmp eq ptr %215, null br i1 %.not296, label %.critedge3, label %.thread264 .thread264: ; preds = %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit144 - %214 = trunc nuw nsw i64 %indvars.iv.next357 to i16 - %215 = getelementptr inbounds nuw [234 x %"class.llvm::MVT"], ptr %6, i64 0, i64 %indvars.iv354 - store i16 %214, ptr %215, align 2, !tbaa !138 - %216 = getelementptr inbounds nuw [234 x %"class.llvm::MVT"], ptr %7, i64 0, i64 %indvars.iv354 - store i16 %214, ptr %216, align 2, !tbaa !138 - %217 = getelementptr inbounds nuw [234 x i16], ptr %5, i64 0, i64 %indvars.iv354 - store i16 1, ptr %217, align 2, !tbaa !137 - %218 = getelementptr inbounds nuw [234 x i8], ptr %152, i64 0, i64 %indvars.iv354 - store i8 7, ptr %218, align 1, !tbaa !84 - br label %341 - -.critedge3: ; preds = %208, %204, %.lr.ph324, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit144 + %216 = trunc nuw nsw i64 %indvars.iv.next357 to i16 + %217 = getelementptr inbounds nuw [234 x %"class.llvm::MVT"], ptr %6, i64 0, i64 %indvars.iv354 + store i16 %216, ptr %217, align 2, !tbaa !138 + %218 = getelementptr inbounds nuw [234 x %"class.llvm::MVT"], ptr %7, i64 0, i64 %indvars.iv354 + store i16 %216, ptr %218, align 2, !tbaa !138 + %219 = getelementptr inbounds nuw [234 x i16], ptr %5, i64 0, i64 %indvars.iv354 + store i16 1, ptr %219, align 2, !tbaa !137 + %220 = getelementptr inbounds nuw [234 x i8], ptr %152, i64 0, i64 %indvars.iv354 + store i8 7, ptr %220, align 1, !tbaa !84 + br label %343 + +.critedge3: ; preds = %210, %206, %.lr.ph324, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit144 %exitcond360.not = icmp eq i64 %indvars.iv.next357, 190 br i1 %exitcond360.not, label %.thread271, label %.lr.ph324, !llvm.loop !393 _ZN4llvm13isPowerOf2_32Ej.exit.thread: ; preds = %.loopexit %.not.i.i145 = icmp eq i16 %165, 0 - br i1 %.not.i.i145, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit148, label %219 + br i1 %.not.i.i145, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit148, label %221 -219: ; preds = %_ZN4llvm13isPowerOf2_32Ej.exit.thread - %220 = add nsw i16 %157, -191 - %spec.select.i.i.i146 = icmp ult i16 %220, -53 +221: ; preds = %_ZN4llvm13isPowerOf2_32Ej.exit.thread + %222 = add nsw i16 %157, -191 + %spec.select.i.i.i146 = icmp ult i16 %222, -53 %.sroa.0.sroa.0.0.extract.trunc.i = zext i16 %165 to i32 - %221 = add nsw i32 %.sroa.0.sroa.0.0.extract.trunc.i, -1 - %222 = call noundef range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %221, i1 false) - %223 = sub nuw nsw i32 32, %222 - %224 = shl nuw nsw i32 1, %223 - br i1 %spec.select.i.i.i146, label %227, label %225 - -225: ; preds = %219 - %226 = call i16 @_ZN4llvm3MVT19getScalableVectorVTES0_j(i16 %163, i32 noundef %224) + %223 = add nsw i32 %.sroa.0.sroa.0.0.extract.trunc.i, -1 + %224 = call noundef range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %223, i1 false) + %225 = sub nuw nsw i32 32, %224 + %226 = shl nuw nsw i32 1, %225 + br i1 %spec.select.i.i.i146, label %229, label %227 + +227: ; preds = %221 + %228 = call i16 @_ZN4llvm3MVT19getScalableVectorVTES0_j(i16 %163, i32 noundef %226) br label %_ZNK4llvm3MVT17getPow2VectorTypeEv.exit -227: ; preds = %219 - %228 = call i16 @_ZN4llvm3MVT11getVectorVTES0_j(i16 %163, i32 noundef %224) +229: ; preds = %221 + %230 = call i16 @_ZN4llvm3MVT11getVectorVTES0_j(i16 %163, i32 noundef %226) br label %_ZNK4llvm3MVT17getPow2VectorTypeEv.exit -_ZNK4llvm3MVT17getPow2VectorTypeEv.exit: ; preds = %225, %227 - %.sroa.03.0.i = phi i16 [ %226, %225 ], [ %228, %227 ] +_ZNK4llvm3MVT17getPow2VectorTypeEv.exit: ; preds = %227, %229 + %.sroa.03.0.i = phi i16 [ %228, %227 ], [ %230, %229 ] %.not.i147 = icmp eq i16 %.sroa.03.0.i, 0 br i1 %.not.i147, label %.thread271, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit148 _ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit148: ; preds = %_ZN4llvm13isPowerOf2_32Ej.exit.thread, %_ZNK4llvm3MVT17getPow2VectorTypeEv.exit %.sroa.03.0.i268 = phi i16 [ %.sroa.03.0.i, %_ZNK4llvm3MVT17getPow2VectorTypeEv.exit ], [ %157, %_ZN4llvm13isPowerOf2_32Ej.exit.thread ] - %229 = zext i16 %.sroa.03.0.i268 to i64 - %230 = getelementptr inbounds nuw [234 x ptr], ptr %10, i64 0, i64 %229 - %231 = load ptr, ptr %230, align 8, !tbaa !134 - %.not293 = icmp eq ptr %231, null - br i1 %.not293, label %.thread271, label %232 - -232: ; preds = %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit148 - %233 = getelementptr inbounds nuw [234 x %"class.llvm::MVT"], ptr %6, i64 0, i64 %indvars.iv354 - store i16 %.sroa.03.0.i268, ptr %233, align 2, !tbaa !138 - %234 = getelementptr inbounds nuw [234 x i8], ptr %152, i64 0, i64 %indvars.iv354 - store i8 7, ptr %234, align 1, !tbaa !84 - %235 = getelementptr inbounds nuw [234 x %"class.llvm::MVT"], ptr %7, i64 0, i64 %indvars.iv354 + %231 = zext i16 %.sroa.03.0.i268 to i64 + %232 = getelementptr inbounds nuw [234 x ptr], ptr %10, i64 0, i64 %231 + %233 = load ptr, ptr %232, align 8, !tbaa !134 + %.not293 = icmp eq ptr %233, null + br i1 %.not293, label %.thread271, label %234 + +234: ; preds = %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit148 + %235 = getelementptr inbounds nuw [234 x %"class.llvm::MVT"], ptr %6, i64 0, i64 %indvars.iv354 store i16 %.sroa.03.0.i268, ptr %235, align 2, !tbaa !138 - %236 = getelementptr inbounds nuw [234 x i16], ptr %5, i64 0, i64 %indvars.iv354 - store i16 1, ptr %236, align 2, !tbaa !137 - br label %341 + %236 = getelementptr inbounds nuw [234 x i8], ptr %152, i64 0, i64 %indvars.iv354 + store i8 7, ptr %236, align 1, !tbaa !84 + %237 = getelementptr inbounds nuw [234 x %"class.llvm::MVT"], ptr %7, i64 0, i64 %indvars.iv354 + store i16 %.sroa.03.0.i268, ptr %237, align 2, !tbaa !138 + %238 = getelementptr inbounds nuw [234 x i16], ptr %5, i64 0, i64 %indvars.iv354 + store i16 1, ptr %238, align 2, !tbaa !137 + br label %343 .thread271: ; preds = %.critedge3, %.preheader303, %_ZNK4llvm3MVT17getPow2VectorTypeEv.exit, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit148, %160, %160 - %237 = add nsw i16 %157, -191 - %spec.select.i.i.i149 = icmp ult i16 %237, -53 + %239 = add nsw i16 %157, -191 + %spec.select.i.i.i149 = icmp ult i16 %239, -53 %.sroa.052.sroa.0.0.extract.trunc.i = zext i16 %165 to i32 br i1 %spec.select.i.i.i149, label %._crit_edge.i, label %_ZN4llvm13isPowerOf2_32Ej.exit.i ._crit_edge.i: ; preds = %.thread271 %.pre.i = call range(i32 1, 17) i32 @llvm.ctpop.i32(i32 %.sroa.052.sroa.0.0.extract.trunc.i) - %238 = icmp samesign ugt i32 %.pre.i, 1 - br label %241 + %240 = icmp samesign ugt i32 %.pre.i, 1 + br label %243 _ZN4llvm13isPowerOf2_32Ej.exit.i: ; preds = %.thread271 %.not.i.i.i = icmp ne i16 %165, 0 call void @llvm.assume(i1 %.not.i.i.i) - %239 = call range(i32 1, 17) i32 @llvm.ctpop.i32(i32 %.sroa.052.sroa.0.0.extract.trunc.i) - %240 = icmp samesign ult i32 %239, 2 - call void @llvm.assume(i1 %240) - br label %241 + %241 = call range(i32 1, 17) i32 @llvm.ctpop.i32(i32 %.sroa.052.sroa.0.0.extract.trunc.i) + %242 = icmp samesign ult i32 %241, 2 + call void @llvm.assume(i1 %242) + br label %243 -241: ; preds = %_ZN4llvm13isPowerOf2_32Ej.exit.i, %._crit_edge.i - %.pre-phi.i = phi i1 [ %238, %._crit_edge.i ], [ false, %_ZN4llvm13isPowerOf2_32Ej.exit.i ] +243: ; preds = %_ZN4llvm13isPowerOf2_32Ej.exit.i, %._crit_edge.i + %.pre-phi.i = phi i1 [ %240, %._crit_edge.i ], [ false, %_ZN4llvm13isPowerOf2_32Ej.exit.i ] %.not.i.i26.i = icmp eq i16 %165, 0 %or.cond.not87.i = select i1 %.not.i.i26.i, i1 true, i1 %.pre-phi.i %.sroa.052.sroa.0.0.i = select i1 %or.cond.not87.i, i32 1, i32 %.sroa.052.sroa.0.0.extract.trunc.i %narrow.not.i = or i1 %spec.select.i.i.i149, %or.cond.not87.i %.025.i = select i1 %or.cond.not87.i, i16 %165, i16 1 - %242 = icmp samesign ugt i32 %.sroa.052.sroa.0.0.i, 1 - br i1 %242, label %.lr.ph.i, label %.critedge.i + %244 = icmp samesign ugt i32 %.sroa.052.sroa.0.0.i, 1 + br i1 %244, label %.lr.ph.i, label %.critedge.i -.lr.ph.i: ; preds = %241 +.lr.ph.i: ; preds = %243 br i1 %narrow.not.i, label %_ZN4llvm3MVT11getVectorVTES0_NS_12ElementCountE.exit.us.i, label %_ZN4llvm3MVT11getVectorVTES0_NS_12ElementCountE.exit.i _ZN4llvm3MVT11getVectorVTES0_NS_12ElementCountE.exit.us.i: ; preds = %.lr.ph.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.us.i - %.189.us.i = phi i16 [ %248, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.us.i ], [ %.025.i, %.lr.ph.i ] - %.sroa.052.sroa.0.188.us.i = phi i32 [ %247, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.us.i ], [ %.sroa.052.sroa.0.0.extract.trunc.i, %.lr.ph.i ] - %243 = call i16 @_ZN4llvm3MVT11getVectorVTES0_j(i16 %163, i32 noundef %.sroa.052.sroa.0.188.us.i) - %.not.i28.us.i = icmp eq i16 %243, 0 + %.189.us.i = phi i16 [ %250, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.us.i ], [ %.025.i, %.lr.ph.i ] + %.sroa.052.sroa.0.188.us.i = phi i32 [ %249, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.us.i ], [ %.sroa.052.sroa.0.0.extract.trunc.i, %.lr.ph.i ] + %245 = call i16 @_ZN4llvm3MVT11getVectorVTES0_j(i16 %163, i32 noundef %.sroa.052.sroa.0.188.us.i) + %.not.i28.us.i = icmp eq i16 %245, 0 br i1 %.not.i28.us.i, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.us.i, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.us.i _ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.us.i: ; preds = %_ZN4llvm3MVT11getVectorVTES0_NS_12ElementCountE.exit.us.i - %244 = zext i16 %243 to i64 - %245 = getelementptr inbounds nuw [234 x ptr], ptr %10, i64 0, i64 %244 - %246 = load ptr, ptr %245, align 8, !tbaa !134 - %.not.us.i = icmp eq ptr %246, null + %246 = zext i16 %245 to i64 + %247 = getelementptr inbounds nuw [234 x ptr], ptr %10, i64 0, i64 %246 + %248 = load ptr, ptr %247, align 8, !tbaa !134 + %.not.us.i = icmp eq ptr %248, null br i1 %.not.us.i, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.us.i, label %.critedge.i _ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.us.i: ; preds = %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.us.i, %_ZN4llvm3MVT11getVectorVTES0_NS_12ElementCountE.exit.us.i - %247 = lshr i32 %.sroa.052.sroa.0.188.us.i, 1 - %248 = shl i16 %.189.us.i, 1 - %249 = icmp samesign ugt i32 %.sroa.052.sroa.0.188.us.i, 3 - br i1 %249, label %_ZN4llvm3MVT11getVectorVTES0_NS_12ElementCountE.exit.us.i, label %.critedge.i, !llvm.loop !394 + %249 = lshr i32 %.sroa.052.sroa.0.188.us.i, 1 + %250 = shl i16 %.189.us.i, 1 + %251 = icmp samesign ugt i32 %.sroa.052.sroa.0.188.us.i, 3 + br i1 %251, label %_ZN4llvm3MVT11getVectorVTES0_NS_12ElementCountE.exit.us.i, label %.critedge.i, !llvm.loop !394 _ZN4llvm3MVT11getVectorVTES0_NS_12ElementCountE.exit.i: ; preds = %.lr.ph.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.i - %.189.i = phi i16 [ %255, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.i ], [ %.025.i, %.lr.ph.i ] - %.sroa.052.sroa.0.188.i = phi i32 [ %254, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.i ], [ %.sroa.052.sroa.0.0.extract.trunc.i, %.lr.ph.i ] - %250 = call i16 @_ZN4llvm3MVT19getScalableVectorVTES0_j(i16 %163, i32 noundef %.sroa.052.sroa.0.188.i) - %.not.i28.i = icmp eq i16 %250, 0 + %.189.i = phi i16 [ %257, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.i ], [ %.025.i, %.lr.ph.i ] + %.sroa.052.sroa.0.188.i = phi i32 [ %256, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.i ], [ %.sroa.052.sroa.0.0.extract.trunc.i, %.lr.ph.i ] + %252 = call i16 @_ZN4llvm3MVT19getScalableVectorVTES0_j(i16 %163, i32 noundef %.sroa.052.sroa.0.188.i) + %.not.i28.i = icmp eq i16 %252, 0 br i1 %.not.i28.i, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.i, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.i _ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.i: ; preds = %_ZN4llvm3MVT11getVectorVTES0_NS_12ElementCountE.exit.i - %251 = zext i16 %250 to i64 - %252 = getelementptr inbounds nuw [234 x ptr], ptr %10, i64 0, i64 %251 - %253 = load ptr, ptr %252, align 8, !tbaa !134 - %.not.i150 = icmp eq ptr %253, null + %253 = zext i16 %252 to i64 + %254 = getelementptr inbounds nuw [234 x ptr], ptr %10, i64 0, i64 %253 + %255 = load ptr, ptr %254, align 8, !tbaa !134 + %.not.i150 = icmp eq ptr %255, null br i1 %.not.i150, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.i, label %.critedge.i _ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.i: ; preds = %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.i, %_ZN4llvm3MVT11getVectorVTES0_NS_12ElementCountE.exit.i - %254 = lshr i32 %.sroa.052.sroa.0.188.i, 1 - %255 = shl i16 %.189.i, 1 - %256 = icmp samesign ugt i32 %.sroa.052.sroa.0.188.i, 3 - br i1 %256, label %_ZN4llvm3MVT11getVectorVTES0_NS_12ElementCountE.exit.i, label %.critedge.i, !llvm.loop !394 - -.critedge.i: ; preds = %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.us.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.us.i, %241 - %.sroa.052.sroa.0.1.lcssa.i = phi i32 [ %.sroa.052.sroa.0.0.i, %241 ], [ %.sroa.052.sroa.0.188.us.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.us.i ], [ %247, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.us.i ], [ %.sroa.052.sroa.0.188.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.i ], [ %254, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.i ] - %.1.lcssa.i = phi i16 [ %.025.i, %241 ], [ %.189.us.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.us.i ], [ %248, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.us.i ], [ %.189.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.i ], [ %255, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.i ] - br i1 %narrow.not.i, label %259, label %257 - -257: ; preds = %.critedge.i - %258 = call i16 @_ZN4llvm3MVT19getScalableVectorVTES0_j(i16 %163, i32 noundef %.sroa.052.sroa.0.1.lcssa.i) - br label %_ZN4llvm3MVT11getVectorVTES0_NS_12ElementCountE.exit35.i + %256 = lshr i32 %.sroa.052.sroa.0.188.i, 1 + %257 = shl i16 %.189.i, 1 + %258 = icmp samesign ugt i32 %.sroa.052.sroa.0.188.i, 3 + br i1 %258, label %_ZN4llvm3MVT11getVectorVTES0_NS_12ElementCountE.exit.i, label %.critedge.i, !llvm.loop !394 + +.critedge.i: ; preds = %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.us.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.us.i, %243 + %.sroa.052.sroa.0.1.lcssa.i = phi i32 [ %.sroa.052.sroa.0.0.i, %243 ], [ %.sroa.052.sroa.0.188.us.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.us.i ], [ %249, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.us.i ], [ %.sroa.052.sroa.0.188.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.i ], [ %256, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.i ] + %.1.lcssa.i = phi i16 [ %.025.i, %243 ], [ %.189.us.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.us.i ], [ %250, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.us.i ], [ %.189.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.i ], [ %257, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.i ] + br i1 %narrow.not.i, label %261, label %259 259: ; preds = %.critedge.i - %260 = call i16 @_ZN4llvm3MVT11getVectorVTES0_j(i16 %163, i32 noundef %.sroa.052.sroa.0.1.lcssa.i) + %260 = call i16 @_ZN4llvm3MVT19getScalableVectorVTES0_j(i16 %163, i32 noundef %.sroa.052.sroa.0.1.lcssa.i) + br label %_ZN4llvm3MVT11getVectorVTES0_NS_12ElementCountE.exit35.i + +261: ; preds = %.critedge.i + %262 = call i16 @_ZN4llvm3MVT11getVectorVTES0_j(i16 %163, i32 noundef %.sroa.052.sroa.0.1.lcssa.i) br label %_ZN4llvm3MVT11getVectorVTES0_NS_12ElementCountE.exit35.i -_ZN4llvm3MVT11getVectorVTES0_NS_12ElementCountE.exit35.i: ; preds = %259, %257 - %.sroa.04.0.i34.i = phi i16 [ %258, %257 ], [ %260, %259 ] +_ZN4llvm3MVT11getVectorVTES0_NS_12ElementCountE.exit35.i: ; preds = %261, %259 + %.sroa.04.0.i34.i = phi i16 [ %260, %259 ], [ %262, %261 ] %.not.i36.i = icmp eq i16 %.sroa.04.0.i34.i, 0 br i1 %.not.i36.i, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit37.thread.i, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit37.i _ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit37.i: ; preds = %_ZN4llvm3MVT11getVectorVTES0_NS_12ElementCountE.exit35.i - %261 = zext i16 %.sroa.04.0.i34.i to i64 - %262 = getelementptr inbounds nuw [234 x ptr], ptr %10, i64 0, i64 %261 - %263 = load ptr, ptr %262, align 8, !tbaa !134 - %.not85.i = icmp eq ptr %263, null - br i1 %.not85.i, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit37.thread.i, label %264 + %263 = zext i16 %.sroa.04.0.i34.i to i64 + %264 = getelementptr inbounds nuw [234 x ptr], ptr %10, i64 0, i64 %263 + %265 = load ptr, ptr %264, align 8, !tbaa !134 + %.not85.i = icmp eq ptr %265, null + br i1 %.not85.i, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit37.thread.i, label %266 _ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit37.thread.i: ; preds = %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit37.i, %_ZN4llvm3MVT11getVectorVTES0_NS_12ElementCountE.exit35.i - br label %264 + br label %266 -264: ; preds = %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit37.thread.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit37.i +266: ; preds = %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit37.thread.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit37.i %.sroa.046.0.i = phi i16 [ %.sroa.04.0.i34.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit37.i ], [ %163, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit37.thread.i ] - %265 = add i16 %.sroa.046.0.i, -17 - %spec.select.i.i.i.i = icmp ult i16 %265, 174 - br i1 %spec.select.i.i.i.i, label %266, label %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit.i - -266: ; preds = %264 - %267 = zext nneg i16 %.sroa.046.0.i to i64 - %268 = add nsw i64 %267, -1 - %269 = getelementptr inbounds [241 x i16], ptr @_ZZNK4llvm3MVT20getVectorElementTypeEvE10EltTyTable, i64 0, i64 %268 - %270 = load i16, ptr %269, align 2, !tbaa !138 + %267 = add i16 %.sroa.046.0.i, -17 + %spec.select.i.i.i.i = icmp ult i16 %267, 174 + br i1 %spec.select.i.i.i.i, label %268, label %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit.i + +268: ; preds = %266 + %269 = zext nneg i16 %.sroa.046.0.i to i64 + %270 = add nsw i64 %269, -1 + %271 = getelementptr inbounds [241 x i16], ptr @_ZZNK4llvm3MVT20getVectorElementTypeEvE10EltTyTable, i64 0, i64 %270 + %272 = load i16, ptr %271, align 2, !tbaa !138 br label %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit.i -_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit.i: ; preds = %266, %264 - %.sroa.0.0.i.i.i = phi i16 [ %270, %266 ], [ %.sroa.046.0.i, %264 ] - %271 = zext i16 %.sroa.0.0.i.i.i to i64 - %272 = add nsw i64 %271, -1 - %273 = getelementptr inbounds [241 x %"class.llvm::TypeSize"], ptr @_ZZNK4llvm3MVT13getSizeInBitsEvE9SizeTable, i64 0, i64 %272 - %.sroa.0.0.copyload.i.i.i = load i64, ptr %273, align 16 - %274 = trunc i64 %.sroa.0.0.copyload.i.i.i to i32 - %275 = icmp ult i32 %274, 2 - br i1 %275, label %_ZN4llvm8bit_ceilIjEET_S1_.exit.i, label %276 - -276: ; preds = %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit.i - %277 = add i32 %274, -1 - %278 = call noundef range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %277, i1 false) - %279 = sub nuw nsw i32 32, %278 - %280 = shl nuw i32 1, %279 - %281 = zext i32 %280 to i64 +_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit.i: ; preds = %268, %266 + %.sroa.0.0.i.i.i = phi i16 [ %272, %268 ], [ %.sroa.046.0.i, %266 ] + %273 = zext i16 %.sroa.0.0.i.i.i to i64 + %274 = add nsw i64 %273, -1 + %275 = getelementptr inbounds [241 x %"class.llvm::TypeSize"], ptr @_ZZNK4llvm3MVT13getSizeInBitsEvE9SizeTable, i64 0, i64 %274 + %.sroa.0.0.copyload.i.i.i = load i64, ptr %275, align 16 + %276 = trunc i64 %.sroa.0.0.copyload.i.i.i to i32 + %277 = icmp ult i32 %276, 2 + br i1 %277, label %_ZN4llvm8bit_ceilIjEET_S1_.exit.i, label %278 + +278: ; preds = %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit.i + %279 = add i32 %276, -1 + %280 = call noundef range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %279, i1 false) + %281 = sub nuw nsw i32 32, %280 + %282 = shl nuw i32 1, %281 + %283 = zext i32 %282 to i64 br label %_ZN4llvm8bit_ceilIjEET_S1_.exit.i -_ZN4llvm8bit_ceilIjEET_S1_.exit.i: ; preds = %276, %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit.i - %.0.i.i = phi i64 [ %281, %276 ], [ 1, %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit.i ] - %282 = zext i16 %.sroa.046.0.i to i64 - %283 = getelementptr inbounds nuw [234 x %"class.llvm::MVT"], ptr %7, i64 0, i64 %282 - %.sroa.01.0.copyload.i.i = load i16, ptr %283, align 2, !tbaa !138 +_ZN4llvm8bit_ceilIjEET_S1_.exit.i: ; preds = %278, %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit.i + %.0.i.i = phi i64 [ %283, %278 ], [ 1, %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit.i ] + %284 = zext i16 %.sroa.046.0.i to i64 + %285 = getelementptr inbounds nuw [234 x %"class.llvm::MVT"], ptr %7, i64 0, i64 %284 + %.sroa.01.0.copyload.i.i = load i16, ptr %285, align 2, !tbaa !138 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #27 store i16 %.sroa.01.0.copyload.i.i, ptr %4, align 8, !tbaa !138 store ptr null, ptr %153, align 8, !tbaa !151 @@ -6452,187 +6454,187 @@ _ZNK4llvm3EVTeqES0_.exit.thread11.i.i: ; preds = %_ZN4llvm8bit_ceilIj store i16 %.sroa.046.0.i, ptr %3, align 8 store ptr null, ptr %154, align 8 %.not.i.i8.i.i = icmp eq i16 %.sroa.01.0.copyload.i.i, 0 - br i1 %.not.i.i8.i.i, label %288, label %284 - -284: ; preds = %_ZNK4llvm3EVTeqES0_.exit.thread11.i.i - %285 = zext i16 %.sroa.01.0.copyload.i.i to i64 - %286 = add nsw i64 %285, -1 - %287 = getelementptr inbounds [241 x %"class.llvm::TypeSize"], ptr @_ZZNK4llvm3MVT13getSizeInBitsEvE9SizeTable, i64 0, i64 %286 - %.sroa.0.0.copyload.i.i.i.i.i = load i64, ptr %287, align 16 - %.sroa.2.0..sroa_idx.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %287, i64 8 + br i1 %.not.i.i8.i.i, label %290, label %286 + +286: ; preds = %_ZNK4llvm3EVTeqES0_.exit.thread11.i.i + %287 = zext i16 %.sroa.01.0.copyload.i.i to i64 + %288 = add nsw i64 %287, -1 + %289 = getelementptr inbounds [241 x %"class.llvm::TypeSize"], ptr @_ZZNK4llvm3MVT13getSizeInBitsEvE9SizeTable, i64 0, i64 %288 + %.sroa.0.0.copyload.i.i.i.i.i = load i64, ptr %289, align 16 + %.sroa.2.0..sroa_idx.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %289, i64 8 %.sroa.2.0.copyload.i.i.i.i.i = load i8, ptr %.sroa.2.0..sroa_idx.i.i.i.i.i, align 8 %.fca.0.insert.i.i.i.i.i = insertvalue { i64, i8 } poison, i64 %.sroa.0.0.copyload.i.i.i.i.i, 0 %.fca.1.insert.i.i.i.i.i = insertvalue { i64, i8 } %.fca.0.insert.i.i.i.i.i, i8 %.sroa.2.0.copyload.i.i.i.i.i, 1 br label %_ZNK4llvm3EVT13getSizeInBitsEv.exit.i.i.i -288: ; preds = %_ZNK4llvm3EVTeqES0_.exit.thread11.i.i - %289 = call { i64, i8 } @_ZNK4llvm3EVT21getExtendedSizeInBitsEv(ptr noundef nonnull align 8 dereferenceable(16) %4) #28 +290: ; preds = %_ZNK4llvm3EVTeqES0_.exit.thread11.i.i + %291 = call { i64, i8 } @_ZNK4llvm3EVT21getExtendedSizeInBitsEv(ptr noundef nonnull align 8 dereferenceable(16) %4) #28 br label %_ZNK4llvm3EVT13getSizeInBitsEv.exit.i.i.i -_ZNK4llvm3EVT13getSizeInBitsEv.exit.i.i.i: ; preds = %288, %284 - %.pn.i.i.i.i = phi { i64, i8 } [ %.fca.1.insert.i.i.i.i.i, %284 ], [ %289, %288 ] +_ZNK4llvm3EVT13getSizeInBitsEv.exit.i.i.i: ; preds = %290, %286 + %.pn.i.i.i.i = phi { i64, i8 } [ %.fca.1.insert.i.i.i.i.i, %286 ], [ %291, %290 ] %.fca.0.extract1.i.i.i = extractvalue { i64, i8 } %.pn.i.i.i.i, 0 %.fca.1.extract2.i.i.i = extractvalue { i64, i8 } %.pn.i.i.i.i, 1 %.not.i5.i.i.i = icmp eq i16 %.sroa.046.0.i, 0 - br i1 %.not.i5.i.i.i, label %293, label %290 + br i1 %.not.i5.i.i.i, label %295, label %292 -290: ; preds = %_ZNK4llvm3EVT13getSizeInBitsEv.exit.i.i.i - %291 = add nsw i64 %282, -1 - %292 = getelementptr inbounds [241 x %"class.llvm::TypeSize"], ptr @_ZZNK4llvm3MVT13getSizeInBitsEvE9SizeTable, i64 0, i64 %291 - %.sroa.0.0.copyload.i.i6.i.i.i = load i64, ptr %292, align 16 - %.sroa.2.0..sroa_idx.i.i7.i.i.i = getelementptr inbounds nuw i8, ptr %292, i64 8 +292: ; preds = %_ZNK4llvm3EVT13getSizeInBitsEv.exit.i.i.i + %293 = add nsw i64 %284, -1 + %294 = getelementptr inbounds [241 x %"class.llvm::TypeSize"], ptr @_ZZNK4llvm3MVT13getSizeInBitsEvE9SizeTable, i64 0, i64 %293 + %.sroa.0.0.copyload.i.i6.i.i.i = load i64, ptr %294, align 16 + %.sroa.2.0..sroa_idx.i.i7.i.i.i = getelementptr inbounds nuw i8, ptr %294, i64 8 %.sroa.2.0.copyload.i.i8.i.i.i = load i8, ptr %.sroa.2.0..sroa_idx.i.i7.i.i.i, align 8 %.fca.0.insert.i.i9.i.i.i = insertvalue { i64, i8 } poison, i64 %.sroa.0.0.copyload.i.i6.i.i.i, 0 %.fca.1.insert.i.i10.i.i.i = insertvalue { i64, i8 } %.fca.0.insert.i.i9.i.i.i, i8 %.sroa.2.0.copyload.i.i8.i.i.i, 1 br label %_ZNK4llvm3EVT13getSizeInBitsEv.exit12.i.i.i -293: ; preds = %_ZNK4llvm3EVT13getSizeInBitsEv.exit.i.i.i - %294 = call { i64, i8 } @_ZNK4llvm3EVT21getExtendedSizeInBitsEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #28 +295: ; preds = %_ZNK4llvm3EVT13getSizeInBitsEv.exit.i.i.i + %296 = call { i64, i8 } @_ZNK4llvm3EVT21getExtendedSizeInBitsEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #28 br label %_ZNK4llvm3EVT13getSizeInBitsEv.exit12.i.i.i -_ZNK4llvm3EVT13getSizeInBitsEv.exit12.i.i.i: ; preds = %293, %290 - %.pn.i11.i.i.i = phi { i64, i8 } [ %.fca.1.insert.i.i10.i.i.i, %290 ], [ %294, %293 ] +_ZNK4llvm3EVT13getSizeInBitsEv.exit12.i.i.i: ; preds = %295, %292 + %.pn.i11.i.i.i = phi { i64, i8 } [ %.fca.1.insert.i.i10.i.i.i, %292 ], [ %296, %295 ] %.fca.0.extract.i.i.i = extractvalue { i64, i8 } %.pn.i11.i.i.i, 0 - %295 = trunc nuw i8 %.fca.1.extract2.i.i.i to i1 - br i1 %295, label %296, label %_ZNK4llvm3EVT6bitsLTES0_.exit.i + %297 = trunc nuw i8 %.fca.1.extract2.i.i.i to i1 + br i1 %297, label %298, label %_ZNK4llvm3EVT6bitsLTES0_.exit.i -296: ; preds = %_ZNK4llvm3EVT13getSizeInBitsEv.exit12.i.i.i +298: ; preds = %_ZNK4llvm3EVT13getSizeInBitsEv.exit12.i.i.i %.fca.1.extract.i.i.i = extractvalue { i64, i8 } %.pn.i11.i.i.i, 1 - %297 = trunc nuw i8 %.fca.1.extract.i.i.i to i1 - br i1 %297, label %_ZNK4llvm3EVT6bitsLTES0_.exit.i, label %_ZNK4llvm3EVT6bitsLTES0_.exit.thread82.i + %299 = trunc nuw i8 %.fca.1.extract.i.i.i to i1 + br i1 %299, label %_ZNK4llvm3EVT6bitsLTES0_.exit.i, label %_ZNK4llvm3EVT6bitsLTES0_.exit.thread82.i -_ZNK4llvm3EVT6bitsLTES0_.exit.thread82.i: ; preds = %296 +_ZNK4llvm3EVT6bitsLTES0_.exit.thread82.i: ; preds = %298 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #27 br label %_ZL25getVectorTypeBreakdownMVTN4llvm3MVTERS0_RjS1_PNS_18TargetLoweringBaseE.exit -_ZNK4llvm3EVT6bitsLTES0_.exit.i: ; preds = %296, %_ZNK4llvm3EVT13getSizeInBitsEv.exit12.i.i.i - %298 = icmp ult i64 %.fca.0.extract1.i.i.i, %.fca.0.extract.i.i.i +_ZNK4llvm3EVT6bitsLTES0_.exit.i: ; preds = %298, %_ZNK4llvm3EVT13getSizeInBitsEv.exit12.i.i.i + %300 = icmp ult i64 %.fca.0.extract1.i.i.i, %.fca.0.extract.i.i.i call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #27 - br i1 %298, label %299, label %_ZL25getVectorTypeBreakdownMVTN4llvm3MVTERS0_RjS1_PNS_18TargetLoweringBaseE.exit - -299: ; preds = %_ZNK4llvm3EVT6bitsLTES0_.exit.i - %300 = add i16 %.sroa.01.0.copyload.i.i, -17 - %spec.select.i.i.i39.i = icmp ult i16 %300, 174 - br i1 %spec.select.i.i.i39.i, label %301, label %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit42.i - -301: ; preds = %299 - %302 = zext nneg i16 %.sroa.01.0.copyload.i.i to i64 - %303 = add nsw i64 %302, -1 - %304 = getelementptr inbounds [241 x i16], ptr @_ZZNK4llvm3MVT20getVectorElementTypeEvE10EltTyTable, i64 0, i64 %303 - %305 = load i16, ptr %304, align 2, !tbaa !138 + br i1 %300, label %301, label %_ZL25getVectorTypeBreakdownMVTN4llvm3MVTERS0_RjS1_PNS_18TargetLoweringBaseE.exit + +301: ; preds = %_ZNK4llvm3EVT6bitsLTES0_.exit.i + %302 = add i16 %.sroa.01.0.copyload.i.i, -17 + %spec.select.i.i.i39.i = icmp ult i16 %302, 174 + br i1 %spec.select.i.i.i39.i, label %303, label %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit42.i + +303: ; preds = %301 + %304 = zext nneg i16 %.sroa.01.0.copyload.i.i to i64 + %305 = add nsw i64 %304, -1 + %306 = getelementptr inbounds [241 x i16], ptr @_ZZNK4llvm3MVT20getVectorElementTypeEvE10EltTyTable, i64 0, i64 %305 + %307 = load i16, ptr %306, align 2, !tbaa !138 br label %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit42.i -_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit42.i: ; preds = %301, %299 - %.sroa.0.0.i.i40.i = phi i16 [ %305, %301 ], [ %.sroa.01.0.copyload.i.i, %299 ] - %306 = zext i16 %.sroa.0.0.i.i40.i to i64 - %307 = add nsw i64 %306, -1 - %308 = getelementptr inbounds [241 x %"class.llvm::TypeSize"], ptr @_ZZNK4llvm3MVT13getSizeInBitsEvE9SizeTable, i64 0, i64 %307 - %.sroa.0.0.copyload.i.i41.i = load i64, ptr %308, align 16 - %309 = udiv i64 %.0.i.i, %.sroa.0.0.copyload.i.i41.i - %310 = trunc i64 %309 to i16 - %311 = mul i16 %.1.lcssa.i, %310 +_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit42.i: ; preds = %303, %301 + %.sroa.0.0.i.i40.i = phi i16 [ %307, %303 ], [ %.sroa.01.0.copyload.i.i, %301 ] + %308 = zext i16 %.sroa.0.0.i.i40.i to i64 + %309 = add nsw i64 %308, -1 + %310 = getelementptr inbounds [241 x %"class.llvm::TypeSize"], ptr @_ZZNK4llvm3MVT13getSizeInBitsEvE9SizeTable, i64 0, i64 %309 + %.sroa.0.0.copyload.i.i41.i = load i64, ptr %310, align 16 + %311 = udiv i64 %.0.i.i, %.sroa.0.0.copyload.i.i41.i + %312 = trunc i64 %311 to i16 + %313 = mul i16 %.1.lcssa.i, %312 br label %_ZL25getVectorTypeBreakdownMVTN4llvm3MVTERS0_RjS1_PNS_18TargetLoweringBaseE.exit _ZL25getVectorTypeBreakdownMVTN4llvm3MVTERS0_RjS1_PNS_18TargetLoweringBaseE.exit: ; preds = %_ZNK4llvm3EVT6bitsLTES0_.exit.thread.i, %_ZNK4llvm3EVT6bitsLTES0_.exit.thread82.i, %_ZNK4llvm3EVT6bitsLTES0_.exit.i, %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit42.i - %.0.i = phi i16 [ %311, %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit42.i ], [ %.1.lcssa.i, %_ZNK4llvm3EVT6bitsLTES0_.exit.i ], [ %.1.lcssa.i, %_ZNK4llvm3EVT6bitsLTES0_.exit.thread.i ], [ %.1.lcssa.i, %_ZNK4llvm3EVT6bitsLTES0_.exit.thread82.i ] - %312 = getelementptr inbounds nuw [234 x i16], ptr %5, i64 0, i64 %indvars.iv354 - store i16 %.0.i, ptr %312, align 2, !tbaa !137 - %313 = getelementptr inbounds nuw [234 x %"class.llvm::MVT"], ptr %7, i64 0, i64 %indvars.iv354 - store i16 %.sroa.01.0.copyload.i.i, ptr %313, align 2, !tbaa !138 - %314 = call range(i16 0, 17) i16 @llvm.ctpop.i16(i16 %165) - %.not.i.i151 = icmp samesign ult i16 %314, 2 - br i1 %.not.i.i151, label %_ZNK4llvm3MVT17getPow2VectorTypeEv.exit156.thread, label %315 - -315: ; preds = %_ZL25getVectorTypeBreakdownMVTN4llvm3MVTERS0_RjS1_PNS_18TargetLoweringBaseE.exit - %316 = add nsw i32 %.sroa.052.sroa.0.0.extract.trunc.i, -1 - %317 = call noundef range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %316, i1 false) - %318 = sub nuw nsw i32 32, %317 - %319 = shl nuw nsw i32 1, %318 - br i1 %spec.select.i.i.i149, label %322, label %320 - -320: ; preds = %315 - %321 = call i16 @_ZN4llvm3MVT19getScalableVectorVTES0_j(i16 %163, i32 noundef %319) + %.0.i = phi i16 [ %313, %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit42.i ], [ %.1.lcssa.i, %_ZNK4llvm3EVT6bitsLTES0_.exit.i ], [ %.1.lcssa.i, %_ZNK4llvm3EVT6bitsLTES0_.exit.thread.i ], [ %.1.lcssa.i, %_ZNK4llvm3EVT6bitsLTES0_.exit.thread82.i ] + %314 = getelementptr inbounds nuw [234 x i16], ptr %5, i64 0, i64 %indvars.iv354 + store i16 %.0.i, ptr %314, align 2, !tbaa !137 + %315 = getelementptr inbounds nuw [234 x %"class.llvm::MVT"], ptr %7, i64 0, i64 %indvars.iv354 + store i16 %.sroa.01.0.copyload.i.i, ptr %315, align 2, !tbaa !138 + %316 = call range(i16 0, 17) i16 @llvm.ctpop.i16(i16 %165) + %.not.i.i151 = icmp samesign ult i16 %316, 2 + br i1 %.not.i.i151, label %_ZNK4llvm3MVT17getPow2VectorTypeEv.exit156.thread, label %317 + +317: ; preds = %_ZL25getVectorTypeBreakdownMVTN4llvm3MVTERS0_RjS1_PNS_18TargetLoweringBaseE.exit + %318 = add nsw i32 %.sroa.052.sroa.0.0.extract.trunc.i, -1 + %319 = call noundef range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %318, i1 false) + %320 = sub nuw nsw i32 32, %319 + %321 = shl nuw nsw i32 1, %320 + br i1 %spec.select.i.i.i149, label %324, label %322 + +322: ; preds = %317 + %323 = call i16 @_ZN4llvm3MVT19getScalableVectorVTES0_j(i16 %163, i32 noundef %321) br label %_ZNK4llvm3MVT17getPow2VectorTypeEv.exit156 -322: ; preds = %315 - %323 = call i16 @_ZN4llvm3MVT11getVectorVTES0_j(i16 %163, i32 noundef %319) +324: ; preds = %317 + %325 = call i16 @_ZN4llvm3MVT11getVectorVTES0_j(i16 %163, i32 noundef %321) br label %_ZNK4llvm3MVT17getPow2VectorTypeEv.exit156 -_ZNK4llvm3MVT17getPow2VectorTypeEv.exit156: ; preds = %320, %322 - %.sroa.03.0.i155 = phi i16 [ %321, %320 ], [ %323, %322 ] - %324 = icmp eq i16 %.sroa.03.0.i155, %157 - br i1 %324, label %_ZNK4llvm3MVT17getPow2VectorTypeEv.exit156.thread, label %337 +_ZNK4llvm3MVT17getPow2VectorTypeEv.exit156: ; preds = %322, %324 + %.sroa.03.0.i155 = phi i16 [ %323, %322 ], [ %325, %324 ] + %326 = icmp eq i16 %.sroa.03.0.i155, %157 + br i1 %326, label %_ZNK4llvm3MVT17getPow2VectorTypeEv.exit156.thread, label %339 _ZNK4llvm3MVT17getPow2VectorTypeEv.exit156.thread: ; preds = %_ZL25getVectorTypeBreakdownMVTN4llvm3MVTERS0_RjS1_PNS_18TargetLoweringBaseE.exit, %_ZNK4llvm3MVT17getPow2VectorTypeEv.exit156 - %325 = getelementptr inbounds nuw [234 x %"class.llvm::MVT"], ptr %6, i64 0, i64 %indvars.iv354 - store i16 1, ptr %325, align 2, !tbaa !138 - switch i8 %170, label %330 [ - i8 5, label %326 - i8 6, label %328 + %327 = getelementptr inbounds nuw [234 x %"class.llvm::MVT"], ptr %6, i64 0, i64 %indvars.iv354 + store i16 1, ptr %327, align 2, !tbaa !138 + switch i8 %170, label %332 [ + i8 5, label %328 + i8 6, label %330 ] -326: ; preds = %_ZNK4llvm3MVT17getPow2VectorTypeEv.exit156.thread - %327 = getelementptr inbounds nuw [234 x i8], ptr %152, i64 0, i64 %indvars.iv354 - store i8 5, ptr %327, align 1, !tbaa !84 - br label %341 - 328: ; preds = %_ZNK4llvm3MVT17getPow2VectorTypeEv.exit156.thread %329 = getelementptr inbounds nuw [234 x i8], ptr %152, i64 0, i64 %indvars.iv354 - store i8 6, ptr %329, align 1, !tbaa !84 - br label %341 + store i8 5, ptr %329, align 1, !tbaa !84 + br label %343 330: ; preds = %_ZNK4llvm3MVT17getPow2VectorTypeEv.exit156.thread - %331 = icmp ugt i16 %165, 1 - br i1 %331, label %332, label %334 - -332: ; preds = %330 - %333 = getelementptr inbounds nuw [234 x i8], ptr %152, i64 0, i64 %indvars.iv354 - store i8 6, ptr %333, align 1, !tbaa !84 - br label %341 - -334: ; preds = %330 - %335 = select i1 %spec.select.i.i, i8 10, i8 5 - %336 = getelementptr inbounds nuw [234 x i8], ptr %152, i64 0, i64 %indvars.iv354 - store i8 %335, ptr %336, align 1, !tbaa !84 - br label %341 - -337: ; preds = %_ZNK4llvm3MVT17getPow2VectorTypeEv.exit156 - %338 = getelementptr inbounds nuw [234 x %"class.llvm::MVT"], ptr %6, i64 0, i64 %indvars.iv354 - store i16 %.sroa.03.0.i155, ptr %338, align 2, !tbaa !138 - %339 = getelementptr inbounds nuw [234 x i8], ptr %152, i64 0, i64 %indvars.iv354 - store i8 7, ptr %339, align 1, !tbaa !84 - br label %341 - -340: ; preds = %160 + %331 = getelementptr inbounds nuw [234 x i8], ptr %152, i64 0, i64 %indvars.iv354 + store i8 6, ptr %331, align 1, !tbaa !84 + br label %343 + +332: ; preds = %_ZNK4llvm3MVT17getPow2VectorTypeEv.exit156.thread + %333 = icmp ugt i16 %165, 1 + br i1 %333, label %334, label %336 + +334: ; preds = %332 + %335 = getelementptr inbounds nuw [234 x i8], ptr %152, i64 0, i64 %indvars.iv354 + store i8 6, ptr %335, align 1, !tbaa !84 + br label %343 + +336: ; preds = %332 + %337 = select i1 %spec.select.i.i, i8 10, i8 5 + %338 = getelementptr inbounds nuw [234 x i8], ptr %152, i64 0, i64 %indvars.iv354 + store i8 %337, ptr %338, align 1, !tbaa !84 + br label %343 + +339: ; preds = %_ZNK4llvm3MVT17getPow2VectorTypeEv.exit156 + %340 = getelementptr inbounds nuw [234 x %"class.llvm::MVT"], ptr %6, i64 0, i64 %indvars.iv354 + store i16 %.sroa.03.0.i155, ptr %340, align 2, !tbaa !138 + %341 = getelementptr inbounds nuw [234 x i8], ptr %152, i64 0, i64 %indvars.iv354 + store i8 7, ptr %341, align 1, !tbaa !84 + br label %343 + +342: ; preds = %160 unreachable -341: ; preds = %.thread260, %.thread264, %232, %326, %332, %334, %328, %337, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit130 +343: ; preds = %.thread260, %.thread264, %234, %328, %334, %336, %330, %339, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit130 %indvars.iv.next355 = add nuw nsw i64 %indvars.iv354, 1 %indvars.iv.next347 = add nuw nsw i64 %indvars.iv346, 1 %exitcond363.not = icmp eq i64 %indvars.iv.next355, 191 br i1 %exitcond363.not, label %.preheader, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit130, !llvm.loop !395 -342: ; preds = %343 +344: ; preds = %345 ret void -343: ; preds = %.preheader, %343 - %indvars.iv364 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next365, %343 ] - %344 = trunc i64 %indvars.iv364 to i16 - %345 = load ptr, ptr %0, align 8, !tbaa !3 - %346 = getelementptr inbounds nuw i8, ptr %345, i64 1264 - %347 = load ptr, ptr %346, align 8 - %348 = call { ptr, i8 } %347(ptr noundef nonnull align 8 dereferenceable(412423) %0, ptr noundef %1, i16 %344) #27 - %.fca.0.extract = extractvalue { ptr, i8 } %348, 0 - %.fca.1.extract = extractvalue { ptr, i8 } %348, 1 - %349 = getelementptr inbounds nuw [234 x ptr], ptr %155, i64 0, i64 %indvars.iv364 - store ptr %.fca.0.extract, ptr %349, align 8, !tbaa !134 - %350 = getelementptr inbounds nuw [234 x i8], ptr %156, i64 0, i64 %indvars.iv364 - store i8 %.fca.1.extract, ptr %350, align 1, !tbaa !136 +345: ; preds = %.preheader, %345 + %indvars.iv364 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next365, %345 ] + %346 = trunc i64 %indvars.iv364 to i16 + %347 = load ptr, ptr %0, align 8, !tbaa !3 + %348 = getelementptr inbounds nuw i8, ptr %347, i64 1264 + %349 = load ptr, ptr %348, align 8 + %350 = call { ptr, i8 } %349(ptr noundef nonnull align 8 dereferenceable(412423) %0, ptr noundef %1, i16 %346) #27 + %.fca.0.extract = extractvalue { ptr, i8 } %350, 0 + %.fca.1.extract = extractvalue { ptr, i8 } %350, 1 + %351 = getelementptr inbounds nuw [234 x ptr], ptr %155, i64 0, i64 %indvars.iv364 + store ptr %.fca.0.extract, ptr %351, align 8, !tbaa !134 + %352 = getelementptr inbounds nuw [234 x i8], ptr %156, i64 0, i64 %indvars.iv364 + store i8 %.fca.1.extract, ptr %352, align 1, !tbaa !136 %indvars.iv.next365 = add nuw nsw i64 %indvars.iv364, 1 %.not109 = icmp eq i64 %indvars.iv.next365, 234 - br i1 %.not109, label %342, label %343, !llvm.loop !396 + br i1 %.not109, label %344, label %345, !llvm.loop !396 } ; Function Attrs: mustprogress nounwind uwtable diff --git a/bench/luajit/optimized/minilua.ll b/bench/luajit/optimized/minilua.ll index 6d95cbdea51..8eeab66a723 100644 --- a/bench/luajit/optimized/minilua.ll +++ b/bench/luajit/optimized/minilua.ll @@ -35167,12 +35167,11 @@ sw.default.i.i: ; preds = %if.else9.i.i %func18.i.i = getelementptr inbounds nuw i8, ptr %67, i64 8 %68 = load ptr, ptr %func18.i.i, align 8 %69 = load ptr, ptr %68, align 8 + %70 = add nsw i64 %indvars.iv, -10001 %nupvalues.i.i = getelementptr inbounds nuw i8, ptr %69, i64 11 - %70 = load i8, ptr %nupvalues.i.i, align 1 - %conv.i.i145 = zext i8 %70 to i32 - %71 = trunc i64 %indvars.iv to i32 - %72 = add i32 %71, -10001 - %cmp21.not.i.i = icmp samesign ugt i32 %72, %conv.i.i145 + %71 = load i8, ptr %nupvalues.i.i, align 1 + %72 = zext i8 %71 to i64 + %cmp21.not.i.i = icmp samesign ugt i64 %70, %72 %upvalue.i.i = getelementptr inbounds nuw i8, ptr %69, i64 40 %73 = add nsw i64 %indvars.iv, -10002 %arrayidx.i.i = getelementptr inbounds nuw [1 x %struct.lua_TValue], ptr %upvalue.i.i, i64 0, i64 %73 @@ -43370,12 +43369,11 @@ sw.default.i.i: ; preds = %if.else9.i.i %func18.i.i = getelementptr inbounds nuw i8, ptr %48, i64 8 %49 = load ptr, ptr %func18.i.i, align 8 %50 = load ptr, ptr %49, align 8 + %51 = add nsw i64 %indvars.iv, -10001 %nupvalues.i.i = getelementptr inbounds nuw i8, ptr %50, i64 11 - %51 = load i8, ptr %nupvalues.i.i, align 1 - %conv.i.i53 = zext i8 %51 to i32 - %52 = trunc i64 %indvars.iv to i32 - %53 = add i32 %52, -10001 - %cmp21.not.i.i = icmp samesign ugt i32 %53, %conv.i.i53 + %52 = load i8, ptr %nupvalues.i.i, align 1 + %53 = zext i8 %52 to i64 + %cmp21.not.i.i = icmp samesign ugt i64 %51, %53 %upvalue.i.i = getelementptr inbounds nuw i8, ptr %50, i64 40 %54 = add nsw i64 %indvars.iv, -10002 %arrayidx.i.i = getelementptr inbounds nuw [1 x %struct.lua_TValue], ptr %upvalue.i.i, i64 0, i64 %54 diff --git a/bench/miniaudio/optimized/unity.ll b/bench/miniaudio/optimized/unity.ll index f560da2c0a0..5fab35de64f 100644 --- a/bench/miniaudio/optimized/unity.ll +++ b/bench/miniaudio/optimized/unity.ll @@ -107215,11 +107215,7 @@ define internal fastcc void @ma_dr_mp3d_synth_granule(ptr noundef captures(none) entry: %t.i = alloca [4 x [8 x <4 x float>]], align 16 %cmp39 = icmp sgt i32 %nch, 0 - br i1 %cmp39, label %for.body.lr.ph, label %entry.for.end_crit_edge - -entry.for.end_crit_edge: ; preds = %entry - %.pre = zext nneg i32 %nbands to i64 - br label %for.end + br i1 %cmp39, label %for.body.lr.ph, label %for.end for.body.lr.ph: ; preds = %entry %sub137.i = add nsw i32 %nbands, -3 @@ -107490,8 +107486,7 @@ ma_dr_mp3d_DCT_II.exit: ; preds = %for.inc249.i %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %for.end, label %for.body, !llvm.loop !875 -for.end: ; preds = %ma_dr_mp3d_DCT_II.exit, %entry.for.end_crit_edge - %.pre-phi = phi i64 [ %.pre, %entry.for.end_crit_edge ], [ %1, %ma_dr_mp3d_DCT_II.exit ] +for.end: ; preds = %ma_dr_mp3d_DCT_II.exit, %entry tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(3840) %lins, ptr noundef nonnull align 4 dereferenceable(3840) %qmf_state, i64 3840, i1 false) %mul6 = shl nsw i32 %nch, 5 %sub.i = add nsw i32 %nch, -1 @@ -107500,48 +107495,49 @@ for.end: ; preds = %ma_dr_mp3d_DCT_II.e %idx.ext2.i = sext i32 %sub.i to i64 %idx.ext23.i = sext i32 %mul6 to i64 %44 = sext i32 %nch to i64 + %45 = zext nneg i32 %nbands to i64 br label %for.body3 for.body3: ; preds = %for.end, %ma_dr_mp3d_synth.exit %indvars.iv45 = phi i64 [ 0, %for.end ], [ %indvars.iv.next46, %ma_dr_mp3d_synth.exit ] %add.ptr5 = getelementptr inbounds nuw float, ptr %grbuf, i64 %indvars.iv45 - %45 = mul nsw i64 %indvars.iv45, %idx.ext23.i - %add.ptr9 = getelementptr inbounds i16, ptr %pcm, i64 %45 + %46 = mul nsw i64 %indvars.iv45, %idx.ext23.i + %add.ptr9 = getelementptr inbounds i16, ptr %pcm, i64 %46 %add.ptr12.idx = shl nsw i64 %indvars.iv45, 8 %add.ptr12 = getelementptr inbounds nuw i8, ptr %lins, i64 %add.ptr12.idx %add.ptr.i24 = getelementptr inbounds float, ptr %add.ptr5, i64 %idx.ext.i %add.ptr3.i = getelementptr inbounds i16, ptr %add.ptr9, i64 %idx.ext2.i %add.ptr4.i = getelementptr inbounds nuw i8, ptr %add.ptr12, i64 3840 %arrayidx.i = getelementptr inbounds nuw i8, ptr %add.ptr5, i64 1152 - %46 = load float, ptr %arrayidx.i, align 4 + %47 = load float, ptr %arrayidx.i, align 4 %arrayidx5.i = getelementptr inbounds nuw i8, ptr %add.ptr12, i64 4080 - store float %46, ptr %arrayidx5.i, align 4 + store float %47, ptr %arrayidx5.i, align 4 %arrayidx6.i = getelementptr inbounds nuw i8, ptr %add.ptr.i24, i64 1152 - %47 = load float, ptr %arrayidx6.i, align 4 + %48 = load float, ptr %arrayidx6.i, align 4 %arrayidx7.i = getelementptr inbounds nuw i8, ptr %add.ptr12, i64 4084 - store float %47, ptr %arrayidx7.i, align 4 - %48 = load float, ptr %add.ptr5, align 4 + store float %48, ptr %arrayidx7.i, align 4 + %49 = load float, ptr %add.ptr5, align 4 %arrayidx9.i = getelementptr inbounds nuw i8, ptr %add.ptr12, i64 4088 - store float %48, ptr %arrayidx9.i, align 4 - %49 = load float, ptr %add.ptr.i24, align 4 + store float %49, ptr %arrayidx9.i, align 4 + %50 = load float, ptr %add.ptr.i24, align 4 %arrayidx11.i = getelementptr inbounds nuw i8, ptr %add.ptr12, i64 4092 - store float %49, ptr %arrayidx11.i, align 4 + store float %50, ptr %arrayidx11.i, align 4 %arrayidx12.i25 = getelementptr inbounds nuw i8, ptr %add.ptr5, i64 1156 - %50 = load float, ptr %arrayidx12.i25, align 4 + %51 = load float, ptr %arrayidx12.i25, align 4 %arrayidx13.i = getelementptr inbounds nuw i8, ptr %add.ptr12, i64 4336 - store float %50, ptr %arrayidx13.i, align 4 + store float %51, ptr %arrayidx13.i, align 4 %arrayidx14.i = getelementptr inbounds nuw i8, ptr %add.ptr.i24, i64 1156 - %51 = load float, ptr %arrayidx14.i, align 4 + %52 = load float, ptr %arrayidx14.i, align 4 %arrayidx15.i = getelementptr inbounds nuw i8, ptr %add.ptr12, i64 4340 - store float %51, ptr %arrayidx15.i, align 4 + store float %52, ptr %arrayidx15.i, align 4 %arrayidx16.i = getelementptr inbounds nuw i8, ptr %add.ptr5, i64 4 - %52 = load float, ptr %arrayidx16.i, align 4 + %53 = load float, ptr %arrayidx16.i, align 4 %arrayidx17.i26 = getelementptr inbounds nuw i8, ptr %add.ptr12, i64 4344 - store float %52, ptr %arrayidx17.i26, align 4 + store float %53, ptr %arrayidx17.i26, align 4 %arrayidx18.i = getelementptr inbounds nuw i8, ptr %add.ptr.i24, i64 4 - %53 = load float, ptr %arrayidx18.i, align 4 + %54 = load float, ptr %arrayidx18.i, align 4 %arrayidx19.i = getelementptr inbounds nuw i8, ptr %add.ptr12, i64 4348 - store float %53, ptr %arrayidx19.i, align 4 + store float %54, ptr %arrayidx19.i, align 4 %add.ptr20.i = getelementptr inbounds nuw i8, ptr %add.ptr12, i64 240 %add.ptr21.i = getelementptr inbounds nuw i8, ptr %add.ptr12, i64 244 tail call fastcc void @ma_dr_mp3d_synth_pair(ptr noundef %add.ptr3.i, i32 noundef %nch, ptr noundef %add.ptr21.i) @@ -107558,266 +107554,266 @@ for.body3: ; preds = %for.end, %ma_dr_mp3 for.body.i27: ; preds = %for.body.i27, %for.body3 %indvars.iv.i28 = phi i64 [ 14, %for.body3 ], [ %indvars.iv.next.i38, %for.body.i27 ] %w.0234.i = phi ptr [ @ma_dr_mp3d_synth.g_win, %for.body3 ], [ %incdec.ptr281.i, %for.body.i27 ] - %54 = sub nuw nsw i64 31, %indvars.iv.i28 - %55 = mul nuw nsw i64 %54, 18 - %arrayidx36.i = getelementptr inbounds nuw float, ptr %add.ptr5, i64 %55 - %56 = load float, ptr %arrayidx36.i, align 4 - %57 = shl nsw i64 %indvars.iv.i28, 2 - %arrayidx39.i = getelementptr inbounds nuw float, ptr %add.ptr4.i, i64 %57 - store float %56, ptr %arrayidx39.i, align 4 - %arrayidx43.i = getelementptr inbounds nuw float, ptr %add.ptr.i24, i64 %55 - %58 = load float, ptr %arrayidx43.i, align 4 - %59 = or disjoint i64 %57, 1 - %arrayidx46.i29 = getelementptr inbounds nuw float, ptr %add.ptr4.i, i64 %59 - store float %58, ptr %arrayidx46.i29, align 4 - %60 = or disjoint i64 %55, 1 - %arrayidx51.i = getelementptr inbounds nuw float, ptr %add.ptr5, i64 %60 - %61 = load float, ptr %arrayidx51.i, align 4 - %62 = or disjoint i64 %57, 2 - %arrayidx55.i = getelementptr inbounds nuw float, ptr %add.ptr4.i, i64 %62 - store float %61, ptr %arrayidx55.i, align 4 - %arrayidx60.i = getelementptr inbounds nuw float, ptr %add.ptr.i24, i64 %60 - %63 = load float, ptr %arrayidx60.i, align 4 - %64 = or disjoint i64 %57, 3 - %arrayidx64.i = getelementptr inbounds nuw float, ptr %add.ptr4.i, i64 %64 - store float %63, ptr %arrayidx64.i, align 4 - %65 = mul nuw nsw i64 %indvars.iv.i28, 18 - %66 = add nuw nsw i64 %65, 18 - %67 = add nuw nsw i64 %65, 19 - %arrayidx69.i30 = getelementptr inbounds nuw float, ptr %add.ptr5, i64 %67 - %68 = load float, ptr %arrayidx69.i30, align 4 - %gep.i = getelementptr inbounds nuw float, ptr %invariant.gep.i, i64 %57 - store float %68, ptr %gep.i, align 4 - %arrayidx78.i = getelementptr inbounds nuw float, ptr %add.ptr.i24, i64 %67 - %69 = load float, ptr %arrayidx78.i, align 4 + %55 = sub nuw nsw i64 31, %indvars.iv.i28 + %56 = mul nuw nsw i64 %55, 18 + %arrayidx36.i = getelementptr inbounds nuw float, ptr %add.ptr5, i64 %56 + %57 = load float, ptr %arrayidx36.i, align 4 + %58 = shl nsw i64 %indvars.iv.i28, 2 + %arrayidx39.i = getelementptr inbounds nuw float, ptr %add.ptr4.i, i64 %58 + store float %57, ptr %arrayidx39.i, align 4 + %arrayidx43.i = getelementptr inbounds nuw float, ptr %add.ptr.i24, i64 %56 + %59 = load float, ptr %arrayidx43.i, align 4 + %60 = or disjoint i64 %58, 1 + %arrayidx46.i29 = getelementptr inbounds nuw float, ptr %add.ptr4.i, i64 %60 + store float %59, ptr %arrayidx46.i29, align 4 + %61 = or disjoint i64 %56, 1 + %arrayidx51.i = getelementptr inbounds nuw float, ptr %add.ptr5, i64 %61 + %62 = load float, ptr %arrayidx51.i, align 4 + %63 = or disjoint i64 %58, 2 + %arrayidx55.i = getelementptr inbounds nuw float, ptr %add.ptr4.i, i64 %63 + store float %62, ptr %arrayidx55.i, align 4 + %arrayidx60.i = getelementptr inbounds nuw float, ptr %add.ptr.i24, i64 %61 + %64 = load float, ptr %arrayidx60.i, align 4 + %65 = or disjoint i64 %58, 3 + %arrayidx64.i = getelementptr inbounds nuw float, ptr %add.ptr4.i, i64 %65 + store float %64, ptr %arrayidx64.i, align 4 + %66 = mul nuw nsw i64 %indvars.iv.i28, 18 + %67 = add nuw nsw i64 %66, 18 + %68 = add nuw nsw i64 %66, 19 + %arrayidx69.i30 = getelementptr inbounds nuw float, ptr %add.ptr5, i64 %68 + %69 = load float, ptr %arrayidx69.i30, align 4 + %gep.i = getelementptr inbounds nuw float, ptr %invariant.gep.i, i64 %58 + store float %69, ptr %gep.i, align 4 + %arrayidx78.i = getelementptr inbounds nuw float, ptr %add.ptr.i24, i64 %68 + %70 = load float, ptr %arrayidx78.i, align 4 %arrayidx83.i = getelementptr inbounds nuw i8, ptr %arrayidx39.i, i64 260 - store float %69, ptr %arrayidx83.i, align 4 - %arrayidx87.i = getelementptr inbounds nuw float, ptr %add.ptr5, i64 %66 - %70 = load float, ptr %arrayidx87.i, align 4 + store float %70, ptr %arrayidx83.i, align 4 + %arrayidx87.i = getelementptr inbounds nuw float, ptr %add.ptr5, i64 %67 + %71 = load float, ptr %arrayidx87.i, align 4 %arrayidx92.i = getelementptr i8, ptr %arrayidx39.i, i64 -248 - store float %70, ptr %arrayidx92.i, align 4 - %arrayidx96.i = getelementptr inbounds nuw float, ptr %add.ptr.i24, i64 %66 - %71 = load float, ptr %arrayidx96.i, align 4 + store float %71, ptr %arrayidx92.i, align 4 + %arrayidx96.i = getelementptr inbounds nuw float, ptr %add.ptr.i24, i64 %67 + %72 = load float, ptr %arrayidx96.i, align 4 %arrayidx101.i = getelementptr i8, ptr %arrayidx39.i, i64 -244 - store float %71, ptr %arrayidx101.i, align 4 + store float %72, ptr %arrayidx101.i, align 4 %incdec.ptr.i31 = getelementptr inbounds nuw i8, ptr %w.0234.i, i64 4 - %72 = load float, ptr %w.0234.i, align 4 - %vecinit.i443.i = insertelement <4 x float> poison, float %72, i64 0 + %73 = load float, ptr %w.0234.i, align 4 + %vecinit.i443.i = insertelement <4 x float> poison, float %73, i64 0 %vecinit3.i446.i = shufflevector <4 x float> %vecinit.i443.i, <4 x float> poison, <4 x i32> zeroinitializer %incdec.ptr103.i = getelementptr inbounds nuw i8, ptr %w.0234.i, i64 8 - %73 = load float, ptr %incdec.ptr.i31, align 4 - %vecinit.i437.i = insertelement <4 x float> poison, float %73, i64 0 + %74 = load float, ptr %incdec.ptr.i31, align 4 + %vecinit.i437.i = insertelement <4 x float> poison, float %74, i64 0 %vecinit3.i440.i = shufflevector <4 x float> %vecinit.i437.i, <4 x float> poison, <4 x i32> zeroinitializer - %74 = load <4 x float>, ptr %arrayidx39.i, align 1 + %75 = load <4 x float>, ptr %arrayidx39.i, align 1 %arrayidx113.i = getelementptr i8, ptr %arrayidx39.i, i64 -3840 - %75 = load <4 x float>, ptr %arrayidx113.i, align 1 - %mul.i539.i = fmul <4 x float> %74, %vecinit3.i440.i - %mul.i536.i = fmul <4 x float> %vecinit3.i446.i, %75 + %76 = load <4 x float>, ptr %arrayidx113.i, align 1 + %mul.i539.i = fmul <4 x float> %75, %vecinit3.i440.i + %mul.i536.i = fmul <4 x float> %vecinit3.i446.i, %76 %add.i631.i = fadd <4 x float> %mul.i539.i, %mul.i536.i - %mul.i533.i = fmul <4 x float> %74, %vecinit3.i446.i - %mul.i530.i = fmul <4 x float> %75, %vecinit3.i440.i + %mul.i533.i = fmul <4 x float> %75, %vecinit3.i446.i + %mul.i530.i = fmul <4 x float> %76, %vecinit3.i440.i %sub.i654.i = fsub <4 x float> %mul.i533.i, %mul.i530.i %incdec.ptr122.i = getelementptr inbounds nuw i8, ptr %w.0234.i, i64 12 - %76 = load float, ptr %incdec.ptr103.i, align 4 - %vecinit.i431.i = insertelement <4 x float> poison, float %76, i64 0 + %77 = load float, ptr %incdec.ptr103.i, align 4 + %vecinit.i431.i = insertelement <4 x float> poison, float %77, i64 0 %vecinit3.i434.i = shufflevector <4 x float> %vecinit.i431.i, <4 x float> poison, <4 x i32> zeroinitializer %incdec.ptr125.i = getelementptr inbounds nuw i8, ptr %w.0234.i, i64 16 - %77 = load float, ptr %incdec.ptr122.i, align 4 - %vecinit.i425.i = insertelement <4 x float> poison, float %77, i64 0 + %78 = load float, ptr %incdec.ptr122.i, align 4 + %vecinit.i425.i = insertelement <4 x float> poison, float %78, i64 0 %vecinit3.i428.i = shufflevector <4 x float> %vecinit.i425.i, <4 x float> poison, <4 x i32> zeroinitializer %arrayidx131.i = getelementptr i8, ptr %arrayidx39.i, i64 -256 - %78 = load <4 x float>, ptr %arrayidx131.i, align 1 + %79 = load <4 x float>, ptr %arrayidx131.i, align 1 %arrayidx137.i = getelementptr i8, ptr %arrayidx39.i, i64 -3584 - %79 = load <4 x float>, ptr %arrayidx137.i, align 1 - %mul.i527.i = fmul <4 x float> %78, %vecinit3.i428.i - %mul.i524.i = fmul <4 x float> %vecinit3.i434.i, %79 + %80 = load <4 x float>, ptr %arrayidx137.i, align 1 + %mul.i527.i = fmul <4 x float> %79, %vecinit3.i428.i + %mul.i524.i = fmul <4 x float> %vecinit3.i434.i, %80 %add.i628.i = fadd <4 x float> %mul.i527.i, %mul.i524.i %add.i625.i = fadd <4 x float> %add.i631.i, %add.i628.i - %mul.i521.i = fmul <4 x float> %79, %vecinit3.i428.i - %mul.i518.i = fmul <4 x float> %78, %vecinit3.i434.i + %mul.i521.i = fmul <4 x float> %80, %vecinit3.i428.i + %mul.i518.i = fmul <4 x float> %79, %vecinit3.i434.i %sub.i651.i = fsub <4 x float> %mul.i521.i, %mul.i518.i %add.i622.i = fadd <4 x float> %sub.i654.i, %sub.i651.i %incdec.ptr148.i = getelementptr inbounds nuw i8, ptr %w.0234.i, i64 20 - %80 = load float, ptr %incdec.ptr125.i, align 4 - %vecinit.i419.i = insertelement <4 x float> poison, float %80, i64 0 + %81 = load float, ptr %incdec.ptr125.i, align 4 + %vecinit.i419.i = insertelement <4 x float> poison, float %81, i64 0 %vecinit3.i422.i = shufflevector <4 x float> %vecinit.i419.i, <4 x float> poison, <4 x i32> zeroinitializer %incdec.ptr151.i = getelementptr inbounds nuw i8, ptr %w.0234.i, i64 24 - %81 = load float, ptr %incdec.ptr148.i, align 4 - %vecinit.i413.i = insertelement <4 x float> poison, float %81, i64 0 + %82 = load float, ptr %incdec.ptr148.i, align 4 + %vecinit.i413.i = insertelement <4 x float> poison, float %82, i64 0 %vecinit3.i416.i = shufflevector <4 x float> %vecinit.i413.i, <4 x float> poison, <4 x i32> zeroinitializer %arrayidx157.i = getelementptr i8, ptr %arrayidx39.i, i64 -512 - %82 = load <4 x float>, ptr %arrayidx157.i, align 1 + %83 = load <4 x float>, ptr %arrayidx157.i, align 1 %arrayidx163.i = getelementptr i8, ptr %arrayidx39.i, i64 -3328 - %83 = load <4 x float>, ptr %arrayidx163.i, align 1 - %mul.i515.i = fmul <4 x float> %82, %vecinit3.i416.i - %mul.i512.i = fmul <4 x float> %vecinit3.i422.i, %83 + %84 = load <4 x float>, ptr %arrayidx163.i, align 1 + %mul.i515.i = fmul <4 x float> %83, %vecinit3.i416.i + %mul.i512.i = fmul <4 x float> %vecinit3.i422.i, %84 %add.i619.i = fadd <4 x float> %mul.i515.i, %mul.i512.i %add.i616.i = fadd <4 x float> %add.i625.i, %add.i619.i - %mul.i509.i = fmul <4 x float> %82, %vecinit3.i422.i - %mul.i506.i = fmul <4 x float> %83, %vecinit3.i416.i + %mul.i509.i = fmul <4 x float> %83, %vecinit3.i422.i + %mul.i506.i = fmul <4 x float> %84, %vecinit3.i416.i %sub.i648.i = fsub <4 x float> %mul.i509.i, %mul.i506.i %add.i613.i = fadd <4 x float> %add.i622.i, %sub.i648.i %incdec.ptr174.i = getelementptr inbounds nuw i8, ptr %w.0234.i, i64 28 - %84 = load float, ptr %incdec.ptr151.i, align 4 - %vecinit.i407.i = insertelement <4 x float> poison, float %84, i64 0 + %85 = load float, ptr %incdec.ptr151.i, align 4 + %vecinit.i407.i = insertelement <4 x float> poison, float %85, i64 0 %vecinit3.i410.i = shufflevector <4 x float> %vecinit.i407.i, <4 x float> poison, <4 x i32> zeroinitializer %incdec.ptr177.i = getelementptr inbounds nuw i8, ptr %w.0234.i, i64 32 - %85 = load float, ptr %incdec.ptr174.i, align 4 - %vecinit.i401.i = insertelement <4 x float> poison, float %85, i64 0 + %86 = load float, ptr %incdec.ptr174.i, align 4 + %vecinit.i401.i = insertelement <4 x float> poison, float %86, i64 0 %vecinit3.i404.i = shufflevector <4 x float> %vecinit.i401.i, <4 x float> poison, <4 x i32> zeroinitializer %arrayidx183.i = getelementptr i8, ptr %arrayidx39.i, i64 -768 - %86 = load <4 x float>, ptr %arrayidx183.i, align 1 + %87 = load <4 x float>, ptr %arrayidx183.i, align 1 %arrayidx189.i = getelementptr i8, ptr %arrayidx39.i, i64 -3072 - %87 = load <4 x float>, ptr %arrayidx189.i, align 1 - %mul.i503.i = fmul <4 x float> %86, %vecinit3.i404.i - %mul.i500.i = fmul <4 x float> %vecinit3.i410.i, %87 + %88 = load <4 x float>, ptr %arrayidx189.i, align 1 + %mul.i503.i = fmul <4 x float> %87, %vecinit3.i404.i + %mul.i500.i = fmul <4 x float> %vecinit3.i410.i, %88 %add.i610.i = fadd <4 x float> %mul.i503.i, %mul.i500.i %add.i607.i = fadd <4 x float> %add.i616.i, %add.i610.i - %mul.i497.i = fmul <4 x float> %87, %vecinit3.i404.i - %mul.i494.i = fmul <4 x float> %86, %vecinit3.i410.i + %mul.i497.i = fmul <4 x float> %88, %vecinit3.i404.i + %mul.i494.i = fmul <4 x float> %87, %vecinit3.i410.i %sub.i645.i = fsub <4 x float> %mul.i497.i, %mul.i494.i %add.i604.i = fadd <4 x float> %add.i613.i, %sub.i645.i %incdec.ptr200.i = getelementptr inbounds nuw i8, ptr %w.0234.i, i64 36 - %88 = load float, ptr %incdec.ptr177.i, align 4 - %vecinit.i395.i = insertelement <4 x float> poison, float %88, i64 0 + %89 = load float, ptr %incdec.ptr177.i, align 4 + %vecinit.i395.i = insertelement <4 x float> poison, float %89, i64 0 %vecinit3.i398.i = shufflevector <4 x float> %vecinit.i395.i, <4 x float> poison, <4 x i32> zeroinitializer %incdec.ptr203.i = getelementptr inbounds nuw i8, ptr %w.0234.i, i64 40 - %89 = load float, ptr %incdec.ptr200.i, align 4 - %vecinit.i389.i = insertelement <4 x float> poison, float %89, i64 0 + %90 = load float, ptr %incdec.ptr200.i, align 4 + %vecinit.i389.i = insertelement <4 x float> poison, float %90, i64 0 %vecinit3.i392.i = shufflevector <4 x float> %vecinit.i389.i, <4 x float> poison, <4 x i32> zeroinitializer %arrayidx209.i32 = getelementptr i8, ptr %arrayidx39.i, i64 -1024 - %90 = load <4 x float>, ptr %arrayidx209.i32, align 1 + %91 = load <4 x float>, ptr %arrayidx209.i32, align 1 %arrayidx215.i33 = getelementptr i8, ptr %arrayidx39.i, i64 -2816 - %91 = load <4 x float>, ptr %arrayidx215.i33, align 1 - %mul.i491.i = fmul <4 x float> %90, %vecinit3.i392.i - %mul.i488.i = fmul <4 x float> %vecinit3.i398.i, %91 + %92 = load <4 x float>, ptr %arrayidx215.i33, align 1 + %mul.i491.i = fmul <4 x float> %91, %vecinit3.i392.i + %mul.i488.i = fmul <4 x float> %vecinit3.i398.i, %92 %add.i601.i = fadd <4 x float> %mul.i491.i, %mul.i488.i %add.i598.i = fadd <4 x float> %add.i607.i, %add.i601.i - %mul.i485.i = fmul <4 x float> %90, %vecinit3.i398.i - %mul.i482.i = fmul <4 x float> %91, %vecinit3.i392.i + %mul.i485.i = fmul <4 x float> %91, %vecinit3.i398.i + %mul.i482.i = fmul <4 x float> %92, %vecinit3.i392.i %sub.i642.i = fsub <4 x float> %mul.i485.i, %mul.i482.i %add.i595.i = fadd <4 x float> %add.i604.i, %sub.i642.i %incdec.ptr226.i = getelementptr inbounds nuw i8, ptr %w.0234.i, i64 44 - %92 = load float, ptr %incdec.ptr203.i, align 4 - %vecinit.i383.i = insertelement <4 x float> poison, float %92, i64 0 + %93 = load float, ptr %incdec.ptr203.i, align 4 + %vecinit.i383.i = insertelement <4 x float> poison, float %93, i64 0 %vecinit3.i386.i = shufflevector <4 x float> %vecinit.i383.i, <4 x float> poison, <4 x i32> zeroinitializer %incdec.ptr229.i = getelementptr inbounds nuw i8, ptr %w.0234.i, i64 48 - %93 = load float, ptr %incdec.ptr226.i, align 4 - %vecinit.i377.i = insertelement <4 x float> poison, float %93, i64 0 + %94 = load float, ptr %incdec.ptr226.i, align 4 + %vecinit.i377.i = insertelement <4 x float> poison, float %94, i64 0 %vecinit3.i380.i = shufflevector <4 x float> %vecinit.i377.i, <4 x float> poison, <4 x i32> zeroinitializer %arrayidx235.i = getelementptr i8, ptr %arrayidx39.i, i64 -1280 - %94 = load <4 x float>, ptr %arrayidx235.i, align 1 + %95 = load <4 x float>, ptr %arrayidx235.i, align 1 %arrayidx241.i34 = getelementptr i8, ptr %arrayidx39.i, i64 -2560 - %95 = load <4 x float>, ptr %arrayidx241.i34, align 1 - %mul.i479.i = fmul <4 x float> %94, %vecinit3.i380.i - %mul.i476.i = fmul <4 x float> %vecinit3.i386.i, %95 + %96 = load <4 x float>, ptr %arrayidx241.i34, align 1 + %mul.i479.i = fmul <4 x float> %95, %vecinit3.i380.i + %mul.i476.i = fmul <4 x float> %vecinit3.i386.i, %96 %add.i592.i = fadd <4 x float> %mul.i479.i, %mul.i476.i %add.i589.i = fadd <4 x float> %add.i598.i, %add.i592.i - %mul.i473.i = fmul <4 x float> %95, %vecinit3.i380.i - %mul.i470.i = fmul <4 x float> %94, %vecinit3.i386.i + %mul.i473.i = fmul <4 x float> %96, %vecinit3.i380.i + %mul.i470.i = fmul <4 x float> %95, %vecinit3.i386.i %sub.i639.i = fsub <4 x float> %mul.i473.i, %mul.i470.i %add.i586.i = fadd <4 x float> %add.i595.i, %sub.i639.i %incdec.ptr252.i = getelementptr inbounds nuw i8, ptr %w.0234.i, i64 52 - %96 = load float, ptr %incdec.ptr229.i, align 4 - %vecinit.i371.i = insertelement <4 x float> poison, float %96, i64 0 + %97 = load float, ptr %incdec.ptr229.i, align 4 + %vecinit.i371.i = insertelement <4 x float> poison, float %97, i64 0 %vecinit3.i374.i = shufflevector <4 x float> %vecinit.i371.i, <4 x float> poison, <4 x i32> zeroinitializer %incdec.ptr255.i = getelementptr inbounds nuw i8, ptr %w.0234.i, i64 56 - %97 = load float, ptr %incdec.ptr252.i, align 4 - %vecinit.i365.i = insertelement <4 x float> poison, float %97, i64 0 + %98 = load float, ptr %incdec.ptr252.i, align 4 + %vecinit.i365.i = insertelement <4 x float> poison, float %98, i64 0 %vecinit3.i368.i = shufflevector <4 x float> %vecinit.i365.i, <4 x float> poison, <4 x i32> zeroinitializer %arrayidx261.i = getelementptr i8, ptr %arrayidx39.i, i64 -1536 - %98 = load <4 x float>, ptr %arrayidx261.i, align 1 + %99 = load <4 x float>, ptr %arrayidx261.i, align 1 %arrayidx267.i = getelementptr i8, ptr %arrayidx39.i, i64 -2304 - %99 = load <4 x float>, ptr %arrayidx267.i, align 1 - %mul.i467.i = fmul <4 x float> %98, %vecinit3.i368.i - %mul.i464.i = fmul <4 x float> %vecinit3.i374.i, %99 + %100 = load <4 x float>, ptr %arrayidx267.i, align 1 + %mul.i467.i = fmul <4 x float> %99, %vecinit3.i368.i + %mul.i464.i = fmul <4 x float> %vecinit3.i374.i, %100 %add.i583.i = fadd <4 x float> %mul.i467.i, %mul.i464.i %add.i580.i = fadd <4 x float> %add.i589.i, %add.i583.i - %mul.i461.i = fmul <4 x float> %98, %vecinit3.i374.i - %mul.i458.i = fmul <4 x float> %99, %vecinit3.i368.i + %mul.i461.i = fmul <4 x float> %99, %vecinit3.i374.i + %mul.i458.i = fmul <4 x float> %100, %vecinit3.i368.i %sub.i636.i = fsub <4 x float> %mul.i461.i, %mul.i458.i %add.i577.i = fadd <4 x float> %add.i586.i, %sub.i636.i %incdec.ptr278.i = getelementptr inbounds nuw i8, ptr %w.0234.i, i64 60 - %100 = load float, ptr %incdec.ptr255.i, align 4 - %vecinit.i359.i = insertelement <4 x float> poison, float %100, i64 0 + %101 = load float, ptr %incdec.ptr255.i, align 4 + %vecinit.i359.i = insertelement <4 x float> poison, float %101, i64 0 %vecinit3.i362.i = shufflevector <4 x float> %vecinit.i359.i, <4 x float> poison, <4 x i32> zeroinitializer %incdec.ptr281.i = getelementptr inbounds nuw i8, ptr %w.0234.i, i64 64 - %101 = load float, ptr %incdec.ptr278.i, align 4 - %vecinit.i.i = insertelement <4 x float> poison, float %101, i64 0 + %102 = load float, ptr %incdec.ptr278.i, align 4 + %vecinit.i.i = insertelement <4 x float> poison, float %102, i64 0 %vecinit3.i.i = shufflevector <4 x float> %vecinit.i.i, <4 x float> poison, <4 x i32> zeroinitializer %arrayidx287.i = getelementptr i8, ptr %arrayidx39.i, i64 -1792 - %102 = load <4 x float>, ptr %arrayidx287.i, align 1 + %103 = load <4 x float>, ptr %arrayidx287.i, align 1 %arrayidx293.i = getelementptr i8, ptr %arrayidx39.i, i64 -2048 - %103 = load <4 x float>, ptr %arrayidx293.i, align 1 - %mul.i455.i = fmul <4 x float> %102, %vecinit3.i.i - %mul.i452.i = fmul <4 x float> %vecinit3.i362.i, %103 + %104 = load <4 x float>, ptr %arrayidx293.i, align 1 + %mul.i455.i = fmul <4 x float> %103, %vecinit3.i.i + %mul.i452.i = fmul <4 x float> %vecinit3.i362.i, %104 %add.i574.i = fadd <4 x float> %mul.i455.i, %mul.i452.i %add.i571.i = fadd <4 x float> %add.i580.i, %add.i574.i - %mul.i449.i = fmul <4 x float> %103, %vecinit3.i.i - %mul.i.i35 = fmul <4 x float> %102, %vecinit3.i362.i + %mul.i449.i = fmul <4 x float> %104, %vecinit3.i.i + %mul.i.i35 = fmul <4 x float> %103, %vecinit3.i362.i %sub.i.i36 = fsub <4 x float> %mul.i449.i, %mul.i.i35 %add.i.i37 = fadd <4 x float> %add.i577.i, %sub.i.i36 - %104 = tail call <4 x float> @llvm.x86.sse.min.ps(<4 x float> %add.i.i37, <4 x float> splat (float 3.276700e+04)) - %105 = tail call <4 x float> @llvm.x86.sse.max.ps(<4 x float> %104, <4 x float> splat (float -3.276800e+04)) - %106 = tail call <4 x i32> @llvm.x86.sse2.cvtps2dq(<4 x float> %105) - %107 = tail call <4 x float> @llvm.x86.sse.min.ps(<4 x float> %add.i571.i, <4 x float> splat (float 3.276700e+04)) - %108 = tail call <4 x float> @llvm.x86.sse.max.ps(<4 x float> %107, <4 x float> splat (float -3.276800e+04)) - %109 = tail call <4 x i32> @llvm.x86.sse2.cvtps2dq(<4 x float> %108) - %110 = tail call <8 x i16> @llvm.x86.sse2.packssdw.128(<4 x i32> %106, <4 x i32> %109) - %111 = extractelement <8 x i16> %110, i64 1 - %112 = sub nuw nsw i64 15, %indvars.iv.i28 - %113 = mul nsw i64 %112, %44 - %arrayidx314.i = getelementptr inbounds i16, ptr %add.ptr3.i, i64 %113 - store i16 %111, ptr %arrayidx314.i, align 2 - %114 = extractelement <8 x i16> %110, i64 5 - %115 = add nuw nsw i64 %indvars.iv.i28, 17 - %116 = mul nsw i64 %115, %44 - %arrayidx320.i = getelementptr inbounds i16, ptr %add.ptr3.i, i64 %116 - store i16 %114, ptr %arrayidx320.i, align 2 - %117 = extractelement <8 x i16> %110, i64 0 - %arrayidx326.i = getelementptr inbounds i16, ptr %add.ptr9, i64 %113 - store i16 %117, ptr %arrayidx326.i, align 2 - %118 = extractelement <8 x i16> %110, i64 4 - %arrayidx332.i = getelementptr inbounds i16, ptr %add.ptr9, i64 %116 - store i16 %118, ptr %arrayidx332.i, align 2 - %119 = extractelement <8 x i16> %110, i64 3 - %120 = sub nuw nsw i64 47, %indvars.iv.i28 - %121 = mul nsw i64 %120, %44 - %arrayidx338.i = getelementptr inbounds i16, ptr %add.ptr3.i, i64 %121 - store i16 %119, ptr %arrayidx338.i, align 2 - %122 = extractelement <8 x i16> %110, i64 7 - %123 = add nuw nsw i64 %indvars.iv.i28, 49 - %124 = mul nsw i64 %123, %44 - %arrayidx344.i = getelementptr inbounds i16, ptr %add.ptr3.i, i64 %124 - store i16 %122, ptr %arrayidx344.i, align 2 - %125 = extractelement <8 x i16> %110, i64 2 - %arrayidx350.i = getelementptr inbounds i16, ptr %add.ptr9, i64 %121 - store i16 %125, ptr %arrayidx350.i, align 2 - %126 = extractelement <8 x i16> %110, i64 6 - %arrayidx356.i = getelementptr inbounds i16, ptr %add.ptr9, i64 %124 - store i16 %126, ptr %arrayidx356.i, align 2 + %105 = tail call <4 x float> @llvm.x86.sse.min.ps(<4 x float> %add.i.i37, <4 x float> splat (float 3.276700e+04)) + %106 = tail call <4 x float> @llvm.x86.sse.max.ps(<4 x float> %105, <4 x float> splat (float -3.276800e+04)) + %107 = tail call <4 x i32> @llvm.x86.sse2.cvtps2dq(<4 x float> %106) + %108 = tail call <4 x float> @llvm.x86.sse.min.ps(<4 x float> %add.i571.i, <4 x float> splat (float 3.276700e+04)) + %109 = tail call <4 x float> @llvm.x86.sse.max.ps(<4 x float> %108, <4 x float> splat (float -3.276800e+04)) + %110 = tail call <4 x i32> @llvm.x86.sse2.cvtps2dq(<4 x float> %109) + %111 = tail call <8 x i16> @llvm.x86.sse2.packssdw.128(<4 x i32> %107, <4 x i32> %110) + %112 = extractelement <8 x i16> %111, i64 1 + %113 = sub nuw nsw i64 15, %indvars.iv.i28 + %114 = mul nsw i64 %113, %44 + %arrayidx314.i = getelementptr inbounds i16, ptr %add.ptr3.i, i64 %114 + store i16 %112, ptr %arrayidx314.i, align 2 + %115 = extractelement <8 x i16> %111, i64 5 + %116 = add nuw nsw i64 %indvars.iv.i28, 17 + %117 = mul nsw i64 %116, %44 + %arrayidx320.i = getelementptr inbounds i16, ptr %add.ptr3.i, i64 %117 + store i16 %115, ptr %arrayidx320.i, align 2 + %118 = extractelement <8 x i16> %111, i64 0 + %arrayidx326.i = getelementptr inbounds i16, ptr %add.ptr9, i64 %114 + store i16 %118, ptr %arrayidx326.i, align 2 + %119 = extractelement <8 x i16> %111, i64 4 + %arrayidx332.i = getelementptr inbounds i16, ptr %add.ptr9, i64 %117 + store i16 %119, ptr %arrayidx332.i, align 2 + %120 = extractelement <8 x i16> %111, i64 3 + %121 = sub nuw nsw i64 47, %indvars.iv.i28 + %122 = mul nsw i64 %121, %44 + %arrayidx338.i = getelementptr inbounds i16, ptr %add.ptr3.i, i64 %122 + store i16 %120, ptr %arrayidx338.i, align 2 + %123 = extractelement <8 x i16> %111, i64 7 + %124 = add nuw nsw i64 %indvars.iv.i28, 49 + %125 = mul nsw i64 %124, %44 + %arrayidx344.i = getelementptr inbounds i16, ptr %add.ptr3.i, i64 %125 + store i16 %123, ptr %arrayidx344.i, align 2 + %126 = extractelement <8 x i16> %111, i64 2 + %arrayidx350.i = getelementptr inbounds i16, ptr %add.ptr9, i64 %122 + store i16 %126, ptr %arrayidx350.i, align 2 + %127 = extractelement <8 x i16> %111, i64 6 + %arrayidx356.i = getelementptr inbounds i16, ptr %add.ptr9, i64 %125 + store i16 %127, ptr %arrayidx356.i, align 2 %indvars.iv.next.i38 = add nsw i64 %indvars.iv.i28, -1 %cmp.not.i = icmp eq i64 %indvars.iv.i28, 0 br i1 %cmp.not.i, label %ma_dr_mp3d_synth.exit, label %for.body.i27, !llvm.loop !876 ma_dr_mp3d_synth.exit: ; preds = %for.body.i27 %indvars.iv.next46 = add nuw nsw i64 %indvars.iv45, 2 - %cmp2 = icmp samesign ult i64 %indvars.iv.next46, %.pre-phi + %cmp2 = icmp samesign ult i64 %indvars.iv.next46, %45 br i1 %cmp2, label %for.body3, label %for.end14, !llvm.loop !877 for.end14: ; preds = %ma_dr_mp3d_synth.exit %cmp15 = icmp eq i32 %nch, 1 %mul19 = shl nuw nsw i32 %nbands, 6 - %127 = zext nneg i32 %mul19 to i64 - %invariant.gep = getelementptr inbounds nuw float, ptr %lins, i64 %127 + %128 = zext nneg i32 %mul19 to i64 + %invariant.gep = getelementptr inbounds nuw float, ptr %lins, i64 %128 br i1 %cmp15, label %for.body18, label %if.else for.body18: ; preds = %for.end14, %for.body18 %indvars.iv50 = phi i64 [ %indvars.iv.next51, %for.body18 ], [ 0, %for.end14 ] %gep = getelementptr inbounds nuw float, ptr %invariant.gep, i64 %indvars.iv50 - %128 = load float, ptr %gep, align 4 + %129 = load float, ptr %gep, align 4 %arrayidx22 = getelementptr inbounds nuw float, ptr %qmf_state, i64 %indvars.iv50 - store float %128, ptr %arrayidx22, align 4 + store float %129, ptr %arrayidx22, align 4 %indvars.iv.next51 = add nuw nsw i64 %indvars.iv50, 2 %cmp17 = icmp samesign ult i64 %indvars.iv50, 958 br i1 %cmp17, label %for.body18, label %if.end, !llvm.loop !878 diff --git a/bench/opencv/optimized/fast_window_binarizer.ll b/bench/opencv/optimized/fast_window_binarizer.ll index 54ebe0ca4c8..200f2430dcc 100644 --- a/bench/opencv/optimized/fast_window_binarizer.ll +++ b/bench/opencv/optimized/fast_window_binarizer.ll @@ -736,18 +736,20 @@ define hidden void @_ZN5zxing19FastWindowBinarizer15calcBlockTotalsEPiS1_ii(ptr br i1 %7, label %.lr.ph36.us.preheader, label %._crit_edge .lr.ph36.us.preheader: ; preds = %.lr.ph - %9 = zext nneg i32 %3 to i64 %wide.trip.count60 = zext nneg i32 %4 to i64 + %wide.trip.count = zext nneg i32 %3 to i64 br label %.lr.ph.us.us.preheader .lr.ph.us.us.preheader: ; preds = %..loopexit_crit_edge.us, %.lr.ph36.us.preheader %indvars.iv57 = phi i64 [ 0, %.lr.ph36.us.preheader ], [ %indvars.iv.next58, %..loopexit_crit_edge.us ] %indvars.iv43 = phi i32 [ 0, %.lr.ph36.us.preheader ], [ %indvars.iv.next44, %..loopexit_crit_edge.us ] - %10 = zext i32 %indvars.iv43 to i64 + %9 = sext i32 %indvars.iv43 to i64 %indvars.iv.next58 = add nuw nsw i64 %indvars.iv57, 1 - %11 = mul nuw nsw i64 %indvars.iv.next58, 6 - %12 = mul nuw nsw i64 %indvars.iv57, %9 - %invariant.gep = getelementptr inbounds nuw i32, ptr %2, i64 %12 + %10 = mul nuw nsw i64 %indvars.iv.next58, 6 + %11 = trunc i64 %indvars.iv57 to i32 + %12 = mul i32 %3, %11 + %13 = zext i32 %12 to i64 + %invariant.gep = getelementptr inbounds nuw i32, ptr %2, i64 %13 br label %.lr.ph.us.us ..loopexit_crit_edge.us: ; preds = %._crit_edge.us.us @@ -758,48 +760,47 @@ define hidden void @_ZN5zxing19FastWindowBinarizer15calcBlockTotalsEPiS1_ii(ptr .lr.ph.us.us: ; preds = %.lr.ph.us.us.preheader, %._crit_edge.us.us %indvars.iv53 = phi i64 [ 0, %.lr.ph.us.us.preheader ], [ %indvars.iv.next54, %._crit_edge.us.us ] %indvars.iv = phi i32 [ 0, %.lr.ph.us.us.preheader ], [ %indvars.iv.next, %._crit_edge.us.us ] - %13 = load i32, ptr %8, align 4 - %14 = mul i32 %indvars.iv43, %13 - %15 = add i32 %indvars.iv, %14 - %16 = trunc i64 %indvars.iv53 to i32 - %17 = mul i32 %16, 6 - %18 = add i32 %17, 6 - br label %19 - -19: ; preds = %24, %.lr.ph.us.us - %indvars.iv50 = phi i64 [ %indvars.iv.next51, %24 ], [ %10, %.lr.ph.us.us ] - %indvars.iv45 = phi i32 [ %indvars.iv.next46, %24 ], [ %15, %.lr.ph.us.us ] - %.02732.us.us = phi i32 [ %30, %24 ], [ 0, %.lr.ph.us.us ] - %20 = sext i32 %indvars.iv45 to i64 - %21 = trunc i64 %indvars.iv50 to i32 - %22 = mul i32 %13, %21 - %.reass.us.us = add i32 %22, %18 - %23 = sext i32 %.reass.us.us to i64 + %14 = load i32, ptr %8, align 4 + %15 = mul i32 %indvars.iv43, %14 + %16 = add i32 %indvars.iv, %15 + %17 = trunc i64 %indvars.iv53 to i32 + %18 = mul i32 %17, 6 + %19 = add i32 %18, 6 + br label %20 + +20: ; preds = %25, %.lr.ph.us.us + %indvars.iv50 = phi i64 [ %indvars.iv.next51, %25 ], [ %9, %.lr.ph.us.us ] + %indvars.iv45 = phi i32 [ %indvars.iv.next46, %25 ], [ %16, %.lr.ph.us.us ] + %.02732.us.us = phi i32 [ %30, %25 ], [ 0, %.lr.ph.us.us ] + %21 = sext i32 %indvars.iv45 to i64 + %22 = trunc i64 %indvars.iv50 to i32 + %23 = mul i32 %14, %22 + %.reass.us.us = add i32 %23, %19 + %24 = sext i32 %.reass.us.us to i64 br label %27 -24: ; preds = %27 - %indvars.iv.next51 = add i64 %indvars.iv50, 1 - %25 = and i64 %indvars.iv.next51, 4294967295 - %26 = icmp samesign ult i64 %25, %11 - %indvars.iv.next46 = add i32 %indvars.iv45, %13 - br i1 %26, label %19, label %._crit_edge.us.us, !llvm.loop !6 +25: ; preds = %27 + %indvars.iv.next51 = add nuw nsw i64 %indvars.iv50, 1 + %26 = icmp samesign ult i64 %indvars.iv.next51, %10 + %indvars.iv.next46 = add i32 %indvars.iv45, %14 + br i1 %26, label %20, label %._crit_edge.us.us, !llvm.loop !6 -27: ; preds = %27, %19 - %indvars.iv47 = phi i64 [ %indvars.iv.next48, %27 ], [ %20, %19 ] - %.130.us.us = phi i32 [ %30, %27 ], [ %.02732.us.us, %19 ] +27: ; preds = %27, %20 + %indvars.iv47 = phi i64 [ %indvars.iv.next48, %27 ], [ %21, %20 ] + %.130.us.us = phi i32 [ %30, %27 ], [ %.02732.us.us, %20 ] %28 = getelementptr inbounds i32, ptr %1, i64 %indvars.iv47 %29 = load i32, ptr %28, align 4 %30 = add nsw i32 %29, %.130.us.us %indvars.iv.next48 = add nsw i64 %indvars.iv47, 1 - %31 = icmp slt i64 %indvars.iv.next48, %23 - br i1 %31, label %27, label %24, !llvm.loop !7 + %31 = icmp slt i64 %indvars.iv.next48, %24 + br i1 %31, label %27, label %25, !llvm.loop !7 -._crit_edge.us.us: ; preds = %24 +._crit_edge.us.us: ; preds = %25 %gep = getelementptr inbounds nuw i32, ptr %invariant.gep, i64 %indvars.iv53 store i32 %30, ptr %gep, align 4 %indvars.iv.next54 = add nuw nsw i64 %indvars.iv53, 1 %indvars.iv.next = add nuw i32 %indvars.iv, 6 - %exitcond.not = icmp eq i64 %indvars.iv.next54, %9 + %exitcond.not = icmp eq i64 %indvars.iv.next54, %wide.trip.count br i1 %exitcond.not, label %..loopexit_crit_edge.us, label %.lr.ph.us.us, !llvm.loop !8 ._crit_edge: ; preds = %..loopexit_crit_edge.us, %.lr.ph, %5 @@ -1479,18 +1480,20 @@ _ZN5zxing3RefINS_15LuminanceSourceEED2Ev.exit: ; preds = %2, %7, %12 %60 = load ptr, ptr %59, align 8 %61 = getelementptr inbounds nuw i8, ptr %0, i64 152 %62 = load ptr, ptr %61, align 8 - %63 = zext nneg i32 %31 to i64 %wide.trip.count60.i = zext nneg i32 %32 to i64 + %wide.trip.count.i = zext nneg i32 %31 to i64 br label %.lr.ph.us.us.preheader.i .lr.ph.us.us.preheader.i: ; preds = %..loopexit_crit_edge.us.i, %.lr.ph.i %indvars.iv57.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next58.i, %..loopexit_crit_edge.us.i ] %indvars.iv43.i = phi i32 [ 0, %.lr.ph.i ], [ %indvars.iv.next44.i, %..loopexit_crit_edge.us.i ] - %64 = zext i32 %indvars.iv43.i to i64 + %63 = sext i32 %indvars.iv43.i to i64 %indvars.iv.next58.i = add nuw nsw i64 %indvars.iv57.i, 1 - %65 = mul nuw nsw i64 %indvars.iv.next58.i, 6 - %66 = mul nuw nsw i64 %indvars.iv57.i, %63 - %invariant.gep.i = getelementptr inbounds nuw i32, ptr %62, i64 %66 + %64 = mul nuw nsw i64 %indvars.iv.next58.i, 6 + %65 = trunc i64 %indvars.iv57.i to i32 + %66 = mul i32 %31, %65 + %67 = zext i32 %66 to i64 + %invariant.gep.i = getelementptr inbounds nuw i32, ptr %62, i64 %67 br label %.lr.ph.us.us.i ..loopexit_crit_edge.us.i: ; preds = %._crit_edge.us.us.i @@ -1501,48 +1504,47 @@ _ZN5zxing3RefINS_15LuminanceSourceEED2Ev.exit: ; preds = %2, %7, %12 .lr.ph.us.us.i: ; preds = %._crit_edge.us.us.i, %.lr.ph.us.us.preheader.i %indvars.iv53.i = phi i64 [ 0, %.lr.ph.us.us.preheader.i ], [ %indvars.iv.next54.i, %._crit_edge.us.us.i ] %indvars.iv.i = phi i32 [ 0, %.lr.ph.us.us.preheader.i ], [ %indvars.iv.next.i, %._crit_edge.us.us.i ] - %67 = load i32, ptr %16, align 4 - %68 = mul i32 %67, %indvars.iv43.i - %69 = add i32 %68, %indvars.iv.i - %70 = trunc i64 %indvars.iv53.i to i32 - %71 = mul i32 %70, 6 - %72 = add i32 %71, 6 - br label %73 - -73: ; preds = %78, %.lr.ph.us.us.i - %indvars.iv50.i = phi i64 [ %indvars.iv.next51.i, %78 ], [ %64, %.lr.ph.us.us.i ] - %indvars.iv45.i = phi i32 [ %indvars.iv.next46.i, %78 ], [ %69, %.lr.ph.us.us.i ] - %.02732.us.us.i = phi i32 [ %84, %78 ], [ 0, %.lr.ph.us.us.i ] - %74 = sext i32 %indvars.iv45.i to i64 - %75 = trunc i64 %indvars.iv50.i to i32 - %76 = mul i32 %67, %75 - %.reass.us.us.i = add i32 %72, %76 - %77 = sext i32 %.reass.us.us.i to i64 + %68 = load i32, ptr %16, align 4 + %69 = mul i32 %68, %indvars.iv43.i + %70 = add i32 %69, %indvars.iv.i + %71 = trunc i64 %indvars.iv53.i to i32 + %72 = mul i32 %71, 6 + %73 = add i32 %72, 6 + br label %74 + +74: ; preds = %79, %.lr.ph.us.us.i + %indvars.iv50.i = phi i64 [ %indvars.iv.next51.i, %79 ], [ %63, %.lr.ph.us.us.i ] + %indvars.iv45.i = phi i32 [ %indvars.iv.next46.i, %79 ], [ %70, %.lr.ph.us.us.i ] + %.02732.us.us.i = phi i32 [ %84, %79 ], [ 0, %.lr.ph.us.us.i ] + %75 = sext i32 %indvars.iv45.i to i64 + %76 = trunc i64 %indvars.iv50.i to i32 + %77 = mul i32 %68, %76 + %.reass.us.us.i = add i32 %73, %77 + %78 = sext i32 %.reass.us.us.i to i64 br label %81 -78: ; preds = %81 - %indvars.iv.next51.i = add i64 %indvars.iv50.i, 1 - %79 = and i64 %indvars.iv.next51.i, 4294967295 - %80 = icmp samesign ult i64 %79, %65 - %indvars.iv.next46.i = add i32 %indvars.iv45.i, %67 - br i1 %80, label %73, label %._crit_edge.us.us.i, !llvm.loop !6 +79: ; preds = %81 + %indvars.iv.next51.i = add nuw nsw i64 %indvars.iv50.i, 1 + %80 = icmp samesign ult i64 %indvars.iv.next51.i, %64 + %indvars.iv.next46.i = add i32 %indvars.iv45.i, %68 + br i1 %80, label %74, label %._crit_edge.us.us.i, !llvm.loop !6 -81: ; preds = %81, %73 - %indvars.iv47.i = phi i64 [ %indvars.iv.next48.i, %81 ], [ %74, %73 ] - %.130.us.us.i = phi i32 [ %84, %81 ], [ %.02732.us.us.i, %73 ] +81: ; preds = %81, %74 + %indvars.iv47.i = phi i64 [ %indvars.iv.next48.i, %81 ], [ %75, %74 ] + %.130.us.us.i = phi i32 [ %84, %81 ], [ %.02732.us.us.i, %74 ] %82 = getelementptr inbounds i32, ptr %60, i64 %indvars.iv47.i %83 = load i32, ptr %82, align 4 %84 = add nsw i32 %83, %.130.us.us.i %indvars.iv.next48.i = add nsw i64 %indvars.iv47.i, 1 - %85 = icmp slt i64 %indvars.iv.next48.i, %77 - br i1 %85, label %81, label %78, !llvm.loop !7 + %85 = icmp slt i64 %indvars.iv.next48.i, %78 + br i1 %85, label %81, label %79, !llvm.loop !7 -._crit_edge.us.us.i: ; preds = %78 +._crit_edge.us.us.i: ; preds = %79 %gep.i = getelementptr inbounds nuw i32, ptr %invariant.gep.i, i64 %indvars.iv53.i store i32 %84, ptr %gep.i, align 4 %indvars.iv.next54.i = add nuw nsw i64 %indvars.iv53.i, 1 %indvars.iv.next.i = add nuw i32 %indvars.iv.i, 6 - %exitcond.not.i = icmp eq i64 %indvars.iv.next54.i, %63 + %exitcond.not.i = icmp eq i64 %indvars.iv.next54.i, %wide.trip.count.i br i1 %exitcond.not.i, label %..loopexit_crit_edge.us.i, label %.lr.ph.us.us.i, !llvm.loop !8 _ZN5zxing19FastWindowBinarizer15calcBlockTotalsEPiS1_ii.exit: ; preds = %..loopexit_crit_edge.us.i @@ -1558,7 +1560,7 @@ _ZN5zxing19FastWindowBinarizer15calcBlockTotalsEPiS1_ii.exit: ; preds = %..loope %91 = load ptr, ptr %89, align 8 %92 = mul nuw nsw i64 %indvars.iv66.i, %90 %93 = getelementptr inbounds nuw i32, ptr %91, i64 %92 - %94 = mul nuw nsw i64 %indvars.iv66.i, %63 + %94 = mul nuw nsw i64 %indvars.iv66.i, %wide.trip.count.i %95 = getelementptr inbounds nuw i32, ptr %86, i64 %94 store i32 0, ptr %93, align 4 br label %96 @@ -1572,7 +1574,7 @@ _ZN5zxing19FastWindowBinarizer15calcBlockTotalsEPiS1_ii.exit: ; preds = %..loope %indvars.iv.next62.i = add nuw nsw i64 %indvars.iv61.i, 1 %100 = getelementptr inbounds nuw i32, ptr %93, i64 %indvars.iv.next62.i store i32 %99, ptr %100, align 4 - %exitcond65.not.i = icmp eq i64 %indvars.iv.next62.i, %63 + %exitcond65.not.i = icmp eq i64 %indvars.iv.next62.i, %wide.trip.count.i br i1 %exitcond65.not.i, label %._crit_edge.us.i, label %96, !llvm.loop !9 ._crit_edge.us.i: ; preds = %96 @@ -1597,8 +1599,8 @@ _ZN5zxing19FastWindowBinarizer15calcBlockTotalsEPiS1_ii.exit: ; preds = %..loope %108 = add nsw i32 %107, %.03950.us.i %indvars.iv.next75.i = add nuw nsw i64 %indvars.iv74.i, 1 %109 = mul nuw nsw i64 %indvars.iv.next75.i, %90 - %gep.i86 = getelementptr inbounds nuw i32, ptr %101, i64 %109 - store i32 %108, ptr %gep.i86, align 4 + %gep.i87 = getelementptr inbounds nuw i32, ptr %101, i64 %109 + store i32 %108, ptr %gep.i87, align 4 %exitcond78.not.i = icmp eq i64 %indvars.iv.next75.i, %wide.trip.count60.i br i1 %exitcond78.not.i, label %._crit_edge.us57.i, label %102, !llvm.loop !11 @@ -1630,7 +1632,7 @@ _ZN5zxing19FastWindowBinarizer10cumulativeEPiS1_ii.exit: ; preds = %._crit_edge. 122: ; preds = %114 %.not.not = icmp eq i32 %121, 0 - br i1 %.not.not, label %.lr.ph116.us.preheader, label %210 + br i1 %.not.not, label %.lr.ph117.us.preheader, label %210 123: ; preds = %111 %124 = landingpad { ptr, i32 } @@ -1655,43 +1657,43 @@ _ZN5zxing19FastWindowBinarizer10cumulativeEPiS1_ii.exit: ; preds = %._crit_edge. call void %133(ptr noundef nonnull align 8 dereferenceable(12) %110) #10 br label %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit -.lr.ph116.us.preheader: ; preds = %122 +.lr.ph117.us.preheader: ; preds = %122 %134 = getelementptr inbounds nuw i8, ptr %110, i64 312 %135 = load ptr, ptr %134, align 8 %136 = getelementptr inbounds nuw i8, ptr %135, i64 16 %137 = load ptr, ptr %136, align 8 %umax = call i32 @llvm.umax.i32(i32 %31, i32 1) - %umax136 = call i32 @llvm.umax.i32(i32 %32, i32 1) - br label %.lr.ph116.us + %umax137 = call i32 @llvm.umax.i32(i32 %32, i32 1) + br label %.lr.ph117.us -.lr.ph116.us: ; preds = %.lr.ph116.us.preheader, %._crit_edge.us - %.075120.us = phi i32 [ %150, %._crit_edge.us ], [ 0, %.lr.ph116.us.preheader ] - %138 = sub nsw i32 %.075120.us, %30 +.lr.ph117.us: ; preds = %.lr.ph117.us.preheader, %._crit_edge.us + %.075121.us = phi i32 [ %150, %._crit_edge.us ], [ 0, %.lr.ph117.us.preheader ] + %138 = sub nsw i32 %.075121.us, %30 %139 = call i32 @llvm.smax.i32(i32 %138, i32 -1) %140 = add nsw i32 %139, 1 - %141 = add nsw i32 %.075120.us, %30 + %141 = add nsw i32 %.075121.us, %30 %142 = call noundef i32 @llvm.smin.i32(i32 %32, i32 %141) %143 = mul nsw i32 %142, %33 %144 = mul nsw i32 %140, %33 %145 = sub nsw i32 %142, %140 %146 = mul i32 %145, 36 - %147 = mul nuw i32 %.075120.us, 6 + %147 = mul nuw i32 %.075121.us, 6 %148 = add nuw i32 %147, 6 %149 = icmp slt i32 %147, 2147483642 - br i1 %149, label %.lr.ph113.us.us, label %._crit_edge.us + br i1 %149, label %.lr.ph114.us.us, label %._crit_edge.us -._crit_edge.us: ; preds = %._crit_edge114.us.us, %.lr.ph116.us - %150 = add nuw nsw i32 %.075120.us, 1 - %exitcond137.not = icmp eq i32 %150, %umax136 - br i1 %exitcond137.not, label %._crit_edge123, label %.lr.ph116.us, !llvm.loop !22 +._crit_edge.us: ; preds = %._crit_edge115.us.us, %.lr.ph117.us + %150 = add nuw nsw i32 %.075121.us, 1 + %exitcond138.not = icmp eq i32 %150, %umax137 + br i1 %exitcond138.not, label %._crit_edge124, label %.lr.ph117.us, !llvm.loop !22 -.lr.ph113.us.us: ; preds = %.lr.ph116.us, %._crit_edge114.us.us - %indvars.iv131 = phi i64 [ %indvars.iv.next132, %._crit_edge114.us.us ], [ 0, %.lr.ph116.us ] - %.076115.us.us = phi i32 [ %181, %._crit_edge114.us.us ], [ 0, %.lr.ph116.us ] - %151 = sub nsw i32 %.076115.us.us, %30 +.lr.ph114.us.us: ; preds = %.lr.ph117.us, %._crit_edge115.us.us + %indvars.iv132 = phi i64 [ %indvars.iv.next133, %._crit_edge115.us.us ], [ 0, %.lr.ph117.us ] + %.076116.us.us = phi i32 [ %181, %._crit_edge115.us.us ], [ 0, %.lr.ph117.us ] + %151 = sub nsw i32 %.076116.us.us, %30 %152 = call i32 @llvm.smax.i32(i32 %151, i32 -1) %153 = add nsw i32 %152, 1 - %154 = add nsw i32 %.076115.us.us, %30 + %154 = add nsw i32 %.076116.us.us, %30 %155 = call noundef i32 @llvm.smin.i32(i32 %31, i32 %154) %156 = load ptr, ptr %87, align 8 %157 = add nsw i32 %155, %143 @@ -1710,61 +1712,61 @@ _ZN5zxing19FastWindowBinarizer10cumulativeEPiS1_ii.exit: ; preds = %._crit_edge. %170 = sext i32 %169 to i64 %171 = getelementptr inbounds i32, ptr %156, i64 %170 %172 = load i32, ptr %171, align 4 - %.neg107.us.us = add i32 %164, %160 + %.neg108.us.us = add i32 %164, %160 %173 = add i32 %168, %172 - %174 = sub i32 %.neg107.us.us, %173 + %174 = sub i32 %.neg108.us.us, %173 %175 = sub nsw i32 %155, %153 %176 = mul i32 %146, %175 %177 = sdiv i32 %174, %176 - %178 = mul nuw i32 %.076115.us.us, 6 + %178 = mul nuw i32 %.076116.us.us, 6 %179 = add nuw i32 %178, 6 %180 = icmp slt i32 %178, 2147483642 - br i1 %180, label %.lr.ph110.us.us.us, label %._crit_edge114.us.us + br i1 %180, label %.lr.ph111.us.us.us, label %._crit_edge115.us.us -._crit_edge114.us.us: ; preds = %._crit_edge.us.us.us, %.lr.ph113.us.us - %181 = add nuw nsw i32 %.076115.us.us, 1 - %indvars.iv.next132 = add nuw nsw i64 %indvars.iv131, 6 +._crit_edge115.us.us: ; preds = %._crit_edge.us.us.us, %.lr.ph114.us.us + %181 = add nuw nsw i32 %.076116.us.us, 1 + %indvars.iv.next133 = add nuw nsw i64 %indvars.iv132, 6 %exitcond.not = icmp eq i32 %181, %umax - br i1 %exitcond.not, label %._crit_edge.us, label %.lr.ph113.us.us, !llvm.loop !23 + br i1 %exitcond.not, label %._crit_edge.us, label %.lr.ph114.us.us, !llvm.loop !23 -.lr.ph110.us.us.us: ; preds = %.lr.ph113.us.us, %._crit_edge.us.us.us - %.071111.us.us.us = phi i32 [ %195, %._crit_edge.us.us.us ], [ %147, %.lr.ph113.us.us ] +.lr.ph111.us.us.us: ; preds = %.lr.ph114.us.us, %._crit_edge.us.us.us + %.071112.us.us.us = phi i32 [ %195, %._crit_edge.us.us.us ], [ %147, %.lr.ph114.us.us ] %182 = load ptr, ptr %59, align 8 %183 = load i32, ptr %16, align 4 - %184 = mul nsw i32 %183, %.071111.us.us.us + %184 = mul nsw i32 %183, %.071112.us.us.us %185 = sext i32 %184 to i64 %186 = getelementptr inbounds i32, ptr %182, i64 %185 %187 = getelementptr inbounds i8, ptr %137, i64 %185 br label %188 -188: ; preds = %188, %.lr.ph110.us.us.us - %indvars.iv133 = phi i64 [ %indvars.iv.next134, %188 ], [ %indvars.iv131, %.lr.ph110.us.us.us ] - %189 = getelementptr inbounds nuw i32, ptr %186, i64 %indvars.iv133 +188: ; preds = %188, %.lr.ph111.us.us.us + %indvars.iv134 = phi i64 [ %indvars.iv.next135, %188 ], [ %indvars.iv132, %.lr.ph111.us.us.us ] + %189 = getelementptr inbounds nuw i32, ptr %186, i64 %indvars.iv134 %190 = load i32, ptr %189, align 4 %191 = icmp slt i32 %190, %177 %spec.select = zext i1 %191 to i8 - %192 = getelementptr inbounds nuw i8, ptr %187, i64 %indvars.iv133 + %192 = getelementptr inbounds nuw i8, ptr %187, i64 %indvars.iv134 store i8 %spec.select, ptr %192, align 1 - %indvars.iv.next134 = add nuw nsw i64 %indvars.iv133, 1 - %193 = trunc nuw i64 %indvars.iv.next134 to i32 + %indvars.iv.next135 = add nuw nsw i64 %indvars.iv134, 1 + %193 = trunc nuw i64 %indvars.iv.next135 to i32 %194 = icmp sgt i32 %179, %193 br i1 %194, label %188, label %._crit_edge.us.us.us, !llvm.loop !24 ._crit_edge.us.us.us: ; preds = %188 - %195 = add nuw nsw i32 %.071111.us.us.us, 1 + %195 = add nuw nsw i32 %.071112.us.us.us, 1 %196 = icmp slt i32 %195, %148 - br i1 %196, label %.lr.ph110.us.us.us, label %._crit_edge114.us.us, !llvm.loop !25 + br i1 %196, label %.lr.ph111.us.us.us, label %._crit_edge115.us.us, !llvm.loop !25 -._crit_edge123: ; preds = %._crit_edge.us +._crit_edge124: ; preds = %._crit_edge.us %197 = getelementptr inbounds nuw i8, ptr %0, i64 128 %198 = load i32, ptr %115, align 8 %199 = add i32 %198, 1 store i32 %199, ptr %115, align 8 %200 = load ptr, ptr %197, align 8 - %.not5.i.i88 = icmp eq ptr %200, null - br i1 %.not5.i.i88, label %_ZN5zxing3RefINS_9BitMatrixEEaSERKS2_.exit, label %201 + %.not5.i.i89 = icmp eq ptr %200, null + br i1 %.not5.i.i89, label %_ZN5zxing3RefINS_9BitMatrixEEaSERKS2_.exit, label %201 -201: ; preds = %._crit_edge123 +201: ; preds = %._crit_edge124 %202 = getelementptr inbounds nuw i8, ptr %200, i64 8 %203 = load i32, ptr %202, align 8 %204 = add i32 %203, -1 @@ -1780,7 +1782,7 @@ _ZN5zxing19FastWindowBinarizer10cumulativeEPiS1_ii.exit: ; preds = %._crit_edge. call void %209(ptr noundef nonnull align 8 dereferenceable(12) %200) #10 br label %_ZN5zxing3RefINS_9BitMatrixEEaSERKS2_.exit -_ZN5zxing3RefINS_9BitMatrixEEaSERKS2_.exit: ; preds = %._crit_edge123, %201, %206 +_ZN5zxing3RefINS_9BitMatrixEEaSERKS2_.exit: ; preds = %._crit_edge124, %201, %206 store ptr %110, ptr %197, align 8 br label %210 @@ -1789,7 +1791,7 @@ _ZN5zxing3RefINS_9BitMatrixEEaSERKS2_.exit: ; preds = %._crit_edge123, %20 %212 = add i32 %211, -1 store i32 %212, ptr %115, align 8 %213 = icmp eq i32 %212, 0 - br i1 %213, label %214, label %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit90 + br i1 %213, label %214, label %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit91 214: ; preds = %210 store i32 -559026175, ptr %115, align 8 @@ -1797,16 +1799,16 @@ _ZN5zxing3RefINS_9BitMatrixEEaSERKS2_.exit: ; preds = %._crit_edge123, %20 %216 = getelementptr inbounds nuw i8, ptr %215, i64 8 %217 = load ptr, ptr %216, align 8 call void %217(ptr noundef nonnull align 8 dereferenceable(12) %110) #10 - br label %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit90 + br label %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit91 -_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit90: ; preds = %210, %214 +_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit91: ; preds = %210, %214 store ptr getelementptr inbounds nuw inrange(-16, 16) (i8, ptr @_ZTVN5zxing8ArrayRefIcEE, i64 16), ptr %4, align 8 %218 = getelementptr inbounds nuw i8, ptr %4, i64 16 %219 = load ptr, ptr %218, align 8 - %.not.i91 = icmp eq ptr %219, null - br i1 %.not.i91, label %_ZN5zxing8ArrayRefIcED2Ev.exit, label %220 + %.not.i92 = icmp eq ptr %219, null + br i1 %.not.i92, label %_ZN5zxing8ArrayRefIcED2Ev.exit, label %220 -220: ; preds = %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit90 +220: ; preds = %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit91 %221 = getelementptr inbounds nuw i8, ptr %219, i64 8 %222 = load i32, ptr %221, align 8 %223 = add i32 %222, -1 @@ -1822,16 +1824,16 @@ _ZN5zxing3RefINS_9BitMatrixEED2Ev.exit90: ; preds = %210, %214 call void %228(ptr noundef nonnull align 8 dereferenceable(12) %219) #10 br label %_ZN5zxing8ArrayRefIcED2Ev.exit -_ZN5zxing8ArrayRefIcED2Ev.exit: ; preds = %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit90, %220, %225 - br i1 %.not.not, label %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit98, label %268 +_ZN5zxing8ArrayRefIcED2Ev.exit: ; preds = %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit91, %220, %225 + br i1 %.not.not, label %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit99, label %268 _ZN5zxing3RefINS_9BitMatrixEED2Ev.exit: ; preds = %130, %125, %123, %57 %.pn = phi { ptr, i32 } [ %58, %57 ], [ %124, %123 ], [ %126, %125 ], [ %126, %130 ] store ptr getelementptr inbounds nuw inrange(-16, 16) (i8, ptr @_ZTVN5zxing8ArrayRefIcEE, i64 16), ptr %4, align 8 %229 = getelementptr inbounds nuw i8, ptr %4, i64 16 %230 = load ptr, ptr %229, align 8 - %.not.i92 = icmp eq ptr %230, null - br i1 %.not.i92, label %_ZN5zxing8ArrayRefIcED2Ev.exit93, label %231 + %.not.i93 = icmp eq ptr %230, null + br i1 %.not.i93, label %_ZN5zxing8ArrayRefIcED2Ev.exit94, label %231 231: ; preds = %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit %232 = getelementptr inbounds nuw i8, ptr %230, i64 8 @@ -1839,7 +1841,7 @@ _ZN5zxing3RefINS_9BitMatrixEED2Ev.exit: ; preds = %130, %125, %123, %5 %234 = add i32 %233, -1 store i32 %234, ptr %232, align 8 %235 = icmp eq i32 %234, 0 - br i1 %235, label %236, label %_ZN5zxing8ArrayRefIcED2Ev.exit93 + br i1 %235, label %236, label %_ZN5zxing8ArrayRefIcED2Ev.exit94 236: ; preds = %231 store i32 -559026175, ptr %232, align 8 @@ -1847,17 +1849,17 @@ _ZN5zxing3RefINS_9BitMatrixEED2Ev.exit: ; preds = %130, %125, %123, %5 %238 = getelementptr inbounds nuw i8, ptr %237, i64 8 %239 = load ptr, ptr %238, align 8 call void %239(ptr noundef nonnull align 8 dereferenceable(12) %230) #10 - br label %_ZN5zxing8ArrayRefIcED2Ev.exit93 + br label %_ZN5zxing8ArrayRefIcED2Ev.exit94 -_ZN5zxing8ArrayRefIcED2Ev.exit93: ; preds = %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit, %231, %236 +_ZN5zxing8ArrayRefIcED2Ev.exit94: ; preds = %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit, %231, %236 resume { ptr, i32 } %.pn 240: ; preds = %19, %_ZN5zxing3RefINS_15LuminanceSourceEED2Ev.exit call void @_ZN5zxing24GlobalHistogramBinarizer14getBlackMatrixERNS_12ErrorHandlerE(ptr dead_on_unwind nonnull writable sret(%"class.zxing::Ref.0") align 8 %5, ptr noundef nonnull align 8 dereferenceable(121) %0, ptr noundef nonnull align 8 dereferenceable(48) %1) %241 = getelementptr inbounds nuw i8, ptr %0, i64 128 %242 = load ptr, ptr %5, align 8 - %.not.i.i94 = icmp eq ptr %242, null - br i1 %.not.i.i94, label %247, label %243 + %.not.i.i95 = icmp eq ptr %242, null + br i1 %.not.i.i95, label %247, label %243 243: ; preds = %240 %244 = getelementptr inbounds nuw i8, ptr %242, i64 8 @@ -1868,8 +1870,8 @@ _ZN5zxing8ArrayRefIcED2Ev.exit93: ; preds = %_ZN5zxing3RefINS_9B 247: ; preds = %243, %240 %248 = load ptr, ptr %241, align 8 - %.not5.i.i95 = icmp eq ptr %248, null - br i1 %.not5.i.i95, label %_ZN5zxing3RefINS_9BitMatrixEEaSERKS2_.exit96, label %249 + %.not5.i.i96 = icmp eq ptr %248, null + br i1 %.not5.i.i96, label %_ZN5zxing3RefINS_9BitMatrixEEaSERKS2_.exit97, label %249 249: ; preds = %247 %250 = getelementptr inbounds nuw i8, ptr %248, i64 8 @@ -1877,7 +1879,7 @@ _ZN5zxing8ArrayRefIcED2Ev.exit93: ; preds = %_ZN5zxing3RefINS_9B %252 = add i32 %251, -1 store i32 %252, ptr %250, align 8 %253 = icmp eq i32 %252, 0 - br i1 %253, label %254, label %_ZN5zxing3RefINS_9BitMatrixEEaSERKS2_.exit96 + br i1 %253, label %254, label %_ZN5zxing3RefINS_9BitMatrixEEaSERKS2_.exit97 254: ; preds = %249 store i32 -559026175, ptr %250, align 8 @@ -1886,21 +1888,21 @@ _ZN5zxing8ArrayRefIcED2Ev.exit93: ; preds = %_ZN5zxing3RefINS_9B %257 = load ptr, ptr %256, align 8 call void %257(ptr noundef nonnull align 8 dereferenceable(12) %248) #10 %.pre = load ptr, ptr %5, align 8 - br label %_ZN5zxing3RefINS_9BitMatrixEEaSERKS2_.exit96 + br label %_ZN5zxing3RefINS_9BitMatrixEEaSERKS2_.exit97 -_ZN5zxing3RefINS_9BitMatrixEEaSERKS2_.exit96: ; preds = %247, %249, %254 +_ZN5zxing3RefINS_9BitMatrixEEaSERKS2_.exit97: ; preds = %247, %249, %254 %258 = phi ptr [ %242, %247 ], [ %242, %249 ], [ %.pre, %254 ] store ptr %242, ptr %241, align 8 - %.not.i97 = icmp eq ptr %258, null - br i1 %.not.i97, label %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit98, label %259 + %.not.i98 = icmp eq ptr %258, null + br i1 %.not.i98, label %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit99, label %259 -259: ; preds = %_ZN5zxing3RefINS_9BitMatrixEEaSERKS2_.exit96 +259: ; preds = %_ZN5zxing3RefINS_9BitMatrixEEaSERKS2_.exit97 %260 = getelementptr inbounds nuw i8, ptr %258, i64 8 %261 = load i32, ptr %260, align 8 %262 = add i32 %261, -1 store i32 %262, ptr %260, align 8 %263 = icmp eq i32 %262, 0 - br i1 %263, label %264, label %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit98 + br i1 %263, label %264, label %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit99 264: ; preds = %259 store i32 -559026175, ptr %260, align 8 @@ -1908,13 +1910,13 @@ _ZN5zxing3RefINS_9BitMatrixEEaSERKS2_.exit96: ; preds = %247, %249, %254 %266 = getelementptr inbounds nuw i8, ptr %265, i64 8 %267 = load ptr, ptr %266, align 8 call void %267(ptr noundef nonnull align 8 dereferenceable(12) %258) #10 - br label %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit98 + br label %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit99 -_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit98: ; preds = %264, %259, %_ZN5zxing3RefINS_9BitMatrixEEaSERKS2_.exit96, %_ZN5zxing8ArrayRefIcED2Ev.exit +_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit99: ; preds = %264, %259, %_ZN5zxing3RefINS_9BitMatrixEEaSERKS2_.exit97, %_ZN5zxing8ArrayRefIcED2Ev.exit br label %268 -268: ; preds = %_ZN5zxing8ArrayRefIcED2Ev.exit, %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit98 - %.1 = phi i32 [ -1, %_ZN5zxing8ArrayRefIcED2Ev.exit ], [ 0, %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit98 ] +268: ; preds = %_ZN5zxing8ArrayRefIcED2Ev.exit, %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit99 + %.1 = phi i32 [ -1, %_ZN5zxing8ArrayRefIcED2Ev.exit ], [ 0, %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit99 ] ret i32 %.1 } diff --git a/bench/opencv/optimized/resize.ll b/bench/opencv/optimized/resize.ll index 09680265af5..372abcffedd 100644 --- a/bench/opencv/optimized/resize.ll +++ b/bench/opencv/optimized/resize.ll @@ -1722,6 +1722,7 @@ _ZN2cv10AutoBufferIiLm264EED2Ev.exit469: ; preds = %411, %406, %375 %473 = zext nneg i32 %factor.op.mul546 to i64 %wide.trip.count = zext nneg i32 %73 to i64 %474 = icmp samesign ult i32 %.0376, %factor.op.mul546 + %wide.trip.count594 = zext nneg i32 %factor.op.mul546 to i64 %475 = icmp samesign ult i32 %.0376, %factor.op.mul546 br label %486 @@ -2024,7 +2025,7 @@ _ZN2cvL19interpolateLanczos4EfPf.exit: ; preds = %596, %600, %547 %623 = getelementptr inbounds nuw float, ptr %457, i64 %619 store float %622, ptr %623, align 4 %indvars.iv.next592 = add nuw nsw i64 %indvars.iv591, 1 - %exitcond595.not = icmp eq i64 %indvars.iv.next592, %473 + %exitcond595.not = icmp eq i64 %indvars.iv.next592, %wide.trip.count594 br i1 %exitcond595.not, label %.loopexit531, label %.lr.ph, !llvm.loop !17 .loopexit531: ; preds = %.lr.ph, %.lr.ph545, %.preheader535, %.preheader530 diff --git a/bench/openjdk/optimized/sharedRuntimeTrig.ll b/bench/openjdk/optimized/sharedRuntimeTrig.ll index 2517d1a4e7e..1838946336a 100644 --- a/bench/openjdk/optimized/sharedRuntimeTrig.ll +++ b/bench/openjdk/optimized/sharedRuntimeTrig.ll @@ -876,42 +876,42 @@ _ZL7scalbnAdi.exit285.i: ; preds = %263 %278 = trunc nuw nsw i64 %indvars.iv124.i to i32 %279 = add nuw nsw i32 %.0231.i, %278 %280 = sext i32 %.0231.i to i64 - br label %281 + %281 = sext i32 %279 to i64 + br label %282 -281: ; preds = %._crit_edge52.i, %.preheader12.i +282: ; preds = %._crit_edge52.i, %.preheader12.i %indvars.iv132.i = phi i64 [ %280, %.preheader12.i ], [ %indvars.iv.next133.i, %._crit_edge52.i ] %indvars.iv.next133.i = add nuw nsw i64 %indvars.iv132.i, 1 %gep.i = getelementptr i32, ptr %invariant.gep.i, i64 %indvars.iv.next133.i - %282 = load i32, ptr %gep.i, align 4 - %283 = sitofp i32 %282 to double - %284 = add i64 %indvars.iv149, %indvars.iv132.i - %sext153 = shl i64 %284, 32 - %285 = ashr exact i64 %sext153, 32 - %286 = getelementptr inbounds [20 x double], ptr %4, i64 0, i64 %285 - store double %283, ptr %286, align 8 + %283 = load i32, ptr %gep.i, align 4 + %284 = sitofp i32 %283 to double + %285 = add i64 %indvars.iv149, %indvars.iv132.i + %sext153 = shl i64 %285, 32 + %286 = ashr exact i64 %sext153, 32 + %287 = getelementptr inbounds [20 x double], ptr %4, i64 0, i64 %286 + store double %284, ptr %287, align 8 br i1 %.not269.not31163.i, label %.lr.ph51.i, label %._crit_edge52.i -.lr.ph51.i: ; preds = %281, %.lr.ph51.i - %indvars.iv127.i = phi i64 [ %indvars.iv.next128.i, %.lr.ph51.i ], [ 0, %281 ] - %.149.i = phi double [ %293, %.lr.ph51.i ], [ 0.000000e+00, %281 ] - %287 = getelementptr inbounds nuw double, ptr %7, i64 %indvars.iv127.i - %288 = load double, ptr %287, align 8 - %289 = sub nsw i64 %285, %indvars.iv127.i - %290 = getelementptr inbounds [20 x double], ptr %4, i64 0, i64 %289 - %291 = load double, ptr %290, align 8 - %292 = fmul double %288, %291 - %293 = fadd double %.149.i, %292 +.lr.ph51.i: ; preds = %282, %.lr.ph51.i + %indvars.iv127.i = phi i64 [ %indvars.iv.next128.i, %.lr.ph51.i ], [ 0, %282 ] + %.149.i = phi double [ %294, %.lr.ph51.i ], [ 0.000000e+00, %282 ] + %288 = getelementptr inbounds nuw double, ptr %7, i64 %indvars.iv127.i + %289 = load double, ptr %288, align 8 + %290 = sub nsw i64 %286, %indvars.iv127.i + %291 = getelementptr inbounds [20 x double], ptr %4, i64 0, i64 %290 + %292 = load double, ptr %291, align 8 + %293 = fmul double %289, %292 + %294 = fadd double %.149.i, %293 %indvars.iv.next128.i = add nuw nsw i64 %indvars.iv127.i, 1 %exitcond131.not.i = icmp eq i64 %indvars.iv.next128.i, %wide.trip.count130.i.pre-phi br i1 %exitcond131.not.i, label %._crit_edge52.i, label %.lr.ph51.i, !llvm.loop !17 -._crit_edge52.i: ; preds = %.lr.ph51.i, %281 - %.1.lcssa.i = phi double [ 0.000000e+00, %281 ], [ %293, %.lr.ph51.i ] - %294 = getelementptr inbounds nuw [20 x double], ptr %6, i64 0, i64 %indvars.iv.next133.i - store double %.1.lcssa.i, ptr %294, align 8 - %295 = trunc nsw i64 %indvars.iv.next133.i to i32 - %.not266.not.i = icmp samesign ugt i32 %279, %295 - br i1 %.not266.not.i, label %281, label %.loopexit13.loopexit.i, !llvm.loop !12 +._crit_edge52.i: ; preds = %.lr.ph51.i, %282 + %.1.lcssa.i = phi double [ 0.000000e+00, %282 ], [ %294, %.lr.ph51.i ] + %295 = getelementptr inbounds nuw [20 x double], ptr %6, i64 0, i64 %indvars.iv.next133.i + store double %.1.lcssa.i, ptr %295, align 8 + %.not266.not.i = icmp samesign ult i64 %indvars.iv.next133.i, %281 + br i1 %.not266.not.i, label %282, label %.loopexit13.loopexit.i, !llvm.loop !12 296: ; preds = %296, %.preheader11.i %indvars.iv137.i = phi i64 [ %273, %.preheader11.i ], [ %indvars.iv.next138.i, %296 ] diff --git a/bench/openjdk/optimized/sharedRuntime_x86_64.ll b/bench/openjdk/optimized/sharedRuntime_x86_64.ll index 9644028e03a..5ba72c7e8ad 100644 --- a/bench/openjdk/optimized/sharedRuntime_x86_64.ll +++ b/bench/openjdk/optimized/sharedRuntime_x86_64.ll @@ -8000,8 +8000,8 @@ _ZL13reverse_wordsPmS_i.exit36: ; preds = %.lr.ph.i32 .lr.ph134.i: ; preds = %._crit_edge127.i, %.lr.ph134.preheader.i %indvars.iv = phi i64 [ %indvars.iv.next, %._crit_edge127.i ], [ 1, %.lr.ph134.preheader.i ] %indvars.iv179.i = phi i64 [ %indvars.iv.next180.i, %._crit_edge127.i ], [ 0, %.lr.ph134.preheader.i ] - %.0132.i = phi i64 [ %80, %._crit_edge127.i ], [ 0, %.lr.ph134.preheader.i ] - %.0101131.i = phi i64 [ %81, %._crit_edge127.i ], [ 0, %.lr.ph134.preheader.i ] + %.0132.i = phi i64 [ %85, %._crit_edge127.i ], [ 0, %.lr.ph134.preheader.i ] + %.0101131.i = phi i64 [ %86, %._crit_edge127.i ], [ 0, %.lr.ph134.preheader.i ] %38 = lshr i64 %indvars.iv, 1 %39 = and i64 %38, 2147483647 %umax = call i64 @llvm.umax.i64(i64 %39, i64 1) @@ -8035,166 +8035,173 @@ _ZL13reverse_wordsPmS_i.exit36: ; preds = %.lr.ph.i32 br i1 %exitcond.not, label %._crit_edge.i, label %.lr.ph.i38, !llvm.loop !53 ._crit_edge.i: ; preds = %.lr.ph.i38 - %57 = and i64 %indvars.iv179.i, 1 - %58 = icmp eq i64 %57, 0 - br i1 %58, label %._crit_edge.i.._crit_edge.thread.i_crit_edge, label %._crit_edge._crit_edge.i + %57 = trunc nuw nsw i64 %umax to i32 + %58 = and i64 %indvars.iv179.i, 1 + %59 = icmp eq i64 %58, 0 + br i1 %59, label %._crit_edge.i.._crit_edge.thread.i_crit_edge, label %67 ._crit_edge.i.._crit_edge.thread.i_crit_edge: ; preds = %._crit_edge.i %.pre = load i64, ptr %6, align 8 br label %._crit_edge.thread.i ._crit_edge.thread.i: ; preds = %._crit_edge.i.._crit_edge.thread.i_crit_edge, %.lr.ph134.i - %59 = phi i64 [ %.pre, %._crit_edge.i.._crit_edge.thread.i_crit_edge ], [ 0, %.lr.ph134.i ] + %60 = phi i64 [ %.pre, %._crit_edge.i.._crit_edge.thread.i_crit_edge ], [ 0, %.lr.ph134.i ] %.1.lcssa204.i = phi i64 [ %55, %._crit_edge.i.._crit_edge.thread.i_crit_edge ], [ %.0132.i, %.lr.ph134.i ] %.1102.lcssa203.i = phi i64 [ %56, %._crit_edge.i.._crit_edge.thread.i_crit_edge ], [ %.0101131.i, %.lr.ph134.i ] - %.0111.lcssa201.i = phi i64 [ %umax, %._crit_edge.i.._crit_edge.thread.i_crit_edge ], [ 0, %.lr.ph134.i ] - %60 = getelementptr inbounds nuw i64, ptr %15, i64 %.0111.lcssa201.i - %61 = load i64, ptr %60, align 8 - %62 = call { i64, i64, i64, i64 } asm "mul $5; add %rax, $2; adc %rdx, $3; adc $$0, $4", "=&{dx},={ax},=r,=r,=*imr,r,{ax},2,3,4,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %6, i64 %61, i64 %61, i64 %.1.lcssa204.i, i64 %.1102.lcssa203.i, i64 %59) #14, !srcloc !54 - %63 = extractvalue { i64, i64, i64, i64 } %62, 2 - %64 = extractvalue { i64, i64, i64, i64 } %62, 3 - br label %._crit_edge._crit_edge.i - -._crit_edge._crit_edge.i: ; preds = %._crit_edge.thread.i, %._crit_edge.i - %.0111.lcssa202.i = phi i64 [ %.0111.lcssa201.i, %._crit_edge.thread.i ], [ %umax, %._crit_edge.i ] - %.2103.i = phi i64 [ %64, %._crit_edge.thread.i ], [ %56, %._crit_edge.i ] - %.2.i = phi i64 [ %63, %._crit_edge.thread.i ], [ %55, %._crit_edge.i ] - %65 = icmp samesign ult i64 %.0111.lcssa202.i, %indvars.iv179.i - br i1 %65, label %.lr.ph126.i, label %._crit_edge127.i - -.lr.ph126.i: ; preds = %._crit_edge._crit_edge.i, %.lr.ph126.i - %indvars.iv176.i = phi i64 [ %indvars.iv.next177.i, %.lr.ph126.i ], [ %.0111.lcssa202.i, %._crit_edge._crit_edge.i ] - %.3124.i = phi i64 [ %73, %.lr.ph126.i ], [ %.2.i, %._crit_edge._crit_edge.i ] - %.3104123.i = phi i64 [ %74, %.lr.ph126.i ], [ %.2103.i, %._crit_edge._crit_edge.i ] - %66 = load i64, ptr %6, align 8 - %67 = getelementptr inbounds nuw i64, ptr %19, i64 %indvars.iv176.i - %68 = load i64, ptr %67, align 8 - %69 = sub nuw nsw i64 %indvars.iv179.i, %indvars.iv176.i - %70 = getelementptr inbounds nuw i64, ptr %16, i64 %69 - %71 = load i64, ptr %70, align 8 - %72 = call { i64, i64, i64, i64 } asm "mul $5; add %rax, $2; adc %rdx, $3; adc $$0, $4", "=&{dx},={ax},=r,=r,=*imr,r,{ax},2,3,4,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %6, i64 %68, i64 %71, i64 %.3124.i, i64 %.3104123.i, i64 %66) #14, !srcloc !55 - %73 = extractvalue { i64, i64, i64, i64 } %72, 2 - %74 = extractvalue { i64, i64, i64, i64 } %72, 3 + %.0111.lcssa201.i = phi i32 [ %57, %._crit_edge.i.._crit_edge.thread.i_crit_edge ], [ 0, %.lr.ph134.i ] + %61 = zext nneg i32 %.0111.lcssa201.i to i64 + %62 = getelementptr inbounds nuw i64, ptr %15, i64 %61 + %63 = load i64, ptr %62, align 8 + %64 = call { i64, i64, i64, i64 } asm "mul $5; add %rax, $2; adc %rdx, $3; adc $$0, $4", "=&{dx},={ax},=r,=r,=*imr,r,{ax},2,3,4,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %6, i64 %63, i64 %63, i64 %.1.lcssa204.i, i64 %.1102.lcssa203.i, i64 %60) #14, !srcloc !54 + %65 = extractvalue { i64, i64, i64, i64 } %64, 2 + %66 = extractvalue { i64, i64, i64, i64 } %64, 3 + br label %67 + +67: ; preds = %._crit_edge.thread.i, %._crit_edge.i + %.0111.lcssa202.i = phi i32 [ %.0111.lcssa201.i, %._crit_edge.thread.i ], [ %57, %._crit_edge.i ] + %.2103.i = phi i64 [ %66, %._crit_edge.thread.i ], [ %56, %._crit_edge.i ] + %.2.i = phi i64 [ %65, %._crit_edge.thread.i ], [ %55, %._crit_edge.i ] + %68 = zext nneg i32 %.0111.lcssa202.i to i64 + %69 = icmp samesign ugt i64 %indvars.iv179.i, %68 + br i1 %69, label %.lr.ph126.preheader.i, label %._crit_edge127.i + +.lr.ph126.preheader.i: ; preds = %67 + %70 = zext nneg i32 %.0111.lcssa202.i to i64 + br label %.lr.ph126.i + +.lr.ph126.i: ; preds = %.lr.ph126.i, %.lr.ph126.preheader.i + %indvars.iv176.i = phi i64 [ %70, %.lr.ph126.preheader.i ], [ %indvars.iv.next177.i, %.lr.ph126.i ] + %.3124.i = phi i64 [ %.2.i, %.lr.ph126.preheader.i ], [ %78, %.lr.ph126.i ] + %.3104123.i = phi i64 [ %.2103.i, %.lr.ph126.preheader.i ], [ %79, %.lr.ph126.i ] + %71 = load i64, ptr %6, align 8 + %72 = getelementptr inbounds nuw i64, ptr %19, i64 %indvars.iv176.i + %73 = load i64, ptr %72, align 8 + %74 = sub nuw nsw i64 %indvars.iv179.i, %indvars.iv176.i + %75 = getelementptr inbounds nuw i64, ptr %16, i64 %74 + %76 = load i64, ptr %75, align 8 + %77 = call { i64, i64, i64, i64 } asm "mul $5; add %rax, $2; adc %rdx, $3; adc $$0, $4", "=&{dx},={ax},=r,=r,=*imr,r,{ax},2,3,4,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %6, i64 %73, i64 %76, i64 %.3124.i, i64 %.3104123.i, i64 %71) #14, !srcloc !55 + %78 = extractvalue { i64, i64, i64, i64 } %77, 2 + %79 = extractvalue { i64, i64, i64, i64 } %77, 3 %indvars.iv.next177.i = add nuw nsw i64 %indvars.iv176.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next177.i, %indvars.iv179.i br i1 %exitcond.not.i, label %._crit_edge127.i, label %.lr.ph126.i, !llvm.loop !56 -._crit_edge127.i: ; preds = %.lr.ph126.i, %._crit_edge._crit_edge.i - %.3104.lcssa.i = phi i64 [ %.2103.i, %._crit_edge._crit_edge.i ], [ %74, %.lr.ph126.i ] - %.3.lcssa.i = phi i64 [ %.2.i, %._crit_edge._crit_edge.i ], [ %73, %.lr.ph126.i ] - %75 = mul i64 %.3.lcssa.i, %3 - %76 = getelementptr inbounds nuw i64, ptr %19, i64 %indvars.iv179.i - store i64 %75, ptr %76, align 8 - %77 = load i64, ptr %6, align 8 - %78 = load i64, ptr %16, align 8 - %79 = call { i64, i64, i64, i64 } asm "mul $5; add %rax, $2; adc %rdx, $3; adc $$0, $4", "=&{dx},={ax},=r,=r,=*imr,r,{ax},2,3,4,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %6, i64 %75, i64 %78, i64 %.3.lcssa.i, i64 %.3104.lcssa.i, i64 %77) #14, !srcloc !57 - %80 = extractvalue { i64, i64, i64, i64 } %79, 3 - %81 = load i64, ptr %6, align 8 +._crit_edge127.i: ; preds = %.lr.ph126.i, %67 + %.3104.lcssa.i = phi i64 [ %.2103.i, %67 ], [ %79, %.lr.ph126.i ] + %.3.lcssa.i = phi i64 [ %.2.i, %67 ], [ %78, %.lr.ph126.i ] + %80 = mul i64 %.3.lcssa.i, %3 + %81 = getelementptr inbounds nuw i64, ptr %19, i64 %indvars.iv179.i + store i64 %80, ptr %81, align 8 + %82 = load i64, ptr %6, align 8 + %83 = load i64, ptr %16, align 8 + %84 = call { i64, i64, i64, i64 } asm "mul $5; add %rax, $2; adc %rdx, $3; adc $$0, $4", "=&{dx},={ax},=r,=r,=*imr,r,{ax},2,3,4,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %6, i64 %80, i64 %83, i64 %.3.lcssa.i, i64 %.3104.lcssa.i, i64 %82) #14, !srcloc !57 + %85 = extractvalue { i64, i64, i64, i64 } %84, 3 + %86 = load i64, ptr %6, align 8 store i64 0, ptr %6, align 8 %exitcond183.not.i = icmp eq i64 %indvars.iv.next180.i, %wide.trip.count182.i %indvars.iv.next = add nuw i64 %indvars.iv, 1 br i1 %exitcond183.not.i, label %.preheader116.i, label %.lr.ph134.i, !llvm.loop !58 .preheader.i: ; preds = %._crit_edge151.i, %.preheader116.i - %.4.lcssa.i = phi i64 [ %80, %.preheader116.i ], [ %.7108.lcssa.i, %._crit_edge151.i ] + %.4.lcssa.i = phi i64 [ %85, %.preheader116.i ], [ %.7108.lcssa.i, %._crit_edge151.i ] %.not159.i = icmp eq i64 %.4.lcssa.i, 0 br i1 %.not159.i, label %_ZL17montgomery_squarePmS_S_mi.exit, label %.lr.ph161.i .lr.ph157.i: ; preds = %.preheader116.i, %._crit_edge151.i %indvars.iv193.i = phi i64 [ %indvars.iv.next194.i, %._crit_edge151.i ], [ %12, %.preheader116.i ] %indvars.iv184.i = phi i64 [ %indvars.iv.next185.i, %._crit_edge151.i ], [ 1, %.preheader116.i ] - %.4156.i = phi i64 [ %.7108.lcssa.i, %._crit_edge151.i ], [ %80, %.preheader116.i ] - %.4105155.i = phi i64 [ %131, %._crit_edge151.i ], [ %81, %.preheader116.i ] - %82 = sub nuw nsw i64 %indvars.iv193.i, %12 - %83 = add nuw nsw i64 %82, 1 - %84 = sub nsw i64 %12, %83 - %85 = trunc nsw i64 %84 to i32 - %86 = sdiv i32 %85, 2 - %87 = sext i32 %86 to i64 - %88 = add nsw i64 %83, %87 - %89 = icmp sgt i64 %84, 1 - br i1 %89, label %.lr.ph141.i, label %._crit_edge142.i + %.4156.i = phi i64 [ %.7108.lcssa.i, %._crit_edge151.i ], [ %85, %.preheader116.i ] + %.4105155.i = phi i64 [ %136, %._crit_edge151.i ], [ %86, %.preheader116.i ] + %87 = sub nuw nsw i64 %indvars.iv193.i, %12 + %88 = add nuw nsw i64 %87, 1 + %89 = sub nsw i64 %12, %88 + %90 = trunc nsw i64 %89 to i32 + %91 = sdiv i32 %90, 2 + %92 = sext i32 %91 to i64 + %93 = add nsw i64 %88, %92 + %94 = icmp sgt i64 %89, 1 + br i1 %94, label %.lr.ph141.i, label %._crit_edge142.i .lr.ph141.i: ; preds = %.lr.ph157.i, %.lr.ph141.i %indvars.iv186.i = phi i64 [ %indvars.iv.next187.i, %.lr.ph141.i ], [ %indvars.iv184.i, %.lr.ph157.i ] - %.5139.i = phi i64 [ %105, %.lr.ph141.i ], [ %.4156.i, %.lr.ph157.i ] - %.5106138.i = phi i64 [ %106, %.lr.ph141.i ], [ %.4105155.i, %.lr.ph157.i ] - %90 = load i64, ptr %6, align 8 - %91 = getelementptr inbounds nuw i64, ptr %15, i64 %indvars.iv186.i - %92 = load i64, ptr %91, align 8 - %93 = sub nsw i64 %indvars.iv193.i, %indvars.iv186.i - %94 = getelementptr inbounds i64, ptr %15, i64 %93 - %95 = load i64, ptr %94, align 8 - %96 = call { i64, i64, i64, i64 } asm "mul $5; add %rax, $2; adc %rdx, $3; adc $$0, $4; add %rax, $2; adc %rdx, $3; adc $$0, $4", "=&{dx},={ax},=r,=r,=*imr,r,{ax},2,3,4,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %6, i64 %92, i64 %95, i64 %.5139.i, i64 %.5106138.i, i64 %90) #14, !srcloc !59 - %97 = extractvalue { i64, i64, i64, i64 } %96, 2 - %98 = extractvalue { i64, i64, i64, i64 } %96, 3 - %99 = load i64, ptr %6, align 8 - %100 = getelementptr inbounds nuw i64, ptr %19, i64 %indvars.iv186.i - %101 = load i64, ptr %100, align 8 - %102 = getelementptr inbounds i64, ptr %16, i64 %93 - %103 = load i64, ptr %102, align 8 - %104 = call { i64, i64, i64, i64 } asm "mul $5; add %rax, $2; adc %rdx, $3; adc $$0, $4", "=&{dx},={ax},=r,=r,=*imr,r,{ax},2,3,4,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %6, i64 %101, i64 %103, i64 %97, i64 %98, i64 %99) #14, !srcloc !60 - %105 = extractvalue { i64, i64, i64, i64 } %104, 2 - %106 = extractvalue { i64, i64, i64, i64 } %104, 3 + %.5139.i = phi i64 [ %110, %.lr.ph141.i ], [ %.4156.i, %.lr.ph157.i ] + %.5106138.i = phi i64 [ %111, %.lr.ph141.i ], [ %.4105155.i, %.lr.ph157.i ] + %95 = load i64, ptr %6, align 8 + %96 = getelementptr inbounds nuw i64, ptr %15, i64 %indvars.iv186.i + %97 = load i64, ptr %96, align 8 + %98 = sub nsw i64 %indvars.iv193.i, %indvars.iv186.i + %99 = getelementptr inbounds i64, ptr %15, i64 %98 + %100 = load i64, ptr %99, align 8 + %101 = call { i64, i64, i64, i64 } asm "mul $5; add %rax, $2; adc %rdx, $3; adc $$0, $4; add %rax, $2; adc %rdx, $3; adc $$0, $4", "=&{dx},={ax},=r,=r,=*imr,r,{ax},2,3,4,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %6, i64 %97, i64 %100, i64 %.5139.i, i64 %.5106138.i, i64 %95) #14, !srcloc !59 + %102 = extractvalue { i64, i64, i64, i64 } %101, 2 + %103 = extractvalue { i64, i64, i64, i64 } %101, 3 + %104 = load i64, ptr %6, align 8 + %105 = getelementptr inbounds nuw i64, ptr %19, i64 %indvars.iv186.i + %106 = load i64, ptr %105, align 8 + %107 = getelementptr inbounds i64, ptr %16, i64 %98 + %108 = load i64, ptr %107, align 8 + %109 = call { i64, i64, i64, i64 } asm "mul $5; add %rax, $2; adc %rdx, $3; adc $$0, $4", "=&{dx},={ax},=r,=r,=*imr,r,{ax},2,3,4,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %6, i64 %106, i64 %108, i64 %102, i64 %103, i64 %104) #14, !srcloc !60 + %110 = extractvalue { i64, i64, i64, i64 } %109, 2 + %111 = extractvalue { i64, i64, i64, i64 } %109, 3 %indvars.iv.next187.i = add nuw nsw i64 %indvars.iv186.i, 1 - %107 = icmp slt i64 %indvars.iv.next187.i, %88 - br i1 %107, label %.lr.ph141.i, label %._crit_edge142.i, !llvm.loop !61 + %112 = icmp slt i64 %indvars.iv.next187.i, %93 + br i1 %112, label %.lr.ph141.i, label %._crit_edge142.i, !llvm.loop !61 ._crit_edge142.i: ; preds = %.lr.ph141.i, %.lr.ph157.i - %.0113.lcssa.in.i = phi i64 [ %83, %.lr.ph157.i ], [ %indvars.iv.next187.i, %.lr.ph141.i ] - %.5106.lcssa.i = phi i64 [ %.4105155.i, %.lr.ph157.i ], [ %106, %.lr.ph141.i ] - %.5.lcssa.i = phi i64 [ %.4156.i, %.lr.ph157.i ], [ %105, %.lr.ph141.i ] + %.0113.lcssa.in.i = phi i64 [ %88, %.lr.ph157.i ], [ %indvars.iv.next187.i, %.lr.ph141.i ] + %.5106.lcssa.i = phi i64 [ %.4105155.i, %.lr.ph157.i ], [ %111, %.lr.ph141.i ] + %.5.lcssa.i = phi i64 [ %.4156.i, %.lr.ph157.i ], [ %110, %.lr.ph141.i ] %.0113.lcssa.i = trunc i64 %.0113.lcssa.in.i to i32 - %108 = and i64 %indvars.iv193.i, 1 - %109 = icmp eq i64 %108, 0 - br i1 %109, label %110, label %118 + %113 = and i64 %indvars.iv193.i, 1 + %114 = icmp eq i64 %113, 0 + br i1 %114, label %115, label %123 -110: ; preds = %._crit_edge142.i - %111 = load i64, ptr %6, align 8 +115: ; preds = %._crit_edge142.i + %116 = load i64, ptr %6, align 8 %sext.i = shl i64 %.0113.lcssa.in.i, 32 - %112 = ashr exact i64 %sext.i, 29 - %113 = getelementptr inbounds i8, ptr %15, i64 %112 - %114 = load i64, ptr %113, align 8 - %115 = call { i64, i64, i64, i64 } asm "mul $5; add %rax, $2; adc %rdx, $3; adc $$0, $4", "=&{dx},={ax},=r,=r,=*imr,r,{ax},2,3,4,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %6, i64 %114, i64 %114, i64 %.5.lcssa.i, i64 %.5106.lcssa.i, i64 %111) #14, !srcloc !62 - %116 = extractvalue { i64, i64, i64, i64 } %115, 2 - %117 = extractvalue { i64, i64, i64, i64 } %115, 3 - br label %118 - -118: ; preds = %110, %._crit_edge142.i - %.6107.i = phi i64 [ %117, %110 ], [ %.5106.lcssa.i, %._crit_edge142.i ] - %.6.i = phi i64 [ %116, %110 ], [ %.5.lcssa.i, %._crit_edge142.i ] - %119 = icmp sgt i32 %7, %.0113.lcssa.i - br i1 %119, label %.lr.ph150.preheader.i, label %._crit_edge151.i - -.lr.ph150.preheader.i: ; preds = %118 + %117 = ashr exact i64 %sext.i, 29 + %118 = getelementptr inbounds i8, ptr %15, i64 %117 + %119 = load i64, ptr %118, align 8 + %120 = call { i64, i64, i64, i64 } asm "mul $5; add %rax, $2; adc %rdx, $3; adc $$0, $4", "=&{dx},={ax},=r,=r,=*imr,r,{ax},2,3,4,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %6, i64 %119, i64 %119, i64 %.5.lcssa.i, i64 %.5106.lcssa.i, i64 %116) #14, !srcloc !62 + %121 = extractvalue { i64, i64, i64, i64 } %120, 2 + %122 = extractvalue { i64, i64, i64, i64 } %120, 3 + br label %123 + +123: ; preds = %115, %._crit_edge142.i + %.6107.i = phi i64 [ %122, %115 ], [ %.5106.lcssa.i, %._crit_edge142.i ] + %.6.i = phi i64 [ %121, %115 ], [ %.5.lcssa.i, %._crit_edge142.i ] + %124 = icmp sgt i32 %7, %.0113.lcssa.i + br i1 %124, label %.lr.ph150.preheader.i, label %._crit_edge151.i + +.lr.ph150.preheader.i: ; preds = %123 %sext197.i = shl i64 %.0113.lcssa.in.i, 32 - %120 = ashr exact i64 %sext197.i, 32 + %125 = ashr exact i64 %sext197.i, 32 br label %.lr.ph150.i .lr.ph150.i: ; preds = %.lr.ph150.i, %.lr.ph150.preheader.i - %indvars.iv189.i = phi i64 [ %120, %.lr.ph150.preheader.i ], [ %indvars.iv.next190.i, %.lr.ph150.i ] - %.7148.i = phi i64 [ %.6.i, %.lr.ph150.preheader.i ], [ %128, %.lr.ph150.i ] - %.7108147.i = phi i64 [ %.6107.i, %.lr.ph150.preheader.i ], [ %129, %.lr.ph150.i ] - %121 = load i64, ptr %6, align 8 - %122 = getelementptr inbounds i64, ptr %19, i64 %indvars.iv189.i - %123 = load i64, ptr %122, align 8 - %124 = sub nsw i64 %indvars.iv193.i, %indvars.iv189.i - %125 = getelementptr inbounds i64, ptr %16, i64 %124 - %126 = load i64, ptr %125, align 8 - %127 = call { i64, i64, i64, i64 } asm "mul $5; add %rax, $2; adc %rdx, $3; adc $$0, $4", "=&{dx},={ax},=r,=r,=*imr,r,{ax},2,3,4,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %6, i64 %123, i64 %126, i64 %.7148.i, i64 %.7108147.i, i64 %121) #14, !srcloc !63 - %128 = extractvalue { i64, i64, i64, i64 } %127, 2 - %129 = extractvalue { i64, i64, i64, i64 } %127, 3 + %indvars.iv189.i = phi i64 [ %125, %.lr.ph150.preheader.i ], [ %indvars.iv.next190.i, %.lr.ph150.i ] + %.7148.i = phi i64 [ %.6.i, %.lr.ph150.preheader.i ], [ %133, %.lr.ph150.i ] + %.7108147.i = phi i64 [ %.6107.i, %.lr.ph150.preheader.i ], [ %134, %.lr.ph150.i ] + %126 = load i64, ptr %6, align 8 + %127 = getelementptr inbounds i64, ptr %19, i64 %indvars.iv189.i + %128 = load i64, ptr %127, align 8 + %129 = sub nsw i64 %indvars.iv193.i, %indvars.iv189.i + %130 = getelementptr inbounds i64, ptr %16, i64 %129 + %131 = load i64, ptr %130, align 8 + %132 = call { i64, i64, i64, i64 } asm "mul $5; add %rax, $2; adc %rdx, $3; adc $$0, $4", "=&{dx},={ax},=r,=r,=*imr,r,{ax},2,3,4,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %6, i64 %128, i64 %131, i64 %.7148.i, i64 %.7108147.i, i64 %126) #14, !srcloc !63 + %133 = extractvalue { i64, i64, i64, i64 } %132, 2 + %134 = extractvalue { i64, i64, i64, i64 } %132, 3 %indvars.iv.next190.i = add nsw i64 %indvars.iv189.i, 1 %lftr.wideiv.i = trunc i64 %indvars.iv.next190.i to i32 %exitcond192.not.i = icmp eq i32 %7, %lftr.wideiv.i br i1 %exitcond192.not.i, label %._crit_edge151.i, label %.lr.ph150.i, !llvm.loop !64 -._crit_edge151.i: ; preds = %.lr.ph150.i, %118 - %.7108.lcssa.i = phi i64 [ %.6107.i, %118 ], [ %129, %.lr.ph150.i ] - %.7.lcssa.i = phi i64 [ %.6.i, %118 ], [ %128, %.lr.ph150.i ] - %130 = getelementptr inbounds nuw i64, ptr %19, i64 %82 - store i64 %.7.lcssa.i, ptr %130, align 8 - %131 = load i64, ptr %6, align 8 +._crit_edge151.i: ; preds = %.lr.ph150.i, %123 + %.7108.lcssa.i = phi i64 [ %.6107.i, %123 ], [ %134, %.lr.ph150.i ] + %.7.lcssa.i = phi i64 [ %.6.i, %123 ], [ %133, %.lr.ph150.i ] + %135 = getelementptr inbounds nuw i64, ptr %19, i64 %87 + store i64 %.7.lcssa.i, ptr %135, align 8 + %136 = load i64, ptr %6, align 8 store i64 0, ptr %6, align 8 %indvars.iv.next194.i = add nuw nsw i64 %indvars.iv193.i, 1 %indvars.iv.next185.i = add nuw nsw i64 %indvars.iv184.i, 1 @@ -8202,42 +8209,42 @@ _ZL13reverse_wordsPmS_i.exit36: ; preds = %.lr.ph.i32 br i1 %exitcond196.not.i, label %.preheader.i, label %.lr.ph157.i, !llvm.loop !65 .lr.ph161.i: ; preds = %.preheader.i, %.lr.ph161.i - %.8160.i = phi i64 [ %133, %.lr.ph161.i ], [ %.4.lcssa.i, %.preheader.i ] - %132 = call { i64, i64, i64 } asm sideeffect "clc; 0: ; mov ($4, $0, 8), $2; sbb $2, ($3, $0, 8); inc $0; dec $1; jne 0b; mov $5, $2; sbb $$0, $2; ", "=r,=r,=&r,r,r,r,0,1,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull %19, ptr nonnull %16, i64 range(i64 1, 0) %.8160.i, i64 0, i64 range(i64 -1073741824, 342) %12) #14, !srcloc !49 - %133 = extractvalue { i64, i64, i64 } %132, 2 - %.not.i = icmp eq i64 %133, 0 + %.8160.i = phi i64 [ %138, %.lr.ph161.i ], [ %.4.lcssa.i, %.preheader.i ] + %137 = call { i64, i64, i64 } asm sideeffect "clc; 0: ; mov ($4, $0, 8), $2; sbb $2, ($3, $0, 8); inc $0; dec $1; jne 0b; mov $5, $2; sbb $$0, $2; ", "=r,=r,=&r,r,r,r,0,1,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull %19, ptr nonnull %16, i64 range(i64 1, 0) %.8160.i, i64 0, i64 range(i64 -1073741824, 342) %12) #14, !srcloc !49 + %138 = extractvalue { i64, i64, i64 } %137, 2 + %.not.i = icmp eq i64 %138, 0 br i1 %.not.i, label %_ZL17montgomery_squarePmS_S_mi.exit, label %.lr.ph161.i, !llvm.loop !66 _ZL17montgomery_squarePmS_S_mi.exit: ; preds = %.lr.ph161.i, %.preheader.i call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) - br label %134 + br label %139 _ZL13reverse_wordsPmS_i.exit36.thread: ; preds = %11, %_ZL13reverse_wordsPmS_i.exit36 call fastcc void @_ZL19montgomery_multiplyPmS_S_S_mi(ptr noundef %15, ptr noundef %15, ptr noundef %16, ptr noundef %19, i64 noundef %3, i32 noundef %7) - br label %134 + br label %139 -134: ; preds = %_ZL13reverse_wordsPmS_i.exit36.thread, %_ZL17montgomery_squarePmS_S_mi.exit +139: ; preds = %_ZL13reverse_wordsPmS_i.exit36.thread, %_ZL17montgomery_squarePmS_S_mi.exit br i1 %20, label %.lr.ph.preheader.i40, label %_ZL13reverse_wordsPmS_i.exit45 -.lr.ph.preheader.i40: ; preds = %134 - %135 = zext nneg i32 %7 to i64 - %136 = getelementptr inbounds nuw i64, ptr %4, i64 %135 +.lr.ph.preheader.i40: ; preds = %139 + %140 = zext nneg i32 %7 to i64 + %141 = getelementptr inbounds nuw i64, ptr %4, i64 %140 br label %.lr.ph.i41 .lr.ph.i41: ; preds = %.lr.ph.i41, %.lr.ph.preheader.i40 - %.010.i42 = phi i32 [ %137, %.lr.ph.i41 ], [ %7, %.lr.ph.preheader.i40 ] - %.069.i43 = phi ptr [ %138, %.lr.ph.i41 ], [ %136, %.lr.ph.preheader.i40 ] - %.078.i44 = phi ptr [ %141, %.lr.ph.i41 ], [ %19, %.lr.ph.preheader.i40 ] - %137 = add nsw i32 %.010.i42, -1 - %138 = getelementptr inbounds i8, ptr %.069.i43, i64 -8 - %139 = load i64, ptr %.078.i44, align 8 - %140 = call noundef i64 @llvm.fshl.i64(i64 %139, i64 %139, i64 32) - store i64 %140, ptr %138, align 8 - %141 = getelementptr inbounds nuw i8, ptr %.078.i44, i64 8 - %142 = icmp samesign ugt i32 %.010.i42, 1 - br i1 %142, label %.lr.ph.i41, label %_ZL13reverse_wordsPmS_i.exit45, !llvm.loop !38 - -_ZL13reverse_wordsPmS_i.exit45: ; preds = %.lr.ph.i41, %134 + %.010.i42 = phi i32 [ %142, %.lr.ph.i41 ], [ %7, %.lr.ph.preheader.i40 ] + %.069.i43 = phi ptr [ %143, %.lr.ph.i41 ], [ %141, %.lr.ph.preheader.i40 ] + %.078.i44 = phi ptr [ %146, %.lr.ph.i41 ], [ %19, %.lr.ph.preheader.i40 ] + %142 = add nsw i32 %.010.i42, -1 + %143 = getelementptr inbounds i8, ptr %.069.i43, i64 -8 + %144 = load i64, ptr %.078.i44, align 8 + %145 = call noundef i64 @llvm.fshl.i64(i64 %144, i64 %144, i64 32) + store i64 %145, ptr %143, align 8 + %146 = getelementptr inbounds nuw i8, ptr %.078.i44, i64 8 + %147 = icmp samesign ugt i32 %.010.i42, 1 + br i1 %147, label %.lr.ph.i41, label %_ZL13reverse_wordsPmS_i.exit45, !llvm.loop !38 + +_ZL13reverse_wordsPmS_i.exit45: ; preds = %.lr.ph.i41, %139 ret void } diff --git a/bench/openssl/optimized/libcrypto-lib-rsa_pk1.ll b/bench/openssl/optimized/libcrypto-lib-rsa_pk1.ll index 9a5b32da658..d766c6af97f 100644 --- a/bench/openssl/optimized/libcrypto-lib-rsa_pk1.ll +++ b/bench/openssl/optimized/libcrypto-lib-rsa_pk1.ll @@ -713,7 +713,6 @@ for.cond.preheader: ; preds = %if.end16 %arrayidx37 = getelementptr inbounds nuw i8, ptr %be_iter, i64 1 %conv43 = zext nneg i32 %llen to i64 %0 = zext nneg i32 %tlen to i64 - %zext = zext nneg i32 %tlen to i64 br label %for.body if.then20: ; preds = %if.end16 @@ -776,8 +775,8 @@ if.then53: ; preds = %if.end48 if.end54: ; preds = %if.end48 store i32 32, ptr %md_len, align 4 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 32 - %1 = icmp samesign ugt i64 %indvars.iv.next, %zext - br i1 %1, label %if.then57, label %if.else + %cmp55 = icmp samesign ugt i64 %indvars.iv.next, %0 + br i1 %cmp55, label %if.then57, label %if.else if.then57: ; preds = %if.end54 %call59 = call i32 @HMAC_Final(ptr noundef nonnull %call, ptr noundef nonnull %hmac_out, ptr noundef nonnull %md_len) #4 @@ -792,8 +791,8 @@ if.then62: ; preds = %if.then57 if.end63: ; preds = %if.then57 %add.ptr = getelementptr inbounds nuw i8, ptr %to, i64 %indvars.iv - %2 = sub nsw i64 %0, %indvars.iv - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %add.ptr, ptr nonnull align 16 %hmac_out, i64 %2, i1 false) + %1 = sub nsw i64 %0, %indvars.iv + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %add.ptr, ptr nonnull align 16 %hmac_out, i64 %1, i1 false) br label %for.inc if.else: ; preds = %if.end54 @@ -810,8 +809,8 @@ if.then71: ; preds = %if.else for.inc: ; preds = %if.end63, %if.else %inc = add i16 %iter.026, 1 - %3 = icmp samesign ult i64 %indvars.iv.next, %zext - br i1 %3, label %for.body, label %err, !llvm.loop !17 + %cmp22 = icmp samesign ult i64 %indvars.iv.next, %0 + br i1 %cmp22, label %for.body, label %err, !llvm.loop !17 err: ; preds = %for.inc, %if.then71, %if.then62, %if.then53, %if.then47, %if.then41, %if.then27, %if.then20, %if.then15, %if.then10 %ret.0 = phi i32 [ -1, %if.then10 ], [ -1, %if.then15 ], [ -1, %if.then20 ], [ -1, %if.then27 ], [ -1, %if.then41 ], [ -1, %if.then47 ], [ -1, %if.then53 ], [ -1, %if.then62 ], [ -1, %if.then71 ], [ 0, %for.inc ] diff --git a/bench/postgres/optimized/zic.ll b/bench/postgres/optimized/zic.ll index 6d48e9caaa2..43031e90f4c 100644 --- a/bench/postgres/optimized/zic.ll +++ b/bench/postgres/optimized/zic.ll @@ -826,23 +826,23 @@ oadd.exit.i: ; preds = %.thread.i adjleap.exit: ; preds = %255, %253, %237, %234, %203 %257 = load i32, ptr @optind, align 4 %258 = icmp slt i32 %257, %0 - br i1 %258, label %.lr.ph189.preheader, label %._crit_edge + br i1 %258, label %.lr.ph191.preheader, label %._crit_edge -.lr.ph189.preheader: ; preds = %adjleap.exit +.lr.ph191.preheader: ; preds = %adjleap.exit %259 = sext i32 %257 to i64 - br label %.lr.ph189 + br label %.lr.ph191 -.lr.ph189: ; preds = %.lr.ph189.preheader, %.lr.ph189 - %indvars.iv294 = phi i64 [ %259, %.lr.ph189.preheader ], [ %indvars.iv.next295, %.lr.ph189 ] - %260 = getelementptr ptr, ptr %1, i64 %indvars.iv294 +.lr.ph191: ; preds = %.lr.ph191.preheader, %.lr.ph191 + %indvars.iv298 = phi i64 [ %259, %.lr.ph191.preheader ], [ %indvars.iv.next299, %.lr.ph191 ] + %260 = getelementptr ptr, ptr %1, i64 %indvars.iv298 %261 = load ptr, ptr %260, align 8 tail call fastcc void @infile(ptr noundef %261) - %indvars.iv.next295 = add nsw i64 %indvars.iv294, 1 - %lftr.wideiv = trunc i64 %indvars.iv.next295 to i32 - %exitcond297.not = icmp eq i32 %0, %lftr.wideiv - br i1 %exitcond297.not, label %._crit_edge, label %.lr.ph189, !llvm.loop !9 + %indvars.iv.next299 = add nsw i64 %indvars.iv298, 1 + %lftr.wideiv = trunc i64 %indvars.iv.next299 to i32 + %exitcond301.not = icmp eq i32 %0, %lftr.wideiv + br i1 %exitcond301.not, label %._crit_edge, label %.lr.ph191, !llvm.loop !9 -._crit_edge: ; preds = %.lr.ph189, %adjleap.exit +._crit_edge: ; preds = %.lr.ph191, %adjleap.exit %.b5254 = load i1, ptr @errors, align 1 br i1 %.b5254, label %close_file.exit, label %262 @@ -1207,9 +1207,9 @@ change_directory.exit: ; preds = %associate.exit, %39 .preheader92: ; preds = %.preheader92.lr.ph, %outzone.exit %453 = phi i64 [ %408, %.preheader92.lr.ph ], [ %2140, %outzone.exit ] - %.043190 = phi i64 [ 0, %.preheader92.lr.ph ], [ %.041.lcssa, %outzone.exit ] + %.043192 = phi i64 [ 0, %.preheader92.lr.ph ], [ %.041.lcssa, %outzone.exit ] %454 = load ptr, ptr @zones, align 8 - %455 = add nsw i64 %.043190, 1 + %455 = add nsw i64 %.043192, 1 %smax = call i64 @llvm.smax.i64(i64 %453, i64 %455) %456 = add nsw i64 %smax, -1 br label %459 @@ -1217,12 +1217,12 @@ change_directory.exit: ; preds = %associate.exit, %39 .preheader91: ; preds = %outzone.exit, %change_directory.exit %457 = load i64, ptr @nlinks, align 8 %458 = icmp sgt i64 %457, 0 - br i1 %458, label %.lr.ph195, label %._crit_edge196 + br i1 %458, label %.lr.ph197, label %._crit_edge198 459: ; preds = %.preheader92, %460 - %.041.in = phi i64 [ %.041, %460 ], [ %.043190, %.preheader92 ] - %exitcond298.not = icmp eq i64 %.041.in, %456 - br i1 %exitcond298.not, label %.critedge, label %460 + %.041.in = phi i64 [ %.041, %460 ], [ %.043192, %.preheader92 ] + %exitcond302.not = icmp eq i64 %.041.in, %456 + br i1 %exitcond302.not, label %.critedge, label %460 460: ; preds = %459 %.041 = add nsw i64 %.041.in, 1 @@ -1233,8 +1233,8 @@ change_directory.exit: ; preds = %associate.exit, %39 .critedge: ; preds = %459, %460 %.041.lcssa = phi i64 [ %smax, %459 ], [ %.041, %460 ] - %464 = getelementptr %struct.zone, ptr %454, i64 %.043190 - %465 = sub i64 %.041.lcssa, %.043190 + %464 = getelementptr %struct.zone, ptr %454, i64 %.043192 + %465 = sub i64 %.041.lcssa, %.043192 call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %23) %466 = load i32, ptr @max_format_len, align 4 %467 = add i32 %466, 2 @@ -1296,19 +1296,19 @@ emalloc.exit337.i: ; preds = %emalloc.exit336.i br i1 %496, label %updateminmax.exit.sink.split.i, label %497 497: ; preds = %494 - %.not956.i = icmp eq i64 %495, 1970 - br i1 %.not956.i, label %updateminmax.exit.i, label %updateminmax.exit.sink.split.i + %.not962.i = icmp eq i64 %495, 1970 + br i1 %.not962.i, label %updateminmax.exit.i, label %updateminmax.exit.sink.split.i updateminmax.exit.sink.split.i: ; preds = %497, %494 %min_year.sink.i = phi ptr [ @min_year, %494 ], [ @max_year, %497 ] - %.ph950.i = phi i64 [ %495, %494 ], [ 1970, %497 ] - %.ph951.i = phi i64 [ 1970, %494 ], [ %495, %497 ] + %.ph956.i = phi i64 [ %495, %494 ], [ 1970, %497 ] + %.ph957.i = phi i64 [ 1970, %494 ], [ %495, %497 ] store i64 %495, ptr %min_year.sink.i, align 8 br label %updateminmax.exit.i updateminmax.exit.i: ; preds = %updateminmax.exit.sink.split.i, %497 - %498 = phi i64 [ 1970, %497 ], [ %.ph950.i, %updateminmax.exit.sink.split.i ] - %499 = phi i64 [ 1970, %497 ], [ %.ph951.i, %updateminmax.exit.sink.split.i ] + %498 = phi i64 [ 1970, %497 ], [ %.ph956.i, %updateminmax.exit.sink.split.i ] + %499 = phi i64 [ 1970, %497 ], [ %.ph957.i, %updateminmax.exit.sink.split.i ] %500 = load i64, ptr @leapmaxyear, align 8 %501 = add nsw i64 %500, 1 %502 = icmp sgt i64 %498, %501 @@ -1319,7 +1319,7 @@ updateminmax.exit.i: ; preds = %updateminmax.exit.s br label %504 504: ; preds = %503, %updateminmax.exit.i - %min_year.promoted654820.i = phi i64 [ %501, %503 ], [ %498, %updateminmax.exit.i ] + %min_year.promoted656824.i = phi i64 [ %501, %503 ], [ %498, %updateminmax.exit.i ] %.not449.i = icmp sgt i64 %499, %500 br i1 %.not449.i, label %updateminmax.exit338.i, label %505 @@ -1328,28 +1328,28 @@ updateminmax.exit.i: ; preds = %updateminmax.exit.s br label %updateminmax.exit338.i updateminmax.exit338.i: ; preds = %505, %504, %emalloc.exit337.i - %min_year.promoted654.i = phi i64 [ %min_year.promoted654820.i, %505 ], [ %min_year.promoted654820.i, %504 ], [ 1970, %emalloc.exit337.i ] - %max_year.promoted664.i = phi i64 [ %501, %505 ], [ %499, %504 ], [ 1970, %emalloc.exit337.i ] + %min_year.promoted656.i = phi i64 [ %min_year.promoted656824.i, %505 ], [ %min_year.promoted656824.i, %504 ], [ 1970, %emalloc.exit337.i ] + %max_year.promoted666.i = phi i64 [ %501, %505 ], [ %499, %504 ], [ 1970, %emalloc.exit337.i ] %506 = icmp sgt i64 %465, 0 - br i1 %506, label %.lr.ph676.i, label %._crit_edge677.i + br i1 %506, label %.lr.ph678.i, label %._crit_edge679.i -.lr.ph676.i: ; preds = %updateminmax.exit338.i +.lr.ph678.i: ; preds = %updateminmax.exit338.i %507 = add nsw i64 %465, -1 br label %508 -508: ; preds = %._crit_edge.i86, %.lr.ph676.i - %.0269675.i = phi i64 [ 0, %.lr.ph676.i ], [ %561, %._crit_edge.i86 ] - %.0300674.i = phi i1 [ %493, %.lr.ph676.i ], [ %.1301.lcssa.i, %._crit_edge.i86 ] - %min_year.promoted663673.i = phi i64 [ %min_year.promoted654.i, %.lr.ph676.i ], [ %min_year.promoted655.i, %._crit_edge.i86 ] - %max_year.promoted665672.i = phi i64 [ %max_year.promoted664.i, %.lr.ph676.i ], [ %max_year.promoted666.i, %._crit_edge.i86 ] - %509 = getelementptr %struct.zone, ptr %464, i64 %.0269675.i - %510 = icmp slt i64 %.0269675.i, %507 +508: ; preds = %._crit_edge.i86, %.lr.ph678.i + %.0269677.i = phi i64 [ 0, %.lr.ph678.i ], [ %561, %._crit_edge.i86 ] + %.0300676.i = phi i1 [ %493, %.lr.ph678.i ], [ %.1301.lcssa.i, %._crit_edge.i86 ] + %min_year.promoted665675.i = phi i64 [ %min_year.promoted656.i, %.lr.ph678.i ], [ %min_year.promoted657.i, %._crit_edge.i86 ] + %max_year.promoted667674.i = phi i64 [ %max_year.promoted666.i, %.lr.ph678.i ], [ %max_year.promoted668.i, %._crit_edge.i86 ] + %509 = getelementptr %struct.zone, ptr %464, i64 %.0269677.i + %510 = icmp slt i64 %.0269677.i, %507 br i1 %510, label %511, label %updateminmax.exit339.i 511: ; preds = %508 %512 = getelementptr inbounds nuw i8, ptr %509, i64 104 %513 = load i64, ptr %512, align 8 - %514 = icmp sgt i64 %min_year.promoted663673.i, %513 + %514 = icmp sgt i64 %min_year.promoted665675.i, %513 br i1 %514, label %515, label %516 515: ; preds = %511 @@ -1357,8 +1357,8 @@ updateminmax.exit338.i: ; preds = %505, %504, %emalloc br label %516 516: ; preds = %515, %511 - %min_year.promoted662.i = phi i64 [ %513, %515 ], [ %min_year.promoted663673.i, %511 ] - %517 = icmp slt i64 %max_year.promoted665672.i, %513 + %min_year.promoted664.i = phi i64 [ %513, %515 ], [ %min_year.promoted665675.i, %511 ] + %517 = icmp slt i64 %max_year.promoted667674.i, %513 br i1 %517, label %518, label %updateminmax.exit339.i 518: ; preds = %516 @@ -1366,8 +1366,8 @@ updateminmax.exit338.i: ; preds = %505, %504, %emalloc br label %updateminmax.exit339.i updateminmax.exit339.i: ; preds = %518, %516, %508 - %max_year.promoted671.i = phi i64 [ %513, %518 ], [ %max_year.promoted665672.i, %516 ], [ %max_year.promoted665672.i, %508 ] - %min_year.promoted661.i = phi i64 [ %min_year.promoted662.i, %518 ], [ %min_year.promoted662.i, %516 ], [ %min_year.promoted663673.i, %508 ] + %max_year.promoted673.i = phi i64 [ %513, %518 ], [ %max_year.promoted667674.i, %516 ], [ %max_year.promoted667674.i, %508 ] + %min_year.promoted663.i = phi i64 [ %min_year.promoted664.i, %518 ], [ %min_year.promoted664.i, %516 ], [ %min_year.promoted665675.i, %508 ] %519 = getelementptr inbounds nuw i8, ptr %509, i64 72 %520 = load i64, ptr %519, align 8 %521 = icmp sgt i64 %520, 0 @@ -1379,13 +1379,13 @@ updateminmax.exit339.i: ; preds = %518, %516, %508 br label %524 524: ; preds = %.thread.i88, %.lr.ph.i87 - %max_year.promoted670.i = phi i64 [ %max_year.promoted671.i, %.lr.ph.i87 ], [ %max_year.promoted667.i, %.thread.i88 ] - %min_year.promoted660.i = phi i64 [ %min_year.promoted661.i, %.lr.ph.i87 ], [ %min_year.promoted656.i, %.thread.i88 ] - %.0272653.i = phi i64 [ 0, %.lr.ph.i87 ], [ %560, %.thread.i88 ] - %.1301652.i = phi i1 [ %.0300674.i, %.lr.ph.i87 ], [ %.2302.i, %.thread.i88 ] - %525 = phi i64 [ %min_year.promoted661.i, %.lr.ph.i87 ], [ %559, %.thread.i88 ] - %526 = phi i64 [ %max_year.promoted671.i, %.lr.ph.i87 ], [ %558, %.thread.i88 ] - %527 = getelementptr %struct.rule, ptr %523, i64 %.0272653.i + %max_year.promoted672.i = phi i64 [ %max_year.promoted673.i, %.lr.ph.i87 ], [ %max_year.promoted669.i, %.thread.i88 ] + %min_year.promoted662.i = phi i64 [ %min_year.promoted663.i, %.lr.ph.i87 ], [ %min_year.promoted658.i, %.thread.i88 ] + %.0272655.i = phi i64 [ 0, %.lr.ph.i87 ], [ %560, %.thread.i88 ] + %.1301654.i = phi i1 [ %.0300676.i, %.lr.ph.i87 ], [ %.2302.i, %.thread.i88 ] + %525 = phi i64 [ %min_year.promoted663.i, %.lr.ph.i87 ], [ %559, %.thread.i88 ] + %526 = phi i64 [ %max_year.promoted673.i, %.lr.ph.i87 ], [ %558, %.thread.i88 ] + %527 = getelementptr %struct.rule, ptr %523, i64 %.0272655.i %528 = getelementptr inbounds nuw i8, ptr %527, i64 40 %529 = load i8, ptr %528, align 8 %530 = trunc i8 %529 to i1 @@ -1402,7 +1402,7 @@ updateminmax.exit339.i: ; preds = %518, %516, %508 br label %536 536: ; preds = %535, %531 - %min_year.promoted659.i = phi i64 [ %533, %535 ], [ %min_year.promoted660.i, %531 ] + %min_year.promoted661.i = phi i64 [ %533, %535 ], [ %min_year.promoted662.i, %531 ] %537 = phi i64 [ %533, %535 ], [ %525, %531 ] %538 = icmp slt i64 %526, %533 br i1 %538, label %539, label %updateminmax.exit340.i @@ -1412,7 +1412,7 @@ updateminmax.exit339.i: ; preds = %518, %516, %508 br label %updateminmax.exit340.i updateminmax.exit340.i: ; preds = %539, %536 - %max_year.promoted669.i = phi i64 [ %533, %539 ], [ %max_year.promoted670.i, %536 ] + %max_year.promoted671.i = phi i64 [ %533, %539 ], [ %max_year.promoted672.i, %536 ] %540 = phi i64 [ %533, %539 ], [ %526, %536 ] %541 = getelementptr inbounds nuw i8, ptr %527, i64 41 %542 = load i8, ptr %541, align 1 @@ -1426,8 +1426,8 @@ updateminmax.exit340.thread.i: ; preds = %524 br i1 %546, label %547, label %.thread.i88 547: ; preds = %updateminmax.exit340.thread.i, %updateminmax.exit340.i - %max_year.promoted668.i = phi i64 [ %max_year.promoted670.i, %updateminmax.exit340.thread.i ], [ %max_year.promoted669.i, %updateminmax.exit340.i ] - %min_year.promoted658.i = phi i64 [ %min_year.promoted660.i, %updateminmax.exit340.thread.i ], [ %min_year.promoted659.i, %updateminmax.exit340.i ] + %max_year.promoted670.i = phi i64 [ %max_year.promoted672.i, %updateminmax.exit340.thread.i ], [ %max_year.promoted671.i, %updateminmax.exit340.i ] + %min_year.promoted660.i = phi i64 [ %min_year.promoted662.i, %updateminmax.exit340.thread.i ], [ %min_year.promoted661.i, %updateminmax.exit340.i ] %548 = phi i64 [ %526, %updateminmax.exit340.thread.i ], [ %540, %updateminmax.exit340.i ] %549 = phi i64 [ %525, %updateminmax.exit340.thread.i ], [ %537, %updateminmax.exit340.i ] %550 = getelementptr inbounds nuw i8, ptr %527, i64 32 @@ -1440,7 +1440,7 @@ updateminmax.exit340.thread.i: ; preds = %524 br label %554 554: ; preds = %553, %547 - %min_year.promoted657.i = phi i64 [ %551, %553 ], [ %min_year.promoted658.i, %547 ] + %min_year.promoted659.i = phi i64 [ %551, %553 ], [ %min_year.promoted660.i, %547 ] %555 = phi i64 [ %551, %553 ], [ %549, %547 ] %556 = icmp slt i64 %548, %551 br i1 %556, label %557, label %.thread.i88 @@ -1450,24 +1450,24 @@ updateminmax.exit340.thread.i: ; preds = %524 br label %.thread.i88 .thread.i88: ; preds = %557, %554, %updateminmax.exit340.thread.i, %updateminmax.exit340.i - %max_year.promoted667.i = phi i64 [ %max_year.promoted670.i, %updateminmax.exit340.thread.i ], [ %max_year.promoted669.i, %updateminmax.exit340.i ], [ %max_year.promoted668.i, %554 ], [ %551, %557 ] - %min_year.promoted656.i = phi i64 [ %min_year.promoted660.i, %updateminmax.exit340.thread.i ], [ %min_year.promoted659.i, %updateminmax.exit340.i ], [ %min_year.promoted657.i, %554 ], [ %min_year.promoted657.i, %557 ] + %max_year.promoted669.i = phi i64 [ %max_year.promoted672.i, %updateminmax.exit340.thread.i ], [ %max_year.promoted671.i, %updateminmax.exit340.i ], [ %max_year.promoted670.i, %554 ], [ %551, %557 ] + %min_year.promoted658.i = phi i64 [ %min_year.promoted662.i, %updateminmax.exit340.thread.i ], [ %min_year.promoted661.i, %updateminmax.exit340.i ], [ %min_year.promoted659.i, %554 ], [ %min_year.promoted659.i, %557 ] %558 = phi i64 [ %526, %updateminmax.exit340.thread.i ], [ %540, %updateminmax.exit340.i ], [ %548, %554 ], [ %551, %557 ] %559 = phi i64 [ %525, %updateminmax.exit340.thread.i ], [ %537, %updateminmax.exit340.i ], [ %555, %554 ], [ %555, %557 ] - %.2302.i = phi i1 [ %.1301652.i, %updateminmax.exit340.thread.i ], [ false, %updateminmax.exit340.i ], [ false, %554 ], [ false, %557 ] - %560 = add nuw nsw i64 %.0272653.i, 1 + %.2302.i = phi i1 [ %.1301654.i, %updateminmax.exit340.thread.i ], [ false, %updateminmax.exit340.i ], [ false, %554 ], [ false, %557 ] + %560 = add nuw nsw i64 %.0272655.i, 1 %exitcond.not.i89 = icmp eq i64 %560, %520 br i1 %exitcond.not.i89, label %._crit_edge.i86, label %524, !llvm.loop !18 ._crit_edge.i86: ; preds = %.thread.i88, %updateminmax.exit339.i - %max_year.promoted666.i = phi i64 [ %max_year.promoted671.i, %updateminmax.exit339.i ], [ %max_year.promoted667.i, %.thread.i88 ] - %min_year.promoted655.i = phi i64 [ %min_year.promoted661.i, %updateminmax.exit339.i ], [ %min_year.promoted656.i, %.thread.i88 ] - %.1301.lcssa.i = phi i1 [ %.0300674.i, %updateminmax.exit339.i ], [ %.2302.i, %.thread.i88 ] - %561 = add nuw nsw i64 %.0269675.i, 1 - %exitcond814.not.i = icmp eq i64 %561, %465 - br i1 %exitcond814.not.i, label %._crit_edge677.i, label %508, !llvm.loop !19 - -._crit_edge677.i: ; preds = %._crit_edge.i86, %updateminmax.exit338.i + %max_year.promoted668.i = phi i64 [ %max_year.promoted673.i, %updateminmax.exit339.i ], [ %max_year.promoted669.i, %.thread.i88 ] + %min_year.promoted657.i = phi i64 [ %min_year.promoted663.i, %updateminmax.exit339.i ], [ %min_year.promoted658.i, %.thread.i88 ] + %.1301.lcssa.i = phi i1 [ %.0300676.i, %updateminmax.exit339.i ], [ %.2302.i, %.thread.i88 ] + %561 = add nuw nsw i64 %.0269677.i, 1 + %exitcond818.not.i = icmp eq i64 %561, %465 + br i1 %exitcond818.not.i, label %._crit_edge679.i, label %508, !llvm.loop !19 + +._crit_edge679.i: ; preds = %._crit_edge.i86, %updateminmax.exit338.i %.0300.lcssa.i = phi i1 [ %493, %updateminmax.exit338.i ], [ %.1301.lcssa.i, %._crit_edge.i86 ] call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %21) call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %22) @@ -1476,7 +1476,7 @@ updateminmax.exit340.thread.i: ; preds = %524 %.not.i.i76 = icmp eq i64 %562, 9223372036854775807 br i1 %.not.i.i76, label %563, label %stringzone.exit.i -563: ; preds = %._crit_edge677.i +563: ; preds = %._crit_edge679.i %564 = getelementptr %struct.zone, ptr %454, i64 %.041.lcssa %565 = getelementptr i8, ptr %564, i64 -200 %566 = getelementptr i8, ptr %564, i64 -128 @@ -1915,8 +1915,8 @@ stringoffset.exit139.i.i: ; preds = %746, %741, %736 %spec.select125.i.i = call i32 @llvm.umax.i32(i32 %760, i32 %769) br label %stringzone.exit.i -stringzone.exit.i: ; preds = %585, %583, %772, %771, %762, %751, %703, %702, %662, %.thread158.i.i, %661, %._crit_edge191.i.i, %._crit_edge677.i - %.0102.i.i = phi i32 [ -1, %762 ], [ -1, %771 ], [ %spec.select125.i.i, %772 ], [ -1, %751 ], [ -1, %702 ], [ -1, %._crit_edge677.i ], [ -1, %662 ], [ -1, %.thread158.i.i ], [ 0, %703 ], [ -1, %._crit_edge191.i.i ], [ -1, %661 ], [ -1, %583 ], [ -1, %585 ] +stringzone.exit.i: ; preds = %585, %583, %772, %771, %762, %751, %703, %702, %662, %.thread158.i.i, %661, %._crit_edge191.i.i, %._crit_edge679.i + %.0102.i.i = phi i32 [ -1, %762 ], [ -1, %771 ], [ %spec.select125.i.i, %772 ], [ -1, %751 ], [ -1, %702 ], [ -1, %._crit_edge679.i ], [ -1, %662 ], [ -1, %.thread158.i.i ], [ 0, %703 ], [ -1, %._crit_edge191.i.i ], [ -1, %661 ], [ -1, %583 ], [ -1, %585 ] call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %21) call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %22) %773 = icmp sgt i32 %.0102.i.i, -1 @@ -1949,7 +1949,7 @@ stringzone.exit.i: ; preds = %585, %583, %772, %7 br label %783 783: ; preds = %780, %776, %stringzone.exit.i - %.pr.pre821.i = load i64, ptr @max_year, align 8 + %.pr.pre825.i = load i64, ptr @max_year, align 8 br i1 %773, label %thread-pre-split.i77, label %784 784: ; preds = %783 @@ -1957,7 +1957,7 @@ stringzone.exit.i: ; preds = %585, %583, %772, %7 %786 = call i64 @llvm.smax.i64(i64 %785, i64 -9223372036854775406) %storemerge.i = add nsw i64 %786, -402 store i64 %storemerge.i, ptr @min_year, align 8 - %787 = call i64 @llvm.smin.i64(i64 %.pr.pre821.i, i64 9223372036854775405) + %787 = call i64 @llvm.smin.i64(i64 %.pr.pre825.i, i64 9223372036854775405) %storemerge324.i = add nsw i64 %787, 402 store i64 %storemerge324.i, ptr @max_year, align 8 br i1 %.0300.lcssa.i, label %788, label %thread-pre-split.i77 @@ -1968,7 +1968,7 @@ stringzone.exit.i: ; preds = %585, %583, %772, %7 br label %thread-pre-split.i77 thread-pre-split.i77: ; preds = %788, %784, %783, %.thread-pre-split_crit_edge.i - %789 = phi i64 [ %storemerge324.i, %784 ], [ 2302, %788 ], [ %.pr.pre.i, %.thread-pre-split_crit_edge.i ], [ %.pr.pre821.i, %783 ] + %789 = phi i64 [ %storemerge324.i, %784 ], [ 2302, %788 ], [ %.pr.pre.i, %.thread-pre-split_crit_edge.i ], [ %.pr.pre825.i, %783 ] %790 = load i32, ptr @bloat, align 4 %791 = icmp sgt i32 %790, -1 br i1 %791, label %792, label %799 @@ -1991,23 +1991,23 @@ thread-pre-split.i77: ; preds = %788, %784, %783, %. br label %799 799: ; preds = %798, %796, %thread-pre-split.i77 - br i1 %506, label %.lr.ph722.i, label %._crit_edge723.thread.i + br i1 %506, label %.lr.ph724.i, label %._crit_edge725.thread.i -.lr.ph722.i: ; preds = %799 +.lr.ph724.i: ; preds = %799 %800 = add nsw i64 %465, -1 br label %801 -801: ; preds = %tadd.exit393.i, %.lr.ph722.i - %.0267720.i = phi i32 [ -1, %.lr.ph722.i ], [ %.1268.i, %tadd.exit393.i ] - %.1270719.i = phi i64 [ 0, %.lr.ph722.i ], [ %1345, %tadd.exit393.i ] - %.0280718.i = phi i64 [ -1, %.lr.ph722.i ], [ %.1281.i, %tadd.exit393.i ] - %.0286717.i = phi i64 [ 0, %.lr.ph722.i ], [ %.1287.i, %tadd.exit393.i ] - %.0289716.i = phi i64 [ 0, %.lr.ph722.i ], [ %.1290.i, %tadd.exit393.i ] - %.0307715.i = phi i8 [ 0, %.lr.ph722.i ], [ %.1308.i, %tadd.exit393.i ] - %.0309714.i = phi i8 [ 0, %.lr.ph722.i ], [ %.1310.i, %tadd.exit393.i ] - %802 = getelementptr %struct.zone, ptr %464, i64 %.1270719.i - %.not829.i = icmp eq i64 %.1270719.i, 0 - br i1 %.not829.i, label %807, label %803 +801: ; preds = %tadd.exit393.i, %.lr.ph724.i + %.0267722.i = phi i32 [ -1, %.lr.ph724.i ], [ %.1268.i, %tadd.exit393.i ] + %.1270721.i = phi i64 [ 0, %.lr.ph724.i ], [ %1345, %tadd.exit393.i ] + %.0280720.i = phi i64 [ -1, %.lr.ph724.i ], [ %.1281.i, %tadd.exit393.i ] + %.0286719.i = phi i64 [ 0, %.lr.ph724.i ], [ %.1287.i, %tadd.exit393.i ] + %.0289718.i = phi i64 [ 0, %.lr.ph724.i ], [ %.1290.i, %tadd.exit393.i ] + %.0307717.i = phi i8 [ 0, %.lr.ph724.i ], [ %.1308.i, %tadd.exit393.i ] + %.0309716.i = phi i8 [ 0, %.lr.ph724.i ], [ %.1310.i, %tadd.exit393.i ] + %802 = getelementptr %struct.zone, ptr %464, i64 %.1270721.i + %.not833.i = icmp eq i64 %.1270721.i, 0 + br i1 %.not833.i, label %807, label %803 803: ; preds = %801 %804 = getelementptr i8, ptr %802, i64 -8 @@ -2018,7 +2018,7 @@ thread-pre-split.i77: ; preds = %788, %784, %783, %. 807: ; preds = %803, %801 %808 = phi i1 [ false, %801 ], [ %806, %803 ] %809 = zext i1 %808 to i8 - %810 = icmp slt i64 %.1270719.i, %800 + %810 = icmp slt i64 %.1270721.i, %800 br i1 %810, label %811, label %815 811: ; preds = %807 @@ -2073,22 +2073,22 @@ oadd.exit.i85: ; preds = %836, %833 %840 = add i64 %831, %826 %841 = load i8, ptr %827, align 1 %842 = trunc i8 %841 to i1 - %843 = trunc i8 %.0307715.i to i1 - %844 = trunc i8 %.0309714.i to i1 + %843 = trunc i8 %.0307717.i to i1 + %844 = trunc i8 %.0309716.i to i1 %845 = call fastcc i32 @addtype(i64 noundef %840, ptr noundef nonnull %473, i1 noundef zeroext %842, i1 noundef zeroext %843, i1 noundef zeroext %844) br i1 %808, label %846, label %.thread420.i 846: ; preds = %oadd.exit.i85 - call fastcc void @addtt(i64 noundef %.0286717.i, i32 noundef %845) + call fastcc void @addtt(i64 noundef %.0286719.i, i32 noundef %845) br label %.thread420.i 847: ; preds = %815 %848 = load i64, ptr @min_year, align 8 %849 = load i64, ptr @max_year, align 8 - %.not326689.i = icmp sgt i64 %848, %849 - br i1 %.not326689.i, label %._crit_edge700.i, label %.lr.ph699.i + %.not326691.i = icmp sgt i64 %848, %849 + br i1 %.not326691.i, label %._crit_edge702.i, label %.lr.ph701.i -.lr.ph699.i: ; preds = %847 +.lr.ph701.i: ; preds = %847 %850 = getelementptr inbounds nuw i8, ptr %802, i64 112 %851 = getelementptr inbounds nuw i8, ptr %802, i64 64 %852 = getelementptr inbounds nuw i8, ptr %802, i64 192 @@ -2099,35 +2099,35 @@ oadd.exit.i85: ; preds = %836, %833 %857 = getelementptr inbounds nuw i8, ptr %802, i64 48 br label %858 -858: ; preds = %._crit_edge686.thread.i, %.lr.ph699.i - %.0265697.i = phi ptr [ null, %.lr.ph699.i ], [ %.1266.i, %._crit_edge686.thread.i ] - %.3696.i = phi i32 [ %.0267720.i, %.lr.ph699.i ], [ %.4.i, %._crit_edge686.thread.i ] - %.1276695.i = phi i8 [ %809, %.lr.ph699.i ], [ %.4279.i, %._crit_edge686.thread.i ] - %.3283694.i = phi i64 [ %.0280718.i, %.lr.ph699.i ], [ %.4284.i, %._crit_edge686.thread.i ] - %.3292693.i = phi i64 [ %.0289716.i, %.lr.ph699.i ], [ %.5294.i, %._crit_edge686.thread.i ] - %.1297692.i = phi i64 [ 0, %.lr.ph699.i ], [ %.3299.i, %._crit_edge686.thread.i ] - %.0303691.i = phi i64 [ %848, %.lr.ph699.i ], [ %1272, %._crit_edge686.thread.i ] - %.1305690.i = phi i64 [ %817, %.lr.ph699.i ], [ %.2306.ph.i, %._crit_edge686.thread.i ] +858: ; preds = %._crit_edge688.thread.i, %.lr.ph701.i + %.0265699.i = phi ptr [ null, %.lr.ph701.i ], [ %.1266.i, %._crit_edge688.thread.i ] + %.3698.i = phi i32 [ %.0267722.i, %.lr.ph701.i ], [ %.4.i, %._crit_edge688.thread.i ] + %.1276697.i = phi i8 [ %809, %.lr.ph701.i ], [ %.4279.i, %._crit_edge688.thread.i ] + %.3283696.i = phi i64 [ %.0280720.i, %.lr.ph701.i ], [ %.4284.i, %._crit_edge688.thread.i ] + %.3292695.i = phi i64 [ %.0289718.i, %.lr.ph701.i ], [ %.5294.i, %._crit_edge688.thread.i ] + %.1297694.i = phi i64 [ 0, %.lr.ph701.i ], [ %.3299.i, %._crit_edge688.thread.i ] + %.0303693.i = phi i64 [ %848, %.lr.ph701.i ], [ %1272, %._crit_edge688.thread.i ] + %.1305692.i = phi i64 [ %817, %.lr.ph701.i ], [ %.2306.ph.i, %._crit_edge688.thread.i ] br i1 %810, label %859, label %862 859: ; preds = %858 %860 = load i64, ptr %850, align 8 - %861 = icmp sgt i64 %.0303691.i, %860 - br i1 %861, label %._crit_edge700.loopexit.i, label %862 + %861 = icmp sgt i64 %.0303693.i, %860 + br i1 %861, label %._crit_edge702.loopexit.i, label %862 862: ; preds = %859, %858 %863 = load i64, ptr %821, align 8 %864 = icmp sgt i64 %863, 0 - br i1 %864, label %.lr.ph681.i, label %.outer.i.preheader + br i1 %864, label %.lr.ph683.i, label %.outer.i.preheader -.lr.ph681.i: ; preds = %862 - %865 = icmp sle i64 %.0303691.i, %789 +.lr.ph683.i: ; preds = %862 + %865 = icmp sle i64 %.0303693.i, %789 br label %866 -866: ; preds = %889, %.lr.ph681.i - %.1273679.i = phi i64 [ 0, %.lr.ph681.i ], [ %890, %889 ] +866: ; preds = %889, %.lr.ph683.i + %.1273681.i = phi i64 [ 0, %.lr.ph683.i ], [ %890, %889 ] %867 = load ptr, ptr %851, align 8 - %868 = getelementptr %struct.rule, ptr %867, i64 %.1273679.i + %868 = getelementptr %struct.rule, ptr %867, i64 %.1273681.i %869 = load ptr, ptr %802, align 8 %870 = load i32, ptr %819, align 8 %871 = load ptr, ptr %868, align 8 @@ -2139,7 +2139,7 @@ oadd.exit.i85: ; preds = %836, %833 store i32 %873, ptr @rlinenum, align 4 %874 = getelementptr inbounds nuw i8, ptr %868, i64 24 %875 = load i64, ptr %874, align 8 - %.not.i84 = icmp slt i64 %.0303691.i, %875 + %.not.i84 = icmp slt i64 %.0303693.i, %875 br i1 %.not.i84, label %.thread407.i, label %877 .thread407.i: ; preds = %866 @@ -2150,14 +2150,14 @@ oadd.exit.i85: ; preds = %836, %833 877: ; preds = %866 %878 = getelementptr inbounds nuw i8, ptr %868, i64 32 %879 = load i64, ptr %878, align 8 - %880 = icmp sle i64 %.0303691.i, %879 + %880 = icmp sle i64 %.0303693.i, %879 %881 = getelementptr inbounds nuw i8, ptr %868, i64 96 %882 = zext i1 %880 to i8 store i8 %882, ptr %881, align 8 br i1 %880, label %883, label %889 883: ; preds = %877 - %884 = call fastcc i64 @rpytime(ptr noundef nonnull %868, i64 noundef %.0303691.i) + %884 = call fastcc i64 @rpytime(ptr noundef nonnull %868, i64 noundef %.0303693.i) %885 = getelementptr inbounds nuw i8, ptr %868, i64 104 store i64 %884, ptr %885, align 8 %886 = icmp slt i64 %884, 2147483648 @@ -2167,7 +2167,7 @@ oadd.exit.i85: ; preds = %836, %833 br label %889 889: ; preds = %883, %877, %.thread407.i - %890 = add nuw nsw i64 %.1273679.i, 1 + %890 = add nuw nsw i64 %.1273681.i, 1 %891 = load i64, ptr %821, align 8 %892 = icmp slt i64 %890, %891 br i1 %892, label %866, label %.outer.i.preheader, !llvm.loop !22 @@ -2201,7 +2201,7 @@ oadd.exit.i85: ; preds = %836, %833 903: ; preds = %900 %.not11.i.i83 = icmp eq i64 %895, -9223372036854775808 - br i1 %.not11.i.i83, label %tadd.exit.thread831.i, label %904 + br i1 %.not11.i.i83, label %tadd.exit.thread835.i, label %904 904: ; preds = %903 call void (ptr, ...) @error(ptr noundef nonnull @.str.57) @@ -2232,13 +2232,13 @@ tadd.exit.i82: ; preds = %910, %894 %913 = trunc i8 %912 to i1 br i1 %913, label %tadd.exit346.i, label %922 -tadd.exit.thread831.i: ; preds = %903 +tadd.exit.thread835.i: ; preds = %903 %914 = load i8, ptr %855, align 8 %915 = trunc i8 %914 to i1 %916 = sub i64 0, %.2298.i %917 = icmp slt i64 %916, 0 - %or.cond953.i = select i1 %915, i1 true, i1 %917 - br i1 %or.cond953.i, label %tadd.exit346.i, label %935 + %or.cond959.i = select i1 %915, i1 true, i1 %917 + br i1 %or.cond959.i, label %tadd.exit346.i, label %935 tadd.exit.thread.i: ; preds = %908 %918 = load i8, ptr %855, align 8 @@ -2281,31 +2281,31 @@ tadd.exit.thread.i: ; preds = %908 call void @exit(i32 noundef 1) #29 unreachable -935: ; preds = %930, %925, %tadd.exit.thread.i, %tadd.exit.thread831.i - %936 = phi i64 [ %923, %930 ], [ %923, %925 ], [ %920, %tadd.exit.thread.i ], [ %916, %tadd.exit.thread831.i ] - %.6295409413.i = phi i64 [ %.6295.i, %930 ], [ %.6295.i, %925 ], [ 9223372036854775807, %tadd.exit.thread.i ], [ -9223372036854775808, %tadd.exit.thread831.i ] +935: ; preds = %930, %925, %tadd.exit.thread.i, %tadd.exit.thread835.i + %936 = phi i64 [ %923, %930 ], [ %923, %925 ], [ %920, %tadd.exit.thread.i ], [ %916, %tadd.exit.thread835.i ] + %.6295409413.i = phi i64 [ %.6295.i, %930 ], [ %.6295.i, %925 ], [ 9223372036854775807, %tadd.exit.thread.i ], [ -9223372036854775808, %tadd.exit.thread835.i ] %937 = add i64 %.6295409413.i, %936 br label %tadd.exit346.i -tadd.exit346.i: ; preds = %935, %933, %928, %tadd.exit.thread.i, %tadd.exit.thread831.i, %tadd.exit.i82, %893 - %.5294.i = phi i64 [ %.6295.i, %tadd.exit.i82 ], [ %.4293.i, %893 ], [ 9223372036854775807, %tadd.exit.thread.i ], [ %937, %935 ], [ -9223372036854775808, %928 ], [ 9223372036854775807, %933 ], [ -9223372036854775808, %tadd.exit.thread831.i ] +tadd.exit346.i: ; preds = %935, %933, %928, %tadd.exit.thread.i, %tadd.exit.thread835.i, %tadd.exit.i82, %893 + %.5294.i = phi i64 [ %.6295.i, %tadd.exit.i82 ], [ %.4293.i, %893 ], [ 9223372036854775807, %tadd.exit.thread.i ], [ %937, %935 ], [ -9223372036854775808, %928 ], [ 9223372036854775807, %933 ], [ -9223372036854775808, %tadd.exit.thread835.i ] %938 = load i64, ptr %821, align 8 %939 = icmp sgt i64 %938, 0 - br i1 %939, label %.lr.ph685.i, label %._crit_edge686.thread.i + br i1 %939, label %.lr.ph687.i, label %._crit_edge688.thread.i -.lr.ph685.i: ; preds = %tadd.exit346.i, %997 +.lr.ph687.i: ; preds = %tadd.exit346.i, %997 %940 = phi i64 [ %998, %997 ], [ %938, %tadd.exit346.i ] - %.0261684.i = phi i64 [ %.1262.i, %997 ], [ 0, %tadd.exit346.i ] - %.0263683.i = phi i64 [ %.1264.i, %997 ], [ -1, %tadd.exit346.i ] - %.2274682.i = phi i64 [ %999, %997 ], [ 0, %tadd.exit346.i ] + %.0261686.i = phi i64 [ %.1262.i, %997 ], [ 0, %tadd.exit346.i ] + %.0263685.i = phi i64 [ %.1264.i, %997 ], [ -1, %tadd.exit346.i ] + %.2274684.i = phi i64 [ %999, %997 ], [ 0, %tadd.exit346.i ] %941 = load ptr, ptr %851, align 8 - %942 = getelementptr %struct.rule, ptr %941, i64 %.2274682.i + %942 = getelementptr %struct.rule, ptr %941, i64 %.2274684.i %943 = getelementptr inbounds nuw i8, ptr %942, i64 96 %944 = load i8, ptr %943, align 8 %945 = trunc i8 %944 to i1 br i1 %945, label %946, label %997 -946: ; preds = %.lr.ph685.i +946: ; preds = %.lr.ph687.i %947 = load ptr, ptr %802, align 8 %948 = load i32, ptr %819, align 8 %949 = load ptr, ptr %942, align 8 @@ -2382,13 +2382,13 @@ oadd.exit347.i: ; preds = %964, %961 tadd.exit351.i: ; preds = %980, %976 %984 = sub i64 %971, %.0260.i - %985 = icmp slt i64 %.0263683.i, 0 - %986 = icmp slt i64 %984, %.0261684.i + %985 = icmp slt i64 %.0263685.i, 0 + %986 = icmp slt i64 %984, %.0261686.i %or.cond329.i = select i1 %985, i1 true, i1 %986 br i1 %or.cond329.i, label %997, label %987 987: ; preds = %tadd.exit351.i - %988 = icmp eq i64 %984, %.0261684.i + %988 = icmp eq i64 %984, %.0261686.i br i1 %988, label %989, label %997 989: ; preds = %987 @@ -2396,7 +2396,7 @@ tadd.exit351.i: ; preds = %980, %976 store i32 %951, ptr @rlinenum, align 4 call void (ptr, ...) @warning(ptr noundef nonnull @.str.51, ptr noundef nonnull @.str.158) %990 = load ptr, ptr %851, align 8 - %991 = getelementptr %struct.rule, ptr %990, i64 %.0263683.i + %991 = getelementptr %struct.rule, ptr %990, i64 %.0263685.i %992 = load ptr, ptr %802, align 8 %993 = load i32, ptr %819, align 8 %994 = load ptr, ptr %991, align 8 @@ -2410,39 +2410,39 @@ tadd.exit351.i: ; preds = %980, %976 %.pre.i81 = load i64, ptr %821, align 8 br label %997 -997: ; preds = %989, %987, %tadd.exit351.i, %969, %.lr.ph685.i - %998 = phi i64 [ %940, %969 ], [ %.pre.i81, %989 ], [ %940, %987 ], [ %940, %.lr.ph685.i ], [ %940, %tadd.exit351.i ] - %.1264.i = phi i64 [ %.0263683.i, %969 ], [ %.0263683.i, %989 ], [ %.0263683.i, %987 ], [ %.0263683.i, %.lr.ph685.i ], [ %.2274682.i, %tadd.exit351.i ] - %.1262.i = phi i64 [ %.0261684.i, %969 ], [ %.0261684.i, %989 ], [ %.0261684.i, %987 ], [ %.0261684.i, %.lr.ph685.i ], [ %984, %tadd.exit351.i ] - %999 = add nuw nsw i64 %.2274682.i, 1 +997: ; preds = %989, %987, %tadd.exit351.i, %969, %.lr.ph687.i + %998 = phi i64 [ %940, %969 ], [ %.pre.i81, %989 ], [ %940, %987 ], [ %940, %.lr.ph687.i ], [ %940, %tadd.exit351.i ] + %.1264.i = phi i64 [ %.0263685.i, %969 ], [ %.0263685.i, %989 ], [ %.0263685.i, %987 ], [ %.0263685.i, %.lr.ph687.i ], [ %.2274684.i, %tadd.exit351.i ] + %.1262.i = phi i64 [ %.0261686.i, %969 ], [ %.0261686.i, %989 ], [ %.0261686.i, %987 ], [ %.0261686.i, %.lr.ph687.i ], [ %984, %tadd.exit351.i ] + %999 = add nuw nsw i64 %.2274684.i, 1 %1000 = icmp slt i64 %999, %998 - br i1 %1000, label %.lr.ph685.i, label %._crit_edge686.i, !llvm.loop !23 + br i1 %1000, label %.lr.ph687.i, label %._crit_edge688.i, !llvm.loop !23 -._crit_edge686.i: ; preds = %997 +._crit_edge688.i: ; preds = %997 %1001 = icmp slt i64 %.1264.i, 0 - br i1 %1001, label %._crit_edge686.thread.i, label %1002 + br i1 %1001, label %._crit_edge688.thread.i, label %1002 -1002: ; preds = %._crit_edge686.i +1002: ; preds = %._crit_edge688.i %1003 = load ptr, ptr %851, align 8 %1004 = getelementptr %struct.rule, ptr %1003, i64 %.1264.i %1005 = getelementptr inbounds nuw i8, ptr %1004, i64 96 store i8 0, ptr %1005, align 8 %.not327.i = icmp sge i64 %.1262.i, %.5294.i %or.cond331.not.i = select i1 %810, i1 %.not327.i, i1 false - br i1 %or.cond331.not.i, label %._crit_edge686.thread.i, label %1006 + br i1 %or.cond331.not.i, label %._crit_edge688.thread.i, label %1006 1006: ; preds = %1002 %1007 = getelementptr inbounds nuw i8, ptr %1004, i64 80 %1008 = load i64, ptr %1007, align 8 %1009 = trunc nuw i8 %.2277.i to i1 - %1010 = icmp eq i64 %.1262.i, %.0286717.i + %1010 = icmp eq i64 %.1262.i, %.0286719.i %or.cond332.i = select i1 %1009, i1 %1010, i1 false %.3278.i = select i1 %or.cond332.i, i8 0, i8 %.2277.i %1011 = trunc nuw i8 %.3278.i to i1 br i1 %1011, label %1012, label %1139 1012: ; preds = %1006 - %1013 = icmp slt i64 %.1262.i, %.0286717.i + %1013 = icmp slt i64 %.1262.i, %.0286719.i br i1 %1013, label %1014, label %1095 1014: ; preds = %1012 @@ -2570,13 +2570,13 @@ doabbr.exit.i: ; preds = %1069, %1066, %abbro br label %.outer.i .outer.i: ; preds = %.outer.i.preheader, %doabbr.exit.i - %.2306.ph.i = phi i64 [ %1024, %doabbr.exit.i ], [ %.1305690.i, %.outer.i.preheader ] - %.2298.ph.i = phi i64 [ %1008, %doabbr.exit.i ], [ %.1297692.i, %.outer.i.preheader ] - %.4293.ph.i = phi i64 [ %.5294.i, %doabbr.exit.i ], [ %.3292693.i, %.outer.i.preheader ] - %.4284.ph.i = phi i64 [ %.4284.i, %doabbr.exit.i ], [ %.3283694.i, %.outer.i.preheader ] - %.2277.ph.i = phi i8 [ 1, %doabbr.exit.i ], [ %.1276695.i, %.outer.i.preheader ] - %.4.ph.i = phi i32 [ %.4.i, %doabbr.exit.i ], [ %.3696.i, %.outer.i.preheader ] - %.1266.ph.i = phi ptr [ %.1266.i, %doabbr.exit.i ], [ %.0265697.i, %.outer.i.preheader ] + %.2306.ph.i = phi i64 [ %1024, %doabbr.exit.i ], [ %.1305692.i, %.outer.i.preheader ] + %.2298.ph.i = phi i64 [ %1008, %doabbr.exit.i ], [ %.1297694.i, %.outer.i.preheader ] + %.4293.ph.i = phi i64 [ %.5294.i, %doabbr.exit.i ], [ %.3292695.i, %.outer.i.preheader ] + %.4284.ph.i = phi i64 [ %.4284.i, %doabbr.exit.i ], [ %.3283696.i, %.outer.i.preheader ] + %.2277.ph.i = phi i8 [ 1, %doabbr.exit.i ], [ %.1276697.i, %.outer.i.preheader ] + %.4.ph.i = phi i32 [ %.4.i, %doabbr.exit.i ], [ %.3698.i, %.outer.i.preheader ] + %.1266.ph.i = phi ptr [ %.1266.i, %doabbr.exit.i ], [ %.0265699.i, %.outer.i.preheader ] %spec.select34.i.i363.i = call i64 @llvm.abs.i64(i64 %.2306.ph.i, i1 false) %1074 = srem i64 %spec.select34.i.i363.i, 60 %1075 = sdiv i64 %spec.select34.i.i363.i, 60 @@ -2710,11 +2710,11 @@ abbroffset.exit.i361.i: ; preds = %1127, %1126, %1122 doabbr.exit370.i: ; preds = %1134, %1131, %abbroffset.exit.i361.i call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) - %.pre823.i = load i64, ptr %1007, align 8 + %.pre827.i = load i64, ptr %1007, align 8 br label %1139 1139: ; preds = %doabbr.exit370.i, %oadd.exit357.i, %1095, %1006 - %1140 = phi i64 [ %1008, %1095 ], [ %1008, %oadd.exit357.i ], [ %.pre823.i, %doabbr.exit370.i ], [ %1008, %1006 ] + %1140 = phi i64 [ %1008, %1095 ], [ %1008, %oadd.exit357.i ], [ %.pre827.i, %doabbr.exit370.i ], [ %1008, %1006 ] %1141 = load ptr, ptr %802, align 8 %1142 = load i32, ptr %819, align 8 %1143 = load ptr, ptr %1004, align 8 @@ -2867,7 +2867,7 @@ oadd.exit384.i: ; preds = %1203, %1200 %1217 = getelementptr inbounds nuw i8, ptr %.1266.i, i64 32 %1218 = load i64, ptr %1217, align 8 %1219 = icmp eq i64 %1218, 9223372036854775807 - br i1 %1219, label %._crit_edge686.thread.i, label %1220 + br i1 %1219, label %._crit_edge688.thread.i, label %1220 1220: ; preds = %1216, %1212, %oadd.exit384.i %1221 = load i8, ptr %1148, align 2 @@ -2965,38 +2965,38 @@ addtt.exit.i: ; preds = %size_product.exit.i store i64 %1271, ptr @timecnt, align 8 br label %893 -._crit_edge686.thread.i: ; preds = %1216, %1002, %._crit_edge686.i, %tadd.exit346.i - %.3299.i = phi i64 [ %.2298.i, %._crit_edge686.i ], [ %1008, %1216 ], [ %.2298.i, %1002 ], [ %.2298.i, %tadd.exit346.i ] - %.4279.i = phi i8 [ %.2277.i, %._crit_edge686.i ], [ %.3278.i, %1216 ], [ %.2277.i, %1002 ], [ %.2277.i, %tadd.exit346.i ] - %1272 = add i64 %.0303691.i, 1 +._crit_edge688.thread.i: ; preds = %1216, %1002, %._crit_edge688.i, %tadd.exit346.i + %.3299.i = phi i64 [ %.2298.i, %._crit_edge688.i ], [ %1008, %1216 ], [ %.2298.i, %1002 ], [ %.2298.i, %tadd.exit346.i ] + %.4279.i = phi i8 [ %.2277.i, %._crit_edge688.i ], [ %.3278.i, %1216 ], [ %.2277.i, %1002 ], [ %.2277.i, %tadd.exit346.i ] + %1272 = add i64 %.0303693.i, 1 %1273 = load i64, ptr @max_year, align 8 %.not326.i = icmp sgt i64 %1272, %1273 - br i1 %.not326.i, label %._crit_edge700.loopexit.i, label %858, !llvm.loop !24 - -._crit_edge700.loopexit.i: ; preds = %._crit_edge686.thread.i, %859 - %.1305.lcssa.ph.i = phi i64 [ %.1305690.i, %859 ], [ %.2306.ph.i, %._crit_edge686.thread.i ] - %.1297.lcssa.ph.i = phi i64 [ %.1297692.i, %859 ], [ %.3299.i, %._crit_edge686.thread.i ] - %.3292.lcssa.ph.i = phi i64 [ %.3292693.i, %859 ], [ %.5294.i, %._crit_edge686.thread.i ] - %.3283.lcssa.ph.i = phi i64 [ %.3283694.i, %859 ], [ %.4284.i, %._crit_edge686.thread.i ] - %.1276.lcssa.ph.i = phi i8 [ %.1276695.i, %859 ], [ %.4279.i, %._crit_edge686.thread.i ] - %.3.lcssa.ph.i = phi i32 [ %.3696.i, %859 ], [ %.4.i, %._crit_edge686.thread.i ] + br i1 %.not326.i, label %._crit_edge702.loopexit.i, label %858, !llvm.loop !24 + +._crit_edge702.loopexit.i: ; preds = %._crit_edge688.thread.i, %859 + %.1305.lcssa.ph.i = phi i64 [ %.1305692.i, %859 ], [ %.2306.ph.i, %._crit_edge688.thread.i ] + %.1297.lcssa.ph.i = phi i64 [ %.1297694.i, %859 ], [ %.3299.i, %._crit_edge688.thread.i ] + %.3292.lcssa.ph.i = phi i64 [ %.3292695.i, %859 ], [ %.5294.i, %._crit_edge688.thread.i ] + %.3283.lcssa.ph.i = phi i64 [ %.3283696.i, %859 ], [ %.4284.i, %._crit_edge688.thread.i ] + %.1276.lcssa.ph.i = phi i8 [ %.1276697.i, %859 ], [ %.4279.i, %._crit_edge688.thread.i ] + %.3.lcssa.ph.i = phi i32 [ %.3698.i, %859 ], [ %.4.i, %._crit_edge688.thread.i ] %1274 = trunc nuw i8 %.1276.lcssa.ph.i to i1 br i1 %1274, label %1275, label %.thread420.i -._crit_edge700.i: ; preds = %847 +._crit_edge702.i: ; preds = %847 br i1 %808, label %.thread, label %.thread420.i -1275: ; preds = %._crit_edge700.loopexit.i +1275: ; preds = %._crit_edge702.loopexit.i %.pre = load i8, ptr %473, align 1 %1276 = icmp eq i8 %.pre, 0 br i1 %1276, label %.thread, label %.critedge.i -.thread: ; preds = %._crit_edge700.i, %1275 - %.1305.lcssa845.i317 = phi i64 [ %.1305.lcssa.ph.i, %1275 ], [ %817, %._crit_edge700.i ] - %.1297.lcssa846.i314 = phi i64 [ %.1297.lcssa.ph.i, %1275 ], [ 0, %._crit_edge700.i ] - %.3292.lcssa847.i312 = phi i64 [ %.3292.lcssa.ph.i, %1275 ], [ %.0289716.i, %._crit_edge700.i ] - %.3283.lcssa848.i310 = phi i64 [ %.3283.lcssa.ph.i, %1275 ], [ %.0280718.i, %._crit_edge700.i ] - %.3.lcssa849.i308 = phi i32 [ %.3.lcssa.ph.i, %1275 ], [ %.0267720.i, %._crit_edge700.i ] +.thread: ; preds = %._crit_edge702.i, %1275 + %.1305.lcssa849.i321 = phi i64 [ %.1305.lcssa.ph.i, %1275 ], [ %817, %._crit_edge702.i ] + %.1297.lcssa850.i318 = phi i64 [ %.1297.lcssa.ph.i, %1275 ], [ 0, %._crit_edge702.i ] + %.3292.lcssa851.i316 = phi i64 [ %.3292.lcssa.ph.i, %1275 ], [ %.0289718.i, %._crit_edge702.i ] + %.3283.lcssa852.i314 = phi i64 [ %.3283.lcssa.ph.i, %1275 ], [ %.0280720.i, %._crit_edge702.i ] + %.3.lcssa853.i312 = phi i32 [ %.3.lcssa.ph.i, %1275 ], [ %.0267722.i, %._crit_edge702.i ] %1277 = getelementptr inbounds nuw i8, ptr %802, i64 40 %1278 = load ptr, ptr %1277, align 8 %.not328.i = icmp eq ptr %1278, null @@ -3047,27 +3047,27 @@ thread-pre-split430.i: ; preds = %1282 br label %1294 1294: ; preds = %.critedge.i, %thread-pre-split430.i - %.1305.lcssa845.i316 = phi i64 [ %.1305.lcssa.ph.i, %.critedge.i ], [ %.1305.lcssa845.i317, %thread-pre-split430.i ] - %.1297.lcssa846.i315 = phi i64 [ %.1297.lcssa.ph.i, %.critedge.i ], [ %.1297.lcssa846.i314, %thread-pre-split430.i ] - %.3292.lcssa847.i313 = phi i64 [ %.3292.lcssa.ph.i, %.critedge.i ], [ %.3292.lcssa847.i312, %thread-pre-split430.i ] - %.3283.lcssa848.i311 = phi i64 [ %.3283.lcssa.ph.i, %.critedge.i ], [ %.3283.lcssa848.i310, %thread-pre-split430.i ] - %.3.lcssa849.i307 = phi i32 [ %.3.lcssa.ph.i, %.critedge.i ], [ %.3.lcssa849.i308, %thread-pre-split430.i ] + %.1305.lcssa849.i320 = phi i64 [ %.1305.lcssa.ph.i, %.critedge.i ], [ %.1305.lcssa849.i321, %thread-pre-split430.i ] + %.1297.lcssa850.i319 = phi i64 [ %.1297.lcssa.ph.i, %.critedge.i ], [ %.1297.lcssa850.i318, %thread-pre-split430.i ] + %.3292.lcssa851.i317 = phi i64 [ %.3292.lcssa.ph.i, %.critedge.i ], [ %.3292.lcssa851.i316, %thread-pre-split430.i ] + %.3283.lcssa852.i315 = phi i64 [ %.3283.lcssa.ph.i, %.critedge.i ], [ %.3283.lcssa852.i314, %thread-pre-split430.i ] + %.3.lcssa853.i311 = phi i32 [ %.3.lcssa.ph.i, %.critedge.i ], [ %.3.lcssa853.i312, %thread-pre-split430.i ] %1295 = load i64, ptr %816, align 8 - %1296 = icmp ne i64 %.1305.lcssa845.i316, %1295 - %1297 = trunc i8 %.0307715.i to i1 - %1298 = trunc i8 %.0309714.i to i1 - %1299 = call fastcc i32 @addtype(i64 noundef %.1305.lcssa845.i316, ptr noundef nonnull %473, i1 noundef zeroext %1296, i1 noundef zeroext %1297, i1 noundef zeroext %1298) - %1300 = icmp slt i32 %.3.lcssa849.i307, 0 - %spec.select334.i = select i1 %1296, i32 %.3.lcssa849.i307, i32 %1299 - %.7.i = select i1 %1300, i32 %spec.select334.i, i32 %.3.lcssa849.i307 - call fastcc void @addtt(i64 noundef %.0286717.i, i32 noundef %1299) + %1296 = icmp ne i64 %.1305.lcssa849.i320, %1295 + %1297 = trunc i8 %.0307717.i to i1 + %1298 = trunc i8 %.0309716.i to i1 + %1299 = call fastcc i32 @addtype(i64 noundef %.1305.lcssa849.i320, ptr noundef nonnull %473, i1 noundef zeroext %1296, i1 noundef zeroext %1297, i1 noundef zeroext %1298) + %1300 = icmp slt i32 %.3.lcssa853.i311, 0 + %spec.select334.i = select i1 %1296, i32 %.3.lcssa853.i311, i32 %1299 + %.7.i = select i1 %1300, i32 %spec.select334.i, i32 %.3.lcssa853.i311 + call fastcc void @addtt(i64 noundef %.0286719.i, i32 noundef %1299) br label %.thread420.i -.thread420.i: ; preds = %1294, %1291, %._crit_edge700.i, %._crit_edge700.loopexit.i, %846, %oadd.exit.i85 - %.2282429.i = phi i64 [ %.3283.lcssa848.i310, %1291 ], [ %.3283.lcssa848.i311, %1294 ], [ %.0280718.i, %._crit_edge700.i ], [ %.0280718.i, %846 ], [ %.0280718.i, %oadd.exit.i85 ], [ %.3283.lcssa.ph.i, %._crit_edge700.loopexit.i ] - %.2291428.i = phi i64 [ %.3292.lcssa847.i312, %1291 ], [ %.3292.lcssa847.i313, %1294 ], [ %.0289716.i, %._crit_edge700.i ], [ %.0289716.i, %846 ], [ %.0289716.i, %oadd.exit.i85 ], [ %.3292.lcssa.ph.i, %._crit_edge700.loopexit.i ] - %.0296427.i = phi i64 [ %.1297.lcssa846.i314, %1291 ], [ %.1297.lcssa846.i315, %1294 ], [ 0, %._crit_edge700.i ], [ %826, %846 ], [ %826, %oadd.exit.i85 ], [ %.1297.lcssa.ph.i, %._crit_edge700.loopexit.i ] - %.6.i = phi i32 [ %.3.lcssa849.i308, %1291 ], [ %.7.i, %1294 ], [ %.0267720.i, %._crit_edge700.i ], [ %.0267720.i, %846 ], [ %845, %oadd.exit.i85 ], [ %.3.lcssa.ph.i, %._crit_edge700.loopexit.i ] +.thread420.i: ; preds = %1294, %1291, %._crit_edge702.i, %._crit_edge702.loopexit.i, %846, %oadd.exit.i85 + %.2282429.i = phi i64 [ %.3283.lcssa852.i314, %1291 ], [ %.3283.lcssa852.i315, %1294 ], [ %.0280720.i, %._crit_edge702.i ], [ %.0280720.i, %846 ], [ %.0280720.i, %oadd.exit.i85 ], [ %.3283.lcssa.ph.i, %._crit_edge702.loopexit.i ] + %.2291428.i = phi i64 [ %.3292.lcssa851.i316, %1291 ], [ %.3292.lcssa851.i317, %1294 ], [ %.0289718.i, %._crit_edge702.i ], [ %.0289718.i, %846 ], [ %.0289718.i, %oadd.exit.i85 ], [ %.3292.lcssa.ph.i, %._crit_edge702.loopexit.i ] + %.0296427.i = phi i64 [ %.1297.lcssa850.i318, %1291 ], [ %.1297.lcssa850.i319, %1294 ], [ 0, %._crit_edge702.i ], [ %826, %846 ], [ %826, %oadd.exit.i85 ], [ %.1297.lcssa.ph.i, %._crit_edge702.loopexit.i ] + %.6.i = phi i32 [ %.3.lcssa853.i312, %1291 ], [ %.7.i, %1294 ], [ %.0267722.i, %._crit_edge702.i ], [ %.0267722.i, %846 ], [ %845, %oadd.exit.i85 ], [ %.3.lcssa.ph.i, %._crit_edge702.loopexit.i ] br i1 %810, label %1301, label %tadd.exit393.i 1301: ; preds = %.thread420.i @@ -3093,7 +3093,7 @@ thread-pre-split430.i: ; preds = %1282 1316: ; preds = %1313 %.not11.i388.i = icmp eq i64 %1309, -9223372036854775808 - br i1 %.not11.i388.i, label %tadd.exit389.thread851.i, label %1317 + br i1 %.not11.i388.i, label %tadd.exit389.thread855.i, label %1317 1317: ; preds = %1316 call void (ptr, ...) @error(ptr noundef nonnull @.str.57) @@ -3122,11 +3122,11 @@ tadd.exit389.i: ; preds = %1323, %1301 %.2288.i = phi i64 [ %1309, %1301 ], [ %1324, %1323 ] br i1 %1307, label %tadd.exit393.i, label %1329 -tadd.exit389.thread851.i: ; preds = %1316 +tadd.exit389.thread855.i: ; preds = %1316 %1325 = sub i64 0, %817 %1326 = icmp slt i64 %1325, 0 - %or.cond955.i = select i1 %1307, i1 true, i1 %1326 - br i1 %or.cond955.i, label %tadd.exit393.i, label %1342 + %or.cond961.i = select i1 %1307, i1 true, i1 %1326 + br i1 %or.cond961.i, label %tadd.exit393.i, label %1342 tadd.exit389.thread.i: ; preds = %1321 %1327 = sub i64 0, %817 @@ -3167,86 +3167,86 @@ tadd.exit389.thread.i: ; preds = %1321 call void @exit(i32 noundef 1) #29 unreachable -1342: ; preds = %1337, %1332, %tadd.exit389.thread.i, %tadd.exit389.thread851.i - %1343 = phi i64 [ %1330, %1337 ], [ %1330, %1332 ], [ %1327, %tadd.exit389.thread.i ], [ %1325, %tadd.exit389.thread851.i ] - %.2288433437.i = phi i64 [ %.2288.i, %1337 ], [ %.2288.i, %1332 ], [ 9223372036854775807, %tadd.exit389.thread.i ], [ -9223372036854775808, %tadd.exit389.thread851.i ] +1342: ; preds = %1337, %1332, %tadd.exit389.thread.i, %tadd.exit389.thread855.i + %1343 = phi i64 [ %1330, %1337 ], [ %1330, %1332 ], [ %1327, %tadd.exit389.thread.i ], [ %1325, %tadd.exit389.thread855.i ] + %.2288433437.i = phi i64 [ %.2288.i, %1337 ], [ %.2288.i, %1332 ], [ 9223372036854775807, %tadd.exit389.thread.i ], [ -9223372036854775808, %tadd.exit389.thread855.i ] %1344 = add i64 %.2288433437.i, %1343 br label %tadd.exit393.i -tadd.exit393.i: ; preds = %1342, %1340, %1335, %tadd.exit389.thread.i, %tadd.exit389.thread851.i, %tadd.exit389.i, %.thread420.i, %811 - %.1310.i = phi i8 [ %.0309714.i, %811 ], [ %1306, %tadd.exit389.i ], [ %.0309714.i, %.thread420.i ], [ %1306, %tadd.exit389.thread.i ], [ %1306, %1335 ], [ %1306, %1340 ], [ %1306, %1342 ], [ %1306, %tadd.exit389.thread851.i ] - %.1308.i = phi i8 [ %.0307715.i, %811 ], [ %1303, %tadd.exit389.i ], [ %.0307715.i, %.thread420.i ], [ %1303, %tadd.exit389.thread.i ], [ %1303, %1335 ], [ %1303, %1340 ], [ %1303, %1342 ], [ %1303, %tadd.exit389.thread851.i ] - %.1290.i = phi i64 [ %.0289716.i, %811 ], [ %.2291428.i, %tadd.exit389.i ], [ %.2291428.i, %.thread420.i ], [ %.2291428.i, %tadd.exit389.thread.i ], [ %.2291428.i, %1335 ], [ %.2291428.i, %1340 ], [ %.2291428.i, %1342 ], [ %.2291428.i, %tadd.exit389.thread851.i ] - %.1287.i = phi i64 [ %.0286717.i, %811 ], [ %.2288.i, %tadd.exit389.i ], [ %.0286717.i, %.thread420.i ], [ 9223372036854775807, %tadd.exit389.thread.i ], [ -9223372036854775808, %1335 ], [ 9223372036854775807, %1340 ], [ %1344, %1342 ], [ -9223372036854775808, %tadd.exit389.thread851.i ] - %.1281.i = phi i64 [ %.0280718.i, %811 ], [ %.2282429.i, %tadd.exit389.i ], [ %.2282429.i, %.thread420.i ], [ %.2282429.i, %tadd.exit389.thread.i ], [ %.2282429.i, %1335 ], [ %.2282429.i, %1340 ], [ %.2282429.i, %1342 ], [ %.2282429.i, %tadd.exit389.thread851.i ] - %.1268.i = phi i32 [ %.0267720.i, %811 ], [ %.6.i, %tadd.exit389.i ], [ %.6.i, %.thread420.i ], [ %.6.i, %tadd.exit389.thread.i ], [ %.6.i, %1335 ], [ %.6.i, %1340 ], [ %.6.i, %1342 ], [ %.6.i, %tadd.exit389.thread851.i ] - %1345 = add nuw nsw i64 %.1270719.i, 1 - %exitcond815.not.i = icmp eq i64 %1345, %465 - br i1 %exitcond815.not.i, label %._crit_edge723.i, label %801, !llvm.loop !25 - -._crit_edge723.i: ; preds = %tadd.exit393.i +tadd.exit393.i: ; preds = %1342, %1340, %1335, %tadd.exit389.thread.i, %tadd.exit389.thread855.i, %tadd.exit389.i, %.thread420.i, %811 + %.1310.i = phi i8 [ %.0309716.i, %811 ], [ %1306, %tadd.exit389.i ], [ %.0309716.i, %.thread420.i ], [ %1306, %tadd.exit389.thread.i ], [ %1306, %1335 ], [ %1306, %1340 ], [ %1306, %1342 ], [ %1306, %tadd.exit389.thread855.i ] + %.1308.i = phi i8 [ %.0307717.i, %811 ], [ %1303, %tadd.exit389.i ], [ %.0307717.i, %.thread420.i ], [ %1303, %tadd.exit389.thread.i ], [ %1303, %1335 ], [ %1303, %1340 ], [ %1303, %1342 ], [ %1303, %tadd.exit389.thread855.i ] + %.1290.i = phi i64 [ %.0289718.i, %811 ], [ %.2291428.i, %tadd.exit389.i ], [ %.2291428.i, %.thread420.i ], [ %.2291428.i, %tadd.exit389.thread.i ], [ %.2291428.i, %1335 ], [ %.2291428.i, %1340 ], [ %.2291428.i, %1342 ], [ %.2291428.i, %tadd.exit389.thread855.i ] + %.1287.i = phi i64 [ %.0286719.i, %811 ], [ %.2288.i, %tadd.exit389.i ], [ %.0286719.i, %.thread420.i ], [ 9223372036854775807, %tadd.exit389.thread.i ], [ -9223372036854775808, %1335 ], [ 9223372036854775807, %1340 ], [ %1344, %1342 ], [ -9223372036854775808, %tadd.exit389.thread855.i ] + %.1281.i = phi i64 [ %.0280720.i, %811 ], [ %.2282429.i, %tadd.exit389.i ], [ %.2282429.i, %.thread420.i ], [ %.2282429.i, %tadd.exit389.thread.i ], [ %.2282429.i, %1335 ], [ %.2282429.i, %1340 ], [ %.2282429.i, %1342 ], [ %.2282429.i, %tadd.exit389.thread855.i ] + %.1268.i = phi i32 [ %.0267722.i, %811 ], [ %.6.i, %tadd.exit389.i ], [ %.6.i, %.thread420.i ], [ %.6.i, %tadd.exit389.thread.i ], [ %.6.i, %1335 ], [ %.6.i, %1340 ], [ %.6.i, %1342 ], [ %.6.i, %tadd.exit389.thread855.i ] + %1345 = add nuw nsw i64 %.1270721.i, 1 + %exitcond819.not.i = icmp eq i64 %1345, %465 + br i1 %exitcond819.not.i, label %._crit_edge725.i, label %801, !llvm.loop !25 + +._crit_edge725.i: ; preds = %tadd.exit393.i %spec.store.select.i = call i32 @llvm.smax.i32(i32 %.1268.i, i32 0) %1346 = icmp sgt i64 %.1281.i, -1 - br i1 %1346, label %1347, label %._crit_edge723.thread.i + br i1 %1346, label %1347, label %._crit_edge725.thread.i -1347: ; preds = %._crit_edge723.i +1347: ; preds = %._crit_edge725.i %1348 = load ptr, ptr @attypes, align 8 %1349 = getelementptr %struct.attype, ptr %1348, i64 %.1281.i, i32 1 store i8 1, ptr %1349, align 8 - br label %._crit_edge723.thread.i + br label %._crit_edge725.thread.i -._crit_edge723.thread.i: ; preds = %1347, %._crit_edge723.i, %799 - %spec.store.select866.i = phi i32 [ %spec.store.select.i, %1347 ], [ %spec.store.select.i, %._crit_edge723.i ], [ 0, %799 ] - %.pre828.i = load i64, ptr @timecnt, align 8 +._crit_edge725.thread.i: ; preds = %1347, %._crit_edge725.i, %799 + %spec.store.select870.i = phi i32 [ %spec.store.select.i, %1347 ], [ %spec.store.select.i, %._crit_edge725.i ], [ 0, %799 ] + %.pre832.i = load i64, ptr @timecnt, align 8 br i1 %773, label %1382, label %1350 -1350: ; preds = %._crit_edge723.thread.i +1350: ; preds = %._crit_edge725.thread.i store i32 0, ptr %449, align 4 store i32 0, ptr %450, align 8 store i32 1, ptr %451, align 4 store i64 0, ptr %452, align 8 %1351 = load ptr, ptr @attypes, align 8 - %1352 = icmp sgt i64 %.pre828.i, 1 - br i1 %1352, label %.lr.ph729.preheader.i, label %._crit_edge730.i - -.lr.ph729.preheader.i: ; preds = %1350 - %.pre825.i = load i64, ptr %1351, align 8 - br label %.lr.ph729.i - -.lr.ph729.i: ; preds = %.lr.ph729.i, %.lr.ph729.preheader.i - %1353 = phi i64 [ %1357, %.lr.ph729.i ], [ %.pre825.i, %.lr.ph729.preheader.i ] - %.0727.i = phi ptr [ %spec.select335.i, %.lr.ph729.i ], [ %1351, %.lr.ph729.preheader.i ] - %.2271726.i = phi i64 [ %1358, %.lr.ph729.i ], [ 1, %.lr.ph729.preheader.i ] - %1354 = getelementptr %struct.attype, ptr %1351, i64 %.2271726.i + %1352 = icmp sgt i64 %.pre832.i, 1 + br i1 %1352, label %.lr.ph731.preheader.i, label %._crit_edge732.i + +.lr.ph731.preheader.i: ; preds = %1350 + %.pre829.i = load i64, ptr %1351, align 8 + br label %.lr.ph731.i + +.lr.ph731.i: ; preds = %.lr.ph731.i, %.lr.ph731.preheader.i + %1353 = phi i64 [ %1357, %.lr.ph731.i ], [ %.pre829.i, %.lr.ph731.preheader.i ] + %.0729.i = phi ptr [ %spec.select335.i, %.lr.ph731.i ], [ %1351, %.lr.ph731.preheader.i ] + %.2271728.i = phi i64 [ %1358, %.lr.ph731.i ], [ 1, %.lr.ph731.preheader.i ] + %1354 = getelementptr %struct.attype, ptr %1351, i64 %.2271728.i %1355 = load i64, ptr %1354, align 8 %1356 = icmp sgt i64 %1355, %1353 %1357 = call i64 @llvm.smax.i64(i64 %1355, i64 %1353) - %spec.select335.i = select i1 %1356, ptr %1354, ptr %.0727.i - %1358 = add nuw nsw i64 %.2271726.i, 1 - %exitcond816.not.i = icmp eq i64 %1358, %.pre828.i - br i1 %exitcond816.not.i, label %._crit_edge730.i, label %.lr.ph729.i, !llvm.loop !26 + %spec.select335.i = select i1 %1356, ptr %1354, ptr %.0729.i + %1358 = add nuw nsw i64 %.2271728.i, 1 + %exitcond820.not.i = icmp eq i64 %1358, %.pre832.i + br i1 %exitcond820.not.i, label %._crit_edge732.i, label %.lr.ph731.i, !llvm.loop !26 -._crit_edge730.i: ; preds = %.lr.ph729.i, %1350 - %.0.lcssa.i = phi ptr [ %1351, %1350 ], [ %spec.select335.i, %.lr.ph729.i ] +._crit_edge732.i: ; preds = %.lr.ph731.i, %1350 + %.0.lcssa.i = phi ptr [ %1351, %1350 ], [ %spec.select335.i, %.lr.ph731.i ] %.not325.i = icmp eq ptr %.0.lcssa.i, null br i1 %.not325.i, label %.thread444.i, label %1362 -.thread444.i: ; preds = %._crit_edge730.i +.thread444.i: ; preds = %._crit_edge732.i %1359 = load i64, ptr @max_year, align 8 %1360 = add nuw i64 %1359, 1 %1361 = call fastcc i64 @rpytime(ptr noundef nonnull %23, i64 noundef %1360) br label %1375 -1362: ; preds = %._crit_edge730.i +1362: ; preds = %._crit_edge732.i %1363 = load i64, ptr %.0.lcssa.i, align 8 %1364 = load i64, ptr @max_year, align 8 %1365 = add nsw i64 %1364, -1 %1366 = call fastcc i64 @rpytime(ptr noundef nonnull %23, i64 noundef %1365) %1367 = icmp slt i64 %1363, %1366 - br i1 %1367, label %1368, label %._crit_edge826.i + br i1 %1367, label %1368, label %._crit_edge830.i -._crit_edge826.i: ; preds = %1362 - %.pre827.i = load i64, ptr @timecnt, align 8 +._crit_edge830.i: ; preds = %1362 + %.pre831.i = load i64, ptr @timecnt, align 8 br label %1382 1368: ; preds = %1362 @@ -3260,7 +3260,7 @@ tadd.exit393.i: ; preds = %1342, %1340, %1335, 1375: ; preds = %1368, %.thread444.i %1376 = phi i64 [ %1371, %1368 ], [ %1361, %.thread444.i ] - %1377 = phi i32 [ %1374, %1368 ], [ %spec.store.select866.i, %.thread444.i ] + %1377 = phi i32 [ %1374, %1368 ], [ %spec.store.select870.i, %.thread444.i ] call fastcc void @addtt(i64 noundef %1376, i32 noundef %1377) %1378 = load ptr, ptr @attypes, align 8 %1379 = load i64, ptr @timecnt, align 8 @@ -3269,8 +3269,8 @@ tadd.exit393.i: ; preds = %1342, %1340, %1335, store i8 1, ptr %1381, align 8 br label %1382 -1382: ; preds = %1375, %._crit_edge826.i, %._crit_edge723.thread.i - %1383 = phi i64 [ %.pre827.i, %._crit_edge826.i ], [ %1379, %1375 ], [ %.pre828.i, %._crit_edge723.thread.i ] +1382: ; preds = %1375, %._crit_edge830.i, %._crit_edge725.thread.i + %1383 = phi i64 [ %.pre831.i, %._crit_edge830.i ], [ %1379, %1375 ], [ %.pre832.i, %._crit_edge725.thread.i ] %1384 = icmp slt i32 %.0102.i.i, 2013 %1385 = select i1 %1384, i8 50, i8 51 %1386 = getelementptr inbounds nuw i8, ptr %464, i64 16 @@ -3591,10 +3591,10 @@ thread-pre-split.i.i: ; preds = %1517, %1515, %1510, br i1 %exitcond797.not.i.i, label %.critedge.i.loopexit.i.i, label %.lr.ph.i.i.i, !llvm.loop !34 .critedge.i.loopexit.i.i: ; preds = %.lr.ph687.i.i, %.lr.ph.i.i.i - %.lcssa737.i = phi i64 [ %1529, %.lr.ph687.i.i ], [ %1535, %.lr.ph.i.i.i ] + %.lcssa741.i = phi i64 [ %1529, %.lr.ph687.i.i ], [ %1535, %.lr.ph.i.i.i ] %.ph852.i.i = phi i64 [ %1522, %.lr.ph687.i.i ], [ %1530, %.lr.ph.i.i.i ] %.pr.i.ph.i.i = phi i64 [ 0, %.lr.ph687.i.i ], [ %1531, %.lr.ph.i.i.i ] - %1537 = getelementptr i8, ptr %1399, i64 %.lcssa737.i + %1537 = getelementptr i8, ptr %1399, i64 %.lcssa741.i %1538 = load i8, ptr %1537, align 1, !noalias !31 %1539 = zext i8 %1538 to i32 br label %.critedge.i.i.i @@ -3603,7 +3603,7 @@ thread-pre-split.i.i: ; preds = %1517, %1515, %1510, %1540 = phi i64 [ %1525, %thread-pre-split.i.i ], [ %1525, %.lr.ph.i.preheader.i.i ], [ %1408, %thread-pre-split.thread.i.i ], [ %1525, %.critedge.i.loopexit.i.i ] %1541 = phi i64 [ %1524, %thread-pre-split.i.i ], [ %1524, %.lr.ph.i.preheader.i.i ], [ %1407, %thread-pre-split.thread.i.i ], [ %1524, %.critedge.i.loopexit.i.i ] %1542 = phi i32 [ %1523, %thread-pre-split.i.i ], [ %1523, %.lr.ph.i.preheader.i.i ], [ %1406, %thread-pre-split.thread.i.i ], [ %1523, %.critedge.i.loopexit.i.i ] - %.lcssa21.i.i.i = phi i32 [ %spec.store.select866.i, %thread-pre-split.i.i ], [ %spec.store.select866.i, %.lr.ph.i.preheader.i.i ], [ %spec.store.select866.i, %thread-pre-split.thread.i.i ], [ %1539, %.critedge.i.loopexit.i.i ] + %.lcssa21.i.i.i = phi i32 [ %spec.store.select870.i, %thread-pre-split.i.i ], [ %spec.store.select870.i, %.lr.ph.i.preheader.i.i ], [ %spec.store.select870.i, %thread-pre-split.thread.i.i ], [ %1539, %.critedge.i.loopexit.i.i ] %1543 = phi i64 [ 0, %thread-pre-split.i.i ], [ 0, %.lr.ph.i.preheader.i.i ], [ 0, %thread-pre-split.thread.i.i ], [ %.ph852.i.i, %.critedge.i.loopexit.i.i ] %.pr.i.i.i = phi i64 [ %1522, %thread-pre-split.i.i ], [ %1522, %.lr.ph.i.preheader.i.i ], [ 0, %thread-pre-split.thread.i.i ], [ %.pr.i.ph.i.i, %.critedge.i.loopexit.i.i ] %1544 = icmp sgt i32 %1542, 0 @@ -3668,25 +3668,28 @@ thread-pre-split.i.i.i: ; preds = %.critedge2.i.i.i %1564 = zext nneg i32 %.pr15.i.i.i to i64 br label %.lr.ph44.i.i.i -.lr.ph44.i.i.i: ; preds = %1572, %.lr.ph44.i.preheader.i.i - %indvars.iv.i.i = phi i64 [ %1564, %.lr.ph44.i.preheader.i.i ], [ %indvars.iv.next.i.i, %1572 ] +.lr.ph44.i.i.i: ; preds = %1571, %.lr.ph44.i.preheader.i.i + %indvars.iv.i.i = phi i64 [ %1564, %.lr.ph44.i.preheader.i.i ], [ %indvars.iv.next.i.i, %1571 ] %indvars.iv.next.i.i = add nsw i64 %indvars.iv.i.i, -1 - %1565 = trunc i64 %indvars.iv.next.i.i to i32 + %1565 = trunc nsw i64 %indvars.iv.next.i.i to i32 %1566 = add i32 %1553, %1565 %1567 = sext i32 %1566 to i64 %1568 = getelementptr [50 x i64], ptr @trans, i64 0, i64 %1567 %1569 = load i64, ptr %1568, align 8, !noalias !31 %1570 = icmp slt i64 %1554, %1569 - %1571 = trunc i64 %indvars.iv.i.i to i32 - br i1 %1570, label %1572, label %limitrange.exit.i.i + br i1 %1570, label %1571, label %limitrange.exit.loopexit.split.loop.exit863.i.i -1572: ; preds = %.lr.ph44.i.i.i - %1573 = icmp samesign ugt i32 %1571, 1 - br i1 %1573, label %.lr.ph44.i.i.i, label %limitrange.exit.i.i, !llvm.loop !37 +1571: ; preds = %.lr.ph44.i.i.i + %1572 = icmp samesign ugt i64 %indvars.iv.i.i, 1 + br i1 %1572, label %.lr.ph44.i.i.i, label %limitrange.exit.i.i, !llvm.loop !37 -limitrange.exit.i.i: ; preds = %1572, %.lr.ph44.i.i.i, %.critedge4.i.i.i, %.critedge2.i.i.i - %.sroa.12.1.i.i = phi i64 [ %.pr.i.i.i, %.critedge2.i.i.i ], [ %.sroa.12.0.i.i, %.critedge4.i.i.i ], [ %.sroa.12.0.i.i, %.lr.ph44.i.i.i ], [ %.sroa.12.0.i.i, %1572 ] - %.sroa.22.0.i.i = phi i32 [ %.pr15.i.i.i, %.critedge2.i.i.i ], [ %.pr15.i.i.i, %.critedge4.i.i.i ], [ 0, %1572 ], [ %1571, %.lr.ph44.i.i.i ] +limitrange.exit.loopexit.split.loop.exit863.i.i: ; preds = %.lr.ph44.i.i.i + %1573 = trunc nsw i64 %indvars.iv.i.i to i32 + br label %limitrange.exit.i.i + +limitrange.exit.i.i: ; preds = %1571, %limitrange.exit.loopexit.split.loop.exit863.i.i, %.critedge4.i.i.i, %.critedge2.i.i.i + %.sroa.12.1.i.i = phi i64 [ %.pr.i.i.i, %.critedge2.i.i.i ], [ %.sroa.12.0.i.i, %.critedge4.i.i.i ], [ %.sroa.12.0.i.i, %limitrange.exit.loopexit.split.loop.exit863.i.i ], [ %.sroa.12.0.i.i, %1571 ] + %.sroa.22.0.i.i = phi i32 [ %.pr15.i.i.i, %.critedge2.i.i.i ], [ %.pr15.i.i.i, %.critedge4.i.i.i ], [ %1573, %limitrange.exit.loopexit.split.loop.exit863.i.i ], [ 0, %1571 ] %1574 = icmp sgt i64 %.sroa.12.1.i.i, 0 br i1 %1574, label %.lr.ph.preheader.i483.i.i, label %.critedge.i462.i.i @@ -3716,10 +3719,10 @@ limitrange.exit.i.i: ; preds = %1572, %.lr.ph44.i.i br i1 %1587, label %.lr.ph.i484.i.i, label %.critedge.i462.loopexit.i.i, !llvm.loop !34 .critedge.i462.loopexit.i.i: ; preds = %.lr.ph694.i.i, %.lr.ph.i484.i.i - %.lcssa736.i = phi i64 [ %1579, %.lr.ph694.i.i ], [ %1585, %.lr.ph.i484.i.i ] + %.lcssa739.i = phi i64 [ %1579, %.lr.ph694.i.i ], [ %1585, %.lr.ph.i484.i.i ] %.ph850.i.i = phi i64 [ %1575, %.lr.ph694.i.i ], [ %1580, %.lr.ph.i484.i.i ] %.pr.i464.ph.i.i = phi i64 [ 0, %.lr.ph694.i.i ], [ %1581, %.lr.ph.i484.i.i ] - %1588 = getelementptr i8, ptr %1399, i64 %.lcssa736.i + %1588 = getelementptr i8, ptr %1399, i64 %.lcssa739.i %1589 = load i8, ptr %1588, align 1, !noalias !38 %1590 = zext i8 %1589 to i32 br label %.critedge.i462.i.i @@ -3782,24 +3785,27 @@ limitrange.exit.i.i: ; preds = %1572, %.lr.ph44.i.i %1614 = zext nneg i32 %.pr15.i468.i.i to i64 br label %.lr.ph44.i473.i.i -.lr.ph44.i473.i.i: ; preds = %1622, %.lr.ph44.i473.preheader.i.i - %indvars.iv800.i.i = phi i64 [ %1614, %.lr.ph44.i473.preheader.i.i ], [ %indvars.iv.next801.i.i, %1622 ] +.lr.ph44.i473.i.i: ; preds = %1621, %.lr.ph44.i473.preheader.i.i + %indvars.iv800.i.i = phi i64 [ %1614, %.lr.ph44.i473.preheader.i.i ], [ %indvars.iv.next801.i.i, %1621 ] %indvars.iv.next801.i.i = add nsw i64 %indvars.iv800.i.i, -1 - %1615 = trunc i64 %indvars.iv.next801.i.i to i32 + %1615 = trunc nsw i64 %indvars.iv.next801.i.i to i32 %1616 = add i32 %1604, %1615 %1617 = sext i32 %1616 to i64 %1618 = getelementptr [50 x i64], ptr @trans, i64 0, i64 %1617 %1619 = load i64, ptr %1618, align 8, !noalias !38 %1620 = icmp sgt i64 %1619, 2147483648 - %1621 = trunc i64 %indvars.iv800.i.i to i32 - br i1 %1620, label %1622, label %limitrange.exit485.i.i + br i1 %1620, label %1621, label %limitrange.exit485.loopexit.split.loop.exit868.i.i + +1621: ; preds = %.lr.ph44.i473.i.i + %1622 = icmp samesign ugt i64 %indvars.iv800.i.i, 1 + br i1 %1622, label %.lr.ph44.i473.i.i, label %limitrange.exit485.i.i, !llvm.loop !37 -1622: ; preds = %.lr.ph44.i473.i.i - %1623 = icmp samesign ugt i32 %1621, 1 - br i1 %1623, label %.lr.ph44.i473.i.i, label %limitrange.exit485.i.i, !llvm.loop !37 +limitrange.exit485.loopexit.split.loop.exit868.i.i: ; preds = %.lr.ph44.i473.i.i + %1623 = trunc nsw i64 %indvars.iv800.i.i to i32 + br label %limitrange.exit485.i.i -limitrange.exit485.i.i: ; preds = %1622, %.lr.ph44.i473.i.i, %.critedge4.i470.i.i - %.sroa.22622.0.i.i = phi i32 [ %.pr15.i468.i.i, %.critedge4.i470.i.i ], [ 0, %1622 ], [ %1621, %.lr.ph44.i473.i.i ] +limitrange.exit485.i.i: ; preds = %1621, %limitrange.exit485.loopexit.split.loop.exit868.i.i, %.critedge4.i470.i.i + %.sroa.22622.0.i.i = phi i32 [ %.pr15.i468.i.i, %.critedge4.i470.i.i ], [ %1623, %limitrange.exit485.loopexit.split.loop.exit868.i.i ], [ 0, %1621 ] %1624 = call i32 @remove(ptr noundef %1387) #26 %1625 = icmp eq i32 %1624, 0 br i1 %1625, label %1635, label %1626 @@ -3854,7 +3860,7 @@ limitrange.exit485.i.i: ; preds = %1622, %.lr.ph44.i47 %1650 = icmp ugt i64 %.sroa.12617.0.i.i, 4294967295 %1651 = icmp slt i64 %.sroa.12.1.i.i, 0 %invariant.gep745.i.i = getelementptr i8, ptr %1393, i64 8 - %1652 = and i32 %spec.store.select866.i, 255 + %1652 = and i32 %spec.store.select870.i, 255 %1653 = zext nneg i32 %1652 to i64 %1654 = getelementptr [256 x i8], ptr @desigidx, i64 0, i64 %1653 %1655 = getelementptr [256 x i64], ptr @utoffs, i64 0, i64 %1653 @@ -4988,10 +4994,10 @@ outzone.exit: ; preds = %.loopexit658.i.i %2141 = icmp slt i64 %.041.lcssa, %2140 br i1 %2141, label %.preheader92, label %.preheader91, !llvm.loop !59 -.lr.ph195: ; preds = %.preheader91, %.loopexit - %.144193 = phi i64 [ %2168, %.loopexit ], [ 0, %.preheader91 ] +.lr.ph197: ; preds = %.preheader91, %.loopexit + %.144195 = phi i64 [ %2168, %.loopexit ], [ 0, %.preheader91 ] %2142 = load ptr, ptr @links, align 8 - %2143 = getelementptr %struct.link, ptr %2142, i64 %.144193 + %2143 = getelementptr %struct.link, ptr %2142, i64 %.144195 %2144 = load ptr, ptr %2143, align 8 %2145 = getelementptr inbounds nuw i8, ptr %2143, i64 8 %2146 = load i32, ptr %2145, align 8 @@ -5007,50 +5013,50 @@ outzone.exit: ; preds = %.loopexit658.i.i %.b61 = load i1, ptr @noise, align 1 %2151 = load i64, ptr @nlinks, align 8 %2152 = icmp sgt i64 %2151, 0 - %or.cond198 = select i1 %.b61, i1 %2152, i1 false - br i1 %or.cond198, label %.lr.ph192.preheader, label %.loopexit - -.lr.ph192.preheader: ; preds = %.lr.ph195 - %.pre300 = load ptr, ptr @links, align 8 - br label %.lr.ph192 - -.lr.ph192: ; preds = %.lr.ph192.preheader, %2162 - %2153 = phi i64 [ %2163, %2162 ], [ %2151, %.lr.ph192.preheader ] - %2154 = phi ptr [ %2164, %2162 ], [ %.pre300, %.lr.ph192.preheader ] - %.142191 = phi i64 [ %2165, %2162 ], [ 0, %.lr.ph192.preheader ] - %2155 = getelementptr %struct.link, ptr %2154, i64 %.144193, i32 3 + %or.cond200 = select i1 %.b61, i1 %2152, i1 false + br i1 %or.cond200, label %.lr.ph194.preheader, label %.loopexit + +.lr.ph194.preheader: ; preds = %.lr.ph197 + %.pre304 = load ptr, ptr @links, align 8 + br label %.lr.ph194 + +.lr.ph194: ; preds = %.lr.ph194.preheader, %2162 + %2153 = phi i64 [ %2163, %2162 ], [ %2151, %.lr.ph194.preheader ] + %2154 = phi ptr [ %2164, %2162 ], [ %.pre304, %.lr.ph194.preheader ] + %.142193 = phi i64 [ %2165, %2162 ], [ 0, %.lr.ph194.preheader ] + %2155 = getelementptr %struct.link, ptr %2154, i64 %.144195, i32 3 %2156 = load ptr, ptr %2155, align 8 - %2157 = getelementptr %struct.link, ptr %2154, i64 %.142191, i32 2 + %2157 = getelementptr %struct.link, ptr %2154, i64 %.142193, i32 2 %2158 = load ptr, ptr %2157, align 8 %2159 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %2156, ptr noundef nonnull dereferenceable(1) %2158) #27 %2160 = icmp eq i32 %2159, 0 br i1 %2160, label %2161, label %2162 -2161: ; preds = %.lr.ph192 +2161: ; preds = %.lr.ph194 call void (ptr, ...) @warning(ptr noundef nonnull @.str.21) - %.pre299 = load ptr, ptr @links, align 8 - %.pre301 = load i64, ptr @nlinks, align 8 + %.pre303 = load ptr, ptr @links, align 8 + %.pre305 = load i64, ptr @nlinks, align 8 br label %2162 -2162: ; preds = %.lr.ph192, %2161 - %2163 = phi i64 [ %2153, %.lr.ph192 ], [ %.pre301, %2161 ] - %2164 = phi ptr [ %2154, %.lr.ph192 ], [ %.pre299, %2161 ] - %2165 = add nuw nsw i64 %.142191, 1 +2162: ; preds = %.lr.ph194, %2161 + %2163 = phi i64 [ %2153, %.lr.ph194 ], [ %.pre305, %2161 ] + %2164 = phi ptr [ %2154, %.lr.ph194 ], [ %.pre303, %2161 ] + %2165 = add nuw nsw i64 %.142193, 1 %2166 = icmp slt i64 %2165, %2163 - br i1 %2166, label %.lr.ph192, label %.loopexit, !llvm.loop !60 + br i1 %2166, label %.lr.ph194, label %.loopexit, !llvm.loop !60 -.loopexit: ; preds = %2162, %.lr.ph195 - %2167 = phi i64 [ %2151, %.lr.ph195 ], [ %2163, %2162 ] - %2168 = add nuw nsw i64 %.144193, 1 +.loopexit: ; preds = %2162, %.lr.ph197 + %2167 = phi i64 [ %2151, %.lr.ph197 ], [ %2163, %2162 ] + %2168 = add nuw nsw i64 %.144195, 1 %2169 = icmp slt i64 %2168, %2167 - br i1 %2169, label %.lr.ph195, label %._crit_edge196, !llvm.loop !61 + br i1 %2169, label %.lr.ph197, label %._crit_edge198, !llvm.loop !61 -._crit_edge196: ; preds = %.loopexit, %.preheader91 +._crit_edge198: ; preds = %.loopexit, %.preheader91 %2170 = load ptr, ptr @lcltime, align 8 %.not55 = icmp eq ptr %2170, null br i1 %.not55, label %2173, label %2171 -2171: ; preds = %._crit_edge196 +2171: ; preds = %._crit_edge198 store ptr @.str.22, ptr @filename, align 8 store i32 1, ptr @linenum, align 4 store ptr null, ptr @rfilename, align 8 @@ -5059,7 +5065,7 @@ outzone.exit: ; preds = %.loopexit658.i.i call fastcc void @dolink(ptr noundef nonnull %2170, ptr noundef %2172, i1 noundef zeroext true) br label %2173 -2173: ; preds = %2171, %._crit_edge196 +2173: ; preds = %2171, %._crit_edge198 %2174 = load ptr, ptr @psxrules, align 8 %.not56 = icmp eq ptr %2174, null br i1 %.not56, label %2176, label %2175 diff --git a/bench/qemu/optimized/block_qcow2-cluster.ll b/bench/qemu/optimized/block_qcow2-cluster.ll index e0e3bc8b481..5ca6888cf15 100644 --- a/bench/qemu/optimized/block_qcow2-cluster.ll +++ b/bench/qemu/optimized/block_qcow2-cluster.ll @@ -954,8 +954,8 @@ if.end32.i: ; preds = %if.then23.i, %if.el %55 = load i32, ptr %subclusters_per_cluster.i, align 4 %cmp35.i = icmp uge i32 %.pn.i, %55 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %56 = icmp ult i64 %indvars.iv.next, %shr.i118 - %or.cond46.i = select i1 %cmp35.i, i1 %56, i1 false + %cmp1.i = icmp samesign ult i64 %indvars.iv.next, %shr.i118 + %or.cond46.i = select i1 %cmp35.i, i1 %cmp1.i, i1 false br i1 %or.cond46.i, label %for.body.i, label %count_contiguous_subclusters.exit, !llvm.loop !11 count_contiguous_subclusters.exit: ; preds = %if.else19.i, %if.then23.i, %if.end32.i @@ -971,13 +971,13 @@ if.then68: ; preds = %get_l2_bitmap.exit. if.end69: ; preds = %if.then12.i, %for.cond.preheader.i, %count_contiguous_subclusters.exit %retval.0.i129152 = phi i32 [ %retval.0.i129, %count_contiguous_subclusters.exit ], [ 0, %for.cond.preheader.i ], [ %retval.0.i30.i, %if.then12.i ] %l2_table_cache = getelementptr inbounds nuw i8, ptr %0, i64 80 - %57 = load ptr, ptr %l2_table_cache, align 8 - call void @qcow2_cache_put(ptr noundef %57, ptr noundef nonnull %l2_slice) #13 + %56 = load ptr, ptr %l2_table_cache, align 8 + call void @qcow2_cache_put(ptr noundef %56, ptr noundef nonnull %l2_slice) #13 %conv70 = zext nneg i32 %retval.0.i129152 to i64 %conv71 = zext i32 %conv1.i109 to i64 %add72 = add nuw nsw i64 %conv70, %conv71 - %58 = load i32, ptr %17, align 4 - %sh_prom73 = zext nneg i32 %58 to i64 + %57 = load i32, ptr %17, align 4 + %sh_prom73 = zext nneg i32 %57 to i64 %shl74 = shl i64 %add72, %sh_prom73 br label %out @@ -1001,8 +1001,8 @@ if.end85: ; preds = %out fail: ; preds = %if.then68, %if.then60, %if.then53, %if.then44, %if.then40 %l2_table_cache89 = getelementptr inbounds nuw i8, ptr %0, i64 80 - %59 = load ptr, ptr %l2_table_cache89, align 8 - call void @qcow2_cache_put(ptr noundef %59, ptr noundef nonnull %l2_slice) #13 + %58 = load ptr, ptr %l2_table_cache89, align 8 + call void @qcow2_cache_put(ptr noundef %58, ptr noundef nonnull %l2_slice) #13 br label %return return: ; preds = %if.end18, %fail, %if.end85, %if.then17 diff --git a/bench/raylib/optimized/raudio.ll b/bench/raylib/optimized/raudio.ll index d450f104488..bcee80c2d08 100644 --- a/bench/raylib/optimized/raudio.ll +++ b/bench/raylib/optimized/raudio.ll @@ -80925,11 +80925,7 @@ drmp3_L12_apply_scf_384.exit: ; preds = %2193, %2170 define internal fastcc void @drmp3d_synth_granule(ptr noundef captures(none) %0, ptr noundef nonnull captures(none) %1, i32 noundef range(i32 12, 19) %2, i32 noundef %3, ptr noundef nonnull writeonly captures(none) %4, ptr noundef nonnull captures(none) %5) unnamed_addr #52 { %7 = alloca [4 x [8 x <4 x float>]], align 16 %8 = icmp sgt i32 %3, 0 - br i1 %8, label %.lr.ph, label %.._crit_edge_crit_edge - -.._crit_edge_crit_edge: ; preds = %6 - %.pre = zext nneg i32 %2 to i64 - br label %._crit_edge + br i1 %8, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %6 %9 = add nsw i32 %2, -3 @@ -81200,8 +81196,7 @@ drmp3d_DCT_II.exit: ; preds = %189 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %._crit_edge, label %19 -._crit_edge: ; preds = %drmp3d_DCT_II.exit, %.._crit_edge_crit_edge - %.pre-phi = phi i64 [ %.pre, %.._crit_edge_crit_edge ], [ %18, %drmp3d_DCT_II.exit ] +._crit_edge: ; preds = %drmp3d_DCT_II.exit, %6 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(3840) %5, ptr noundef nonnull align 4 dereferenceable(3840) %0, i64 3840, i1 false) %191 = shl nsw i32 %3, 5 %192 = add nsw i32 %3, -1 @@ -81210,333 +81205,334 @@ drmp3d_DCT_II.exit: ; preds = %189 %195 = sext i32 %192 to i64 %196 = sext i32 %191 to i64 %197 = sext i32 %3 to i64 - br label %198 + %198 = zext nneg i32 %2 to i64 + br label %199 -198: ; preds = %._crit_edge, %drmp3d_synth.exit +199: ; preds = %._crit_edge, %drmp3d_synth.exit %indvars.iv39 = phi i64 [ 0, %._crit_edge ], [ %indvars.iv.next40, %drmp3d_synth.exit ] - %199 = getelementptr inbounds nuw float, ptr %1, i64 %indvars.iv39 - %200 = mul nsw i64 %indvars.iv39, %196 - %201 = getelementptr inbounds i16, ptr %4, i64 %200 + %200 = getelementptr inbounds nuw float, ptr %1, i64 %indvars.iv39 + %201 = mul nsw i64 %indvars.iv39, %196 + %202 = getelementptr inbounds i16, ptr %4, i64 %201 %.idx45 = shl nsw i64 %indvars.iv39, 8 - %202 = getelementptr inbounds nuw i8, ptr %5, i64 %.idx45 - %203 = getelementptr inbounds float, ptr %199, i64 %194 - %204 = getelementptr inbounds i16, ptr %201, i64 %195 - %205 = getelementptr inbounds nuw i8, ptr %202, i64 3840 - %206 = getelementptr inbounds nuw i8, ptr %199, i64 1152 - %207 = load float, ptr %206, align 4 - %208 = getelementptr inbounds nuw i8, ptr %202, i64 4080 - store float %207, ptr %208, align 4 - %209 = getelementptr inbounds nuw i8, ptr %203, i64 1152 - %210 = load float, ptr %209, align 4 - %211 = getelementptr inbounds nuw i8, ptr %202, i64 4084 - store float %210, ptr %211, align 4 - %212 = load float, ptr %199, align 4 - %213 = getelementptr inbounds nuw i8, ptr %202, i64 4088 - store float %212, ptr %213, align 4 - %214 = load float, ptr %203, align 4 - %215 = getelementptr inbounds nuw i8, ptr %202, i64 4092 - store float %214, ptr %215, align 4 - %216 = getelementptr inbounds nuw i8, ptr %199, i64 1156 - %217 = load float, ptr %216, align 4 - %218 = getelementptr inbounds nuw i8, ptr %202, i64 4336 - store float %217, ptr %218, align 4 - %219 = getelementptr inbounds nuw i8, ptr %203, i64 1156 - %220 = load float, ptr %219, align 4 - %221 = getelementptr inbounds nuw i8, ptr %202, i64 4340 - store float %220, ptr %221, align 4 - %222 = getelementptr inbounds nuw i8, ptr %199, i64 4 - %223 = load float, ptr %222, align 4 - %224 = getelementptr inbounds nuw i8, ptr %202, i64 4344 - store float %223, ptr %224, align 4 - %225 = getelementptr inbounds nuw i8, ptr %203, i64 4 - %226 = load float, ptr %225, align 4 - %227 = getelementptr inbounds nuw i8, ptr %202, i64 4348 - store float %226, ptr %227, align 4 - %228 = getelementptr inbounds nuw i8, ptr %202, i64 240 - %229 = getelementptr inbounds nuw i8, ptr %202, i64 244 - tail call fastcc void @drmp3d_synth_pair(ptr noundef %204, i32 noundef %3, ptr noundef %229) - %230 = getelementptr inbounds i16, ptr %204, i64 %196 - %231 = getelementptr inbounds nuw i8, ptr %202, i64 496 - %232 = getelementptr inbounds nuw i8, ptr %202, i64 500 - tail call fastcc void @drmp3d_synth_pair(ptr noundef %230, i32 noundef %3, ptr noundef %232) - tail call fastcc void @drmp3d_synth_pair(ptr noundef nonnull %201, i32 noundef %3, ptr noundef %228) - %233 = getelementptr inbounds i16, ptr %201, i64 %196 - tail call fastcc void @drmp3d_synth_pair(ptr noundef %233, i32 noundef %3, ptr noundef %231) - %invariant.gep.i = getelementptr inbounds nuw i8, ptr %202, i64 4096 - br label %234 + %203 = getelementptr inbounds nuw i8, ptr %5, i64 %.idx45 + %204 = getelementptr inbounds float, ptr %200, i64 %194 + %205 = getelementptr inbounds i16, ptr %202, i64 %195 + %206 = getelementptr inbounds nuw i8, ptr %203, i64 3840 + %207 = getelementptr inbounds nuw i8, ptr %200, i64 1152 + %208 = load float, ptr %207, align 4 + %209 = getelementptr inbounds nuw i8, ptr %203, i64 4080 + store float %208, ptr %209, align 4 + %210 = getelementptr inbounds nuw i8, ptr %204, i64 1152 + %211 = load float, ptr %210, align 4 + %212 = getelementptr inbounds nuw i8, ptr %203, i64 4084 + store float %211, ptr %212, align 4 + %213 = load float, ptr %200, align 4 + %214 = getelementptr inbounds nuw i8, ptr %203, i64 4088 + store float %213, ptr %214, align 4 + %215 = load float, ptr %204, align 4 + %216 = getelementptr inbounds nuw i8, ptr %203, i64 4092 + store float %215, ptr %216, align 4 + %217 = getelementptr inbounds nuw i8, ptr %200, i64 1156 + %218 = load float, ptr %217, align 4 + %219 = getelementptr inbounds nuw i8, ptr %203, i64 4336 + store float %218, ptr %219, align 4 + %220 = getelementptr inbounds nuw i8, ptr %204, i64 1156 + %221 = load float, ptr %220, align 4 + %222 = getelementptr inbounds nuw i8, ptr %203, i64 4340 + store float %221, ptr %222, align 4 + %223 = getelementptr inbounds nuw i8, ptr %200, i64 4 + %224 = load float, ptr %223, align 4 + %225 = getelementptr inbounds nuw i8, ptr %203, i64 4344 + store float %224, ptr %225, align 4 + %226 = getelementptr inbounds nuw i8, ptr %204, i64 4 + %227 = load float, ptr %226, align 4 + %228 = getelementptr inbounds nuw i8, ptr %203, i64 4348 + store float %227, ptr %228, align 4 + %229 = getelementptr inbounds nuw i8, ptr %203, i64 240 + %230 = getelementptr inbounds nuw i8, ptr %203, i64 244 + tail call fastcc void @drmp3d_synth_pair(ptr noundef %205, i32 noundef %3, ptr noundef %230) + %231 = getelementptr inbounds i16, ptr %205, i64 %196 + %232 = getelementptr inbounds nuw i8, ptr %203, i64 496 + %233 = getelementptr inbounds nuw i8, ptr %203, i64 500 + tail call fastcc void @drmp3d_synth_pair(ptr noundef %231, i32 noundef %3, ptr noundef %233) + tail call fastcc void @drmp3d_synth_pair(ptr noundef nonnull %202, i32 noundef %3, ptr noundef %229) + %234 = getelementptr inbounds i16, ptr %202, i64 %196 + tail call fastcc void @drmp3d_synth_pair(ptr noundef %234, i32 noundef %3, ptr noundef %232) + %invariant.gep.i = getelementptr inbounds nuw i8, ptr %203, i64 4096 + br label %235 -234: ; preds = %234, %198 - %indvars.iv.i31 = phi i64 [ 14, %198 ], [ %indvars.iv.next.i32, %234 ] - %.0460461.i = phi ptr [ @drmp3d_synth.g_win, %198 ], [ %409, %234 ] - %235 = sub nuw nsw i64 31, %indvars.iv.i31 - %236 = mul nuw nsw i64 %235, 18 - %237 = getelementptr inbounds nuw float, ptr %199, i64 %236 - %238 = load float, ptr %237, align 4 - %239 = shl nsw i64 %indvars.iv.i31, 2 - %240 = getelementptr inbounds nuw float, ptr %205, i64 %239 - store float %238, ptr %240, align 4 - %241 = getelementptr inbounds nuw float, ptr %203, i64 %236 - %242 = load float, ptr %241, align 4 - %243 = or disjoint i64 %239, 1 - %244 = getelementptr inbounds nuw float, ptr %205, i64 %243 - store float %242, ptr %244, align 4 - %245 = or disjoint i64 %236, 1 - %246 = getelementptr inbounds nuw float, ptr %199, i64 %245 - %247 = load float, ptr %246, align 4 - %248 = or disjoint i64 %239, 2 - %249 = getelementptr inbounds nuw float, ptr %205, i64 %248 - store float %247, ptr %249, align 4 - %250 = getelementptr inbounds nuw float, ptr %203, i64 %245 - %251 = load float, ptr %250, align 4 - %252 = or disjoint i64 %239, 3 - %253 = getelementptr inbounds nuw float, ptr %205, i64 %252 - store float %251, ptr %253, align 4 - %254 = mul nuw nsw i64 %indvars.iv.i31, 18 - %255 = add nuw nsw i64 %254, 18 - %256 = add nuw nsw i64 %254, 19 - %257 = getelementptr inbounds nuw float, ptr %199, i64 %256 - %258 = load float, ptr %257, align 4 - %gep.i = getelementptr inbounds nuw float, ptr %invariant.gep.i, i64 %239 - store float %258, ptr %gep.i, align 4 - %259 = getelementptr inbounds nuw float, ptr %203, i64 %256 - %260 = load float, ptr %259, align 4 - %261 = getelementptr inbounds nuw i8, ptr %240, i64 260 - store float %260, ptr %261, align 4 - %262 = getelementptr inbounds nuw float, ptr %199, i64 %255 - %263 = load float, ptr %262, align 4 - %264 = getelementptr i8, ptr %240, i64 -248 - store float %263, ptr %264, align 4 - %265 = getelementptr inbounds nuw float, ptr %203, i64 %255 - %266 = load float, ptr %265, align 4 - %267 = getelementptr i8, ptr %240, i64 -244 - store float %266, ptr %267, align 4 - %268 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 4 - %269 = load float, ptr %.0460461.i, align 4 - %270 = insertelement <4 x float> poison, float %269, i64 0 - %271 = shufflevector <4 x float> %270, <4 x float> poison, <4 x i32> zeroinitializer - %272 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 8 - %273 = load float, ptr %268, align 4 - %274 = insertelement <4 x float> poison, float %273, i64 0 - %275 = shufflevector <4 x float> %274, <4 x float> poison, <4 x i32> zeroinitializer - %276 = load <4 x float>, ptr %240, align 1 - %277 = getelementptr i8, ptr %240, i64 -3840 - %278 = load <4 x float>, ptr %277, align 1 - %279 = fmul <4 x float> %276, %275 - %280 = fmul <4 x float> %271, %278 - %281 = fadd <4 x float> %279, %280 - %282 = fmul <4 x float> %276, %271 - %283 = fmul <4 x float> %278, %275 - %284 = fsub <4 x float> %282, %283 - %285 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 12 - %286 = load float, ptr %272, align 4 - %287 = insertelement <4 x float> poison, float %286, i64 0 - %288 = shufflevector <4 x float> %287, <4 x float> poison, <4 x i32> zeroinitializer - %289 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 16 - %290 = load float, ptr %285, align 4 - %291 = insertelement <4 x float> poison, float %290, i64 0 - %292 = shufflevector <4 x float> %291, <4 x float> poison, <4 x i32> zeroinitializer - %293 = getelementptr i8, ptr %240, i64 -256 - %294 = load <4 x float>, ptr %293, align 1 - %295 = getelementptr i8, ptr %240, i64 -3584 - %296 = load <4 x float>, ptr %295, align 1 - %297 = fmul <4 x float> %294, %292 - %298 = fmul <4 x float> %288, %296 - %299 = fadd <4 x float> %297, %298 - %300 = fadd <4 x float> %281, %299 - %301 = fmul <4 x float> %296, %292 - %302 = fmul <4 x float> %294, %288 - %303 = fsub <4 x float> %301, %302 - %304 = fadd <4 x float> %284, %303 - %305 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 20 - %306 = load float, ptr %289, align 4 - %307 = insertelement <4 x float> poison, float %306, i64 0 - %308 = shufflevector <4 x float> %307, <4 x float> poison, <4 x i32> zeroinitializer - %309 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 24 - %310 = load float, ptr %305, align 4 - %311 = insertelement <4 x float> poison, float %310, i64 0 - %312 = shufflevector <4 x float> %311, <4 x float> poison, <4 x i32> zeroinitializer - %313 = getelementptr i8, ptr %240, i64 -512 - %314 = load <4 x float>, ptr %313, align 1 - %315 = getelementptr i8, ptr %240, i64 -3328 - %316 = load <4 x float>, ptr %315, align 1 - %317 = fmul <4 x float> %314, %312 - %318 = fmul <4 x float> %308, %316 - %319 = fadd <4 x float> %317, %318 - %320 = fadd <4 x float> %300, %319 - %321 = fmul <4 x float> %314, %308 - %322 = fmul <4 x float> %316, %312 - %323 = fsub <4 x float> %321, %322 - %324 = fadd <4 x float> %304, %323 - %325 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 28 - %326 = load float, ptr %309, align 4 - %327 = insertelement <4 x float> poison, float %326, i64 0 - %328 = shufflevector <4 x float> %327, <4 x float> poison, <4 x i32> zeroinitializer - %329 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 32 - %330 = load float, ptr %325, align 4 - %331 = insertelement <4 x float> poison, float %330, i64 0 - %332 = shufflevector <4 x float> %331, <4 x float> poison, <4 x i32> zeroinitializer - %333 = getelementptr i8, ptr %240, i64 -768 - %334 = load <4 x float>, ptr %333, align 1 - %335 = getelementptr i8, ptr %240, i64 -3072 - %336 = load <4 x float>, ptr %335, align 1 - %337 = fmul <4 x float> %334, %332 - %338 = fmul <4 x float> %328, %336 - %339 = fadd <4 x float> %337, %338 - %340 = fadd <4 x float> %320, %339 - %341 = fmul <4 x float> %336, %332 - %342 = fmul <4 x float> %334, %328 - %343 = fsub <4 x float> %341, %342 - %344 = fadd <4 x float> %324, %343 - %345 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 36 - %346 = load float, ptr %329, align 4 - %347 = insertelement <4 x float> poison, float %346, i64 0 - %348 = shufflevector <4 x float> %347, <4 x float> poison, <4 x i32> zeroinitializer - %349 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 40 - %350 = load float, ptr %345, align 4 - %351 = insertelement <4 x float> poison, float %350, i64 0 - %352 = shufflevector <4 x float> %351, <4 x float> poison, <4 x i32> zeroinitializer - %353 = getelementptr i8, ptr %240, i64 -1024 - %354 = load <4 x float>, ptr %353, align 1 - %355 = getelementptr i8, ptr %240, i64 -2816 - %356 = load <4 x float>, ptr %355, align 1 - %357 = fmul <4 x float> %354, %352 - %358 = fmul <4 x float> %348, %356 - %359 = fadd <4 x float> %357, %358 - %360 = fadd <4 x float> %340, %359 - %361 = fmul <4 x float> %354, %348 - %362 = fmul <4 x float> %356, %352 - %363 = fsub <4 x float> %361, %362 - %364 = fadd <4 x float> %344, %363 - %365 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 44 - %366 = load float, ptr %349, align 4 - %367 = insertelement <4 x float> poison, float %366, i64 0 - %368 = shufflevector <4 x float> %367, <4 x float> poison, <4 x i32> zeroinitializer - %369 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 48 - %370 = load float, ptr %365, align 4 - %371 = insertelement <4 x float> poison, float %370, i64 0 - %372 = shufflevector <4 x float> %371, <4 x float> poison, <4 x i32> zeroinitializer - %373 = getelementptr i8, ptr %240, i64 -1280 - %374 = load <4 x float>, ptr %373, align 1 - %375 = getelementptr i8, ptr %240, i64 -2560 - %376 = load <4 x float>, ptr %375, align 1 - %377 = fmul <4 x float> %374, %372 - %378 = fmul <4 x float> %368, %376 - %379 = fadd <4 x float> %377, %378 - %380 = fadd <4 x float> %360, %379 - %381 = fmul <4 x float> %376, %372 - %382 = fmul <4 x float> %374, %368 - %383 = fsub <4 x float> %381, %382 - %384 = fadd <4 x float> %364, %383 - %385 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 52 - %386 = load float, ptr %369, align 4 - %387 = insertelement <4 x float> poison, float %386, i64 0 - %388 = shufflevector <4 x float> %387, <4 x float> poison, <4 x i32> zeroinitializer - %389 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 56 - %390 = load float, ptr %385, align 4 - %391 = insertelement <4 x float> poison, float %390, i64 0 - %392 = shufflevector <4 x float> %391, <4 x float> poison, <4 x i32> zeroinitializer - %393 = getelementptr i8, ptr %240, i64 -1536 - %394 = load <4 x float>, ptr %393, align 1 - %395 = getelementptr i8, ptr %240, i64 -2304 - %396 = load <4 x float>, ptr %395, align 1 - %397 = fmul <4 x float> %394, %392 - %398 = fmul <4 x float> %388, %396 - %399 = fadd <4 x float> %397, %398 - %400 = fadd <4 x float> %380, %399 - %401 = fmul <4 x float> %394, %388 - %402 = fmul <4 x float> %396, %392 - %403 = fsub <4 x float> %401, %402 - %404 = fadd <4 x float> %384, %403 - %405 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 60 - %406 = load float, ptr %389, align 4 - %407 = insertelement <4 x float> poison, float %406, i64 0 - %408 = shufflevector <4 x float> %407, <4 x float> poison, <4 x i32> zeroinitializer - %409 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 64 - %410 = load float, ptr %405, align 4 - %411 = insertelement <4 x float> poison, float %410, i64 0 - %412 = shufflevector <4 x float> %411, <4 x float> poison, <4 x i32> zeroinitializer - %413 = getelementptr i8, ptr %240, i64 -1792 - %414 = load <4 x float>, ptr %413, align 1 - %415 = getelementptr i8, ptr %240, i64 -2048 - %416 = load <4 x float>, ptr %415, align 1 - %417 = fmul <4 x float> %414, %412 - %418 = fmul <4 x float> %408, %416 - %419 = fadd <4 x float> %417, %418 - %420 = fadd <4 x float> %400, %419 - %421 = fmul <4 x float> %416, %412 - %422 = fmul <4 x float> %414, %408 - %423 = fsub <4 x float> %421, %422 - %424 = fadd <4 x float> %404, %423 - %425 = tail call <4 x float> @llvm.x86.sse.min.ps(<4 x float> %424, <4 x float> splat (float 3.276700e+04)) - %426 = tail call <4 x float> @llvm.x86.sse.max.ps(<4 x float> %425, <4 x float> splat (float -3.276800e+04)) - %427 = tail call <4 x i32> @llvm.x86.sse2.cvtps2dq(<4 x float> %426) - %428 = tail call <4 x float> @llvm.x86.sse.min.ps(<4 x float> %420, <4 x float> splat (float 3.276700e+04)) - %429 = tail call <4 x float> @llvm.x86.sse.max.ps(<4 x float> %428, <4 x float> splat (float -3.276800e+04)) - %430 = tail call <4 x i32> @llvm.x86.sse2.cvtps2dq(<4 x float> %429) - %431 = tail call <8 x i16> @llvm.x86.sse2.packssdw.128(<4 x i32> %427, <4 x i32> %430) - %432 = extractelement <8 x i16> %431, i64 1 - %433 = sub nuw nsw i64 15, %indvars.iv.i31 - %434 = mul nsw i64 %433, %197 - %435 = getelementptr inbounds i16, ptr %204, i64 %434 - store i16 %432, ptr %435, align 2 - %436 = extractelement <8 x i16> %431, i64 5 - %437 = add nuw nsw i64 %indvars.iv.i31, 17 - %438 = mul nsw i64 %437, %197 - %439 = getelementptr inbounds i16, ptr %204, i64 %438 - store i16 %436, ptr %439, align 2 - %440 = extractelement <8 x i16> %431, i64 0 - %441 = getelementptr inbounds i16, ptr %201, i64 %434 - store i16 %440, ptr %441, align 2 - %442 = extractelement <8 x i16> %431, i64 4 - %443 = getelementptr inbounds i16, ptr %201, i64 %438 - store i16 %442, ptr %443, align 2 - %444 = extractelement <8 x i16> %431, i64 3 - %445 = sub nuw nsw i64 47, %indvars.iv.i31 - %446 = mul nsw i64 %445, %197 - %447 = getelementptr inbounds i16, ptr %204, i64 %446 - store i16 %444, ptr %447, align 2 - %448 = extractelement <8 x i16> %431, i64 7 - %449 = add nuw nsw i64 %indvars.iv.i31, 49 - %450 = mul nsw i64 %449, %197 - %451 = getelementptr inbounds i16, ptr %204, i64 %450 - store i16 %448, ptr %451, align 2 - %452 = extractelement <8 x i16> %431, i64 2 - %453 = getelementptr inbounds i16, ptr %201, i64 %446 - store i16 %452, ptr %453, align 2 - %454 = extractelement <8 x i16> %431, i64 6 - %455 = getelementptr inbounds i16, ptr %201, i64 %450 - store i16 %454, ptr %455, align 2 +235: ; preds = %235, %199 + %indvars.iv.i31 = phi i64 [ 14, %199 ], [ %indvars.iv.next.i32, %235 ] + %.0460461.i = phi ptr [ @drmp3d_synth.g_win, %199 ], [ %410, %235 ] + %236 = sub nuw nsw i64 31, %indvars.iv.i31 + %237 = mul nuw nsw i64 %236, 18 + %238 = getelementptr inbounds nuw float, ptr %200, i64 %237 + %239 = load float, ptr %238, align 4 + %240 = shl nsw i64 %indvars.iv.i31, 2 + %241 = getelementptr inbounds nuw float, ptr %206, i64 %240 + store float %239, ptr %241, align 4 + %242 = getelementptr inbounds nuw float, ptr %204, i64 %237 + %243 = load float, ptr %242, align 4 + %244 = or disjoint i64 %240, 1 + %245 = getelementptr inbounds nuw float, ptr %206, i64 %244 + store float %243, ptr %245, align 4 + %246 = or disjoint i64 %237, 1 + %247 = getelementptr inbounds nuw float, ptr %200, i64 %246 + %248 = load float, ptr %247, align 4 + %249 = or disjoint i64 %240, 2 + %250 = getelementptr inbounds nuw float, ptr %206, i64 %249 + store float %248, ptr %250, align 4 + %251 = getelementptr inbounds nuw float, ptr %204, i64 %246 + %252 = load float, ptr %251, align 4 + %253 = or disjoint i64 %240, 3 + %254 = getelementptr inbounds nuw float, ptr %206, i64 %253 + store float %252, ptr %254, align 4 + %255 = mul nuw nsw i64 %indvars.iv.i31, 18 + %256 = add nuw nsw i64 %255, 18 + %257 = add nuw nsw i64 %255, 19 + %258 = getelementptr inbounds nuw float, ptr %200, i64 %257 + %259 = load float, ptr %258, align 4 + %gep.i = getelementptr inbounds nuw float, ptr %invariant.gep.i, i64 %240 + store float %259, ptr %gep.i, align 4 + %260 = getelementptr inbounds nuw float, ptr %204, i64 %257 + %261 = load float, ptr %260, align 4 + %262 = getelementptr inbounds nuw i8, ptr %241, i64 260 + store float %261, ptr %262, align 4 + %263 = getelementptr inbounds nuw float, ptr %200, i64 %256 + %264 = load float, ptr %263, align 4 + %265 = getelementptr i8, ptr %241, i64 -248 + store float %264, ptr %265, align 4 + %266 = getelementptr inbounds nuw float, ptr %204, i64 %256 + %267 = load float, ptr %266, align 4 + %268 = getelementptr i8, ptr %241, i64 -244 + store float %267, ptr %268, align 4 + %269 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 4 + %270 = load float, ptr %.0460461.i, align 4 + %271 = insertelement <4 x float> poison, float %270, i64 0 + %272 = shufflevector <4 x float> %271, <4 x float> poison, <4 x i32> zeroinitializer + %273 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 8 + %274 = load float, ptr %269, align 4 + %275 = insertelement <4 x float> poison, float %274, i64 0 + %276 = shufflevector <4 x float> %275, <4 x float> poison, <4 x i32> zeroinitializer + %277 = load <4 x float>, ptr %241, align 1 + %278 = getelementptr i8, ptr %241, i64 -3840 + %279 = load <4 x float>, ptr %278, align 1 + %280 = fmul <4 x float> %277, %276 + %281 = fmul <4 x float> %272, %279 + %282 = fadd <4 x float> %280, %281 + %283 = fmul <4 x float> %277, %272 + %284 = fmul <4 x float> %279, %276 + %285 = fsub <4 x float> %283, %284 + %286 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 12 + %287 = load float, ptr %273, align 4 + %288 = insertelement <4 x float> poison, float %287, i64 0 + %289 = shufflevector <4 x float> %288, <4 x float> poison, <4 x i32> zeroinitializer + %290 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 16 + %291 = load float, ptr %286, align 4 + %292 = insertelement <4 x float> poison, float %291, i64 0 + %293 = shufflevector <4 x float> %292, <4 x float> poison, <4 x i32> zeroinitializer + %294 = getelementptr i8, ptr %241, i64 -256 + %295 = load <4 x float>, ptr %294, align 1 + %296 = getelementptr i8, ptr %241, i64 -3584 + %297 = load <4 x float>, ptr %296, align 1 + %298 = fmul <4 x float> %295, %293 + %299 = fmul <4 x float> %289, %297 + %300 = fadd <4 x float> %298, %299 + %301 = fadd <4 x float> %282, %300 + %302 = fmul <4 x float> %297, %293 + %303 = fmul <4 x float> %295, %289 + %304 = fsub <4 x float> %302, %303 + %305 = fadd <4 x float> %285, %304 + %306 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 20 + %307 = load float, ptr %290, align 4 + %308 = insertelement <4 x float> poison, float %307, i64 0 + %309 = shufflevector <4 x float> %308, <4 x float> poison, <4 x i32> zeroinitializer + %310 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 24 + %311 = load float, ptr %306, align 4 + %312 = insertelement <4 x float> poison, float %311, i64 0 + %313 = shufflevector <4 x float> %312, <4 x float> poison, <4 x i32> zeroinitializer + %314 = getelementptr i8, ptr %241, i64 -512 + %315 = load <4 x float>, ptr %314, align 1 + %316 = getelementptr i8, ptr %241, i64 -3328 + %317 = load <4 x float>, ptr %316, align 1 + %318 = fmul <4 x float> %315, %313 + %319 = fmul <4 x float> %309, %317 + %320 = fadd <4 x float> %318, %319 + %321 = fadd <4 x float> %301, %320 + %322 = fmul <4 x float> %315, %309 + %323 = fmul <4 x float> %317, %313 + %324 = fsub <4 x float> %322, %323 + %325 = fadd <4 x float> %305, %324 + %326 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 28 + %327 = load float, ptr %310, align 4 + %328 = insertelement <4 x float> poison, float %327, i64 0 + %329 = shufflevector <4 x float> %328, <4 x float> poison, <4 x i32> zeroinitializer + %330 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 32 + %331 = load float, ptr %326, align 4 + %332 = insertelement <4 x float> poison, float %331, i64 0 + %333 = shufflevector <4 x float> %332, <4 x float> poison, <4 x i32> zeroinitializer + %334 = getelementptr i8, ptr %241, i64 -768 + %335 = load <4 x float>, ptr %334, align 1 + %336 = getelementptr i8, ptr %241, i64 -3072 + %337 = load <4 x float>, ptr %336, align 1 + %338 = fmul <4 x float> %335, %333 + %339 = fmul <4 x float> %329, %337 + %340 = fadd <4 x float> %338, %339 + %341 = fadd <4 x float> %321, %340 + %342 = fmul <4 x float> %337, %333 + %343 = fmul <4 x float> %335, %329 + %344 = fsub <4 x float> %342, %343 + %345 = fadd <4 x float> %325, %344 + %346 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 36 + %347 = load float, ptr %330, align 4 + %348 = insertelement <4 x float> poison, float %347, i64 0 + %349 = shufflevector <4 x float> %348, <4 x float> poison, <4 x i32> zeroinitializer + %350 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 40 + %351 = load float, ptr %346, align 4 + %352 = insertelement <4 x float> poison, float %351, i64 0 + %353 = shufflevector <4 x float> %352, <4 x float> poison, <4 x i32> zeroinitializer + %354 = getelementptr i8, ptr %241, i64 -1024 + %355 = load <4 x float>, ptr %354, align 1 + %356 = getelementptr i8, ptr %241, i64 -2816 + %357 = load <4 x float>, ptr %356, align 1 + %358 = fmul <4 x float> %355, %353 + %359 = fmul <4 x float> %349, %357 + %360 = fadd <4 x float> %358, %359 + %361 = fadd <4 x float> %341, %360 + %362 = fmul <4 x float> %355, %349 + %363 = fmul <4 x float> %357, %353 + %364 = fsub <4 x float> %362, %363 + %365 = fadd <4 x float> %345, %364 + %366 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 44 + %367 = load float, ptr %350, align 4 + %368 = insertelement <4 x float> poison, float %367, i64 0 + %369 = shufflevector <4 x float> %368, <4 x float> poison, <4 x i32> zeroinitializer + %370 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 48 + %371 = load float, ptr %366, align 4 + %372 = insertelement <4 x float> poison, float %371, i64 0 + %373 = shufflevector <4 x float> %372, <4 x float> poison, <4 x i32> zeroinitializer + %374 = getelementptr i8, ptr %241, i64 -1280 + %375 = load <4 x float>, ptr %374, align 1 + %376 = getelementptr i8, ptr %241, i64 -2560 + %377 = load <4 x float>, ptr %376, align 1 + %378 = fmul <4 x float> %375, %373 + %379 = fmul <4 x float> %369, %377 + %380 = fadd <4 x float> %378, %379 + %381 = fadd <4 x float> %361, %380 + %382 = fmul <4 x float> %377, %373 + %383 = fmul <4 x float> %375, %369 + %384 = fsub <4 x float> %382, %383 + %385 = fadd <4 x float> %365, %384 + %386 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 52 + %387 = load float, ptr %370, align 4 + %388 = insertelement <4 x float> poison, float %387, i64 0 + %389 = shufflevector <4 x float> %388, <4 x float> poison, <4 x i32> zeroinitializer + %390 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 56 + %391 = load float, ptr %386, align 4 + %392 = insertelement <4 x float> poison, float %391, i64 0 + %393 = shufflevector <4 x float> %392, <4 x float> poison, <4 x i32> zeroinitializer + %394 = getelementptr i8, ptr %241, i64 -1536 + %395 = load <4 x float>, ptr %394, align 1 + %396 = getelementptr i8, ptr %241, i64 -2304 + %397 = load <4 x float>, ptr %396, align 1 + %398 = fmul <4 x float> %395, %393 + %399 = fmul <4 x float> %389, %397 + %400 = fadd <4 x float> %398, %399 + %401 = fadd <4 x float> %381, %400 + %402 = fmul <4 x float> %395, %389 + %403 = fmul <4 x float> %397, %393 + %404 = fsub <4 x float> %402, %403 + %405 = fadd <4 x float> %385, %404 + %406 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 60 + %407 = load float, ptr %390, align 4 + %408 = insertelement <4 x float> poison, float %407, i64 0 + %409 = shufflevector <4 x float> %408, <4 x float> poison, <4 x i32> zeroinitializer + %410 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 64 + %411 = load float, ptr %406, align 4 + %412 = insertelement <4 x float> poison, float %411, i64 0 + %413 = shufflevector <4 x float> %412, <4 x float> poison, <4 x i32> zeroinitializer + %414 = getelementptr i8, ptr %241, i64 -1792 + %415 = load <4 x float>, ptr %414, align 1 + %416 = getelementptr i8, ptr %241, i64 -2048 + %417 = load <4 x float>, ptr %416, align 1 + %418 = fmul <4 x float> %415, %413 + %419 = fmul <4 x float> %409, %417 + %420 = fadd <4 x float> %418, %419 + %421 = fadd <4 x float> %401, %420 + %422 = fmul <4 x float> %417, %413 + %423 = fmul <4 x float> %415, %409 + %424 = fsub <4 x float> %422, %423 + %425 = fadd <4 x float> %405, %424 + %426 = tail call <4 x float> @llvm.x86.sse.min.ps(<4 x float> %425, <4 x float> splat (float 3.276700e+04)) + %427 = tail call <4 x float> @llvm.x86.sse.max.ps(<4 x float> %426, <4 x float> splat (float -3.276800e+04)) + %428 = tail call <4 x i32> @llvm.x86.sse2.cvtps2dq(<4 x float> %427) + %429 = tail call <4 x float> @llvm.x86.sse.min.ps(<4 x float> %421, <4 x float> splat (float 3.276700e+04)) + %430 = tail call <4 x float> @llvm.x86.sse.max.ps(<4 x float> %429, <4 x float> splat (float -3.276800e+04)) + %431 = tail call <4 x i32> @llvm.x86.sse2.cvtps2dq(<4 x float> %430) + %432 = tail call <8 x i16> @llvm.x86.sse2.packssdw.128(<4 x i32> %428, <4 x i32> %431) + %433 = extractelement <8 x i16> %432, i64 1 + %434 = sub nuw nsw i64 15, %indvars.iv.i31 + %435 = mul nsw i64 %434, %197 + %436 = getelementptr inbounds i16, ptr %205, i64 %435 + store i16 %433, ptr %436, align 2 + %437 = extractelement <8 x i16> %432, i64 5 + %438 = add nuw nsw i64 %indvars.iv.i31, 17 + %439 = mul nsw i64 %438, %197 + %440 = getelementptr inbounds i16, ptr %205, i64 %439 + store i16 %437, ptr %440, align 2 + %441 = extractelement <8 x i16> %432, i64 0 + %442 = getelementptr inbounds i16, ptr %202, i64 %435 + store i16 %441, ptr %442, align 2 + %443 = extractelement <8 x i16> %432, i64 4 + %444 = getelementptr inbounds i16, ptr %202, i64 %439 + store i16 %443, ptr %444, align 2 + %445 = extractelement <8 x i16> %432, i64 3 + %446 = sub nuw nsw i64 47, %indvars.iv.i31 + %447 = mul nsw i64 %446, %197 + %448 = getelementptr inbounds i16, ptr %205, i64 %447 + store i16 %445, ptr %448, align 2 + %449 = extractelement <8 x i16> %432, i64 7 + %450 = add nuw nsw i64 %indvars.iv.i31, 49 + %451 = mul nsw i64 %450, %197 + %452 = getelementptr inbounds i16, ptr %205, i64 %451 + store i16 %449, ptr %452, align 2 + %453 = extractelement <8 x i16> %432, i64 2 + %454 = getelementptr inbounds i16, ptr %202, i64 %447 + store i16 %453, ptr %454, align 2 + %455 = extractelement <8 x i16> %432, i64 6 + %456 = getelementptr inbounds i16, ptr %202, i64 %451 + store i16 %455, ptr %456, align 2 %indvars.iv.next.i32 = add nsw i64 %indvars.iv.i31, -1 %.not.i = icmp eq i64 %indvars.iv.i31, 0 - br i1 %.not.i, label %drmp3d_synth.exit, label %234 + br i1 %.not.i, label %drmp3d_synth.exit, label %235 -drmp3d_synth.exit: ; preds = %234 +drmp3d_synth.exit: ; preds = %235 %indvars.iv.next40 = add nuw nsw i64 %indvars.iv39, 2 - %456 = icmp samesign ult i64 %indvars.iv.next40, %.pre-phi - br i1 %456, label %198, label %457 - -457: ; preds = %drmp3d_synth.exit - %458 = icmp eq i32 %3, 1 - %459 = shl nuw nsw i32 %2, 6 - %460 = zext nneg i32 %459 to i64 - %invariant.gep = getelementptr inbounds nuw float, ptr %5, i64 %460 - br i1 %458, label %.preheader, label %464 - -.preheader: ; preds = %457, %.preheader - %indvars.iv42 = phi i64 [ %indvars.iv.next43, %.preheader ], [ 0, %457 ] + %457 = icmp samesign ult i64 %indvars.iv.next40, %198 + br i1 %457, label %199, label %458 + +458: ; preds = %drmp3d_synth.exit + %459 = icmp eq i32 %3, 1 + %460 = shl nuw nsw i32 %2, 6 + %461 = zext nneg i32 %460 to i64 + %invariant.gep = getelementptr inbounds nuw float, ptr %5, i64 %461 + br i1 %459, label %.preheader, label %465 + +.preheader: ; preds = %458, %.preheader + %indvars.iv42 = phi i64 [ %indvars.iv.next43, %.preheader ], [ 0, %458 ] %gep = getelementptr inbounds nuw float, ptr %invariant.gep, i64 %indvars.iv42 - %461 = load float, ptr %gep, align 4 - %462 = getelementptr inbounds nuw float, ptr %0, i64 %indvars.iv42 - store float %461, ptr %462, align 4 + %462 = load float, ptr %gep, align 4 + %463 = getelementptr inbounds nuw float, ptr %0, i64 %indvars.iv42 + store float %462, ptr %463, align 4 %indvars.iv.next43 = add nuw nsw i64 %indvars.iv42, 2 - %463 = icmp samesign ult i64 %indvars.iv42, 958 - br i1 %463, label %.preheader, label %.loopexit + %464 = icmp samesign ult i64 %indvars.iv42, 958 + br i1 %464, label %.preheader, label %.loopexit -464: ; preds = %457 +465: ; preds = %458 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(3840) %0, ptr noundef nonnull align 4 dereferenceable(3840) %invariant.gep, i64 3840, i1 false) br label %.loopexit -.loopexit: ; preds = %.preheader, %464 +.loopexit: ; preds = %.preheader, %465 ret void } From 98383e714f78839b7f8a6576b2548d6815081c74 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 4 Feb 2025 22:02:29 +0000 Subject: [PATCH 3/3] pre-commit: Remap --- bench/abc/optimized/mpmTruth.ll | 24 +- .../optimized/DeflateDecompressor.ll | 364 +++---- bench/darktable/optimized/IiqDecoder.ll | 282 +++--- .../optimized/OlympusDecompressor.ll | 762 +++++++------- .../darktable/optimized/PentaxDecompressor.ll | 342 +++---- bench/darktable/optimized/RafDecoder.ll | 372 +++---- .../optimized/SamsungV0Decompressor.ll | 604 +++++------ .../optimized/SamsungV1Decompressor.ll | 246 ++--- bench/gromacs/optimized/lmmin.ll | 934 +++++++++--------- bench/icu/optimized/rematch.ll | 198 ++-- bench/llvm/optimized/TargetLoweringBase.ll | 580 +++++------ bench/luajit/optimized/minilua.ll | 12 +- bench/miniaudio/optimized/unity.ll | 360 +++---- .../opencv/optimized/fast_window_binarizer.ll | 268 ++--- bench/openjdk/optimized/sharedRuntimeTrig.ll | 46 +- .../openjdk/optimized/sharedRuntime_x86_64.ll | 254 ++--- .../optimized/libcrypto-lib-rsa_pk1.ll | 12 +- bench/postgres/optimized/zic.ll | 588 +++++------ bench/qemu/optimized/block_qcow2-cluster.ll | 16 +- bench/raylib/optimized/raudio.ll | 624 ++++++------ 20 files changed, 3444 insertions(+), 3444 deletions(-) diff --git a/bench/abc/optimized/mpmTruth.ll b/bench/abc/optimized/mpmTruth.ll index 2cbc5c027c2..7ef7cf81bc3 100644 --- a/bench/abc/optimized/mpmTruth.ll +++ b/bench/abc/optimized/mpmTruth.ll @@ -110,12 +110,12 @@ define range(i32 0, 2) i32 @Mpm_CutComputeTruth(ptr noundef %0, ptr noundef capt %84 = icmp samesign ugt i64 %indvars.iv.next.i.i, %77 br i1 %84, label %85, label %87 -85: ; preds = %83 +86: ; preds = %83 %86 = trunc nsw i64 %indvars.iv.next.i.i to i32 call fastcc void @Abc_TtSwapVars(ptr noundef nonnull %11, i32 noundef %16, i32 noundef %.017.i.i, i32 noundef %86) br label %87 -87: ; preds = %85, %83 +87: ; preds = %86, %83 %88 = add nsw i32 %.017.i.i, -1 br label %89 @@ -156,12 +156,12 @@ Mpm_TruthStretch.exit.i: ; preds = %89, %50 %109 = icmp samesign ugt i64 %indvars.iv.next.i53.i, %102 br i1 %109, label %110, label %112 -110: ; preds = %108 +111: ; preds = %108 %111 = trunc nsw i64 %indvars.iv.next.i53.i to i32 call fastcc void @Abc_TtSwapVars(ptr noundef nonnull %12, i32 noundef %16, i32 noundef %.017.i52.i, i32 noundef %111) br label %112 -112: ; preds = %110, %108 +112: ; preds = %111, %108 %113 = add nsw i32 %.017.i52.i, -1 br label %114 @@ -227,12 +227,12 @@ Mpm_TruthStretch.exit55.i: ; preds = %114, %Mpm_TruthStre %154 = icmp samesign ugt i64 %indvars.iv.next.i59.i, %147 br i1 %154, label %155, label %157 -155: ; preds = %153 +156: ; preds = %153 %156 = trunc nsw i64 %indvars.iv.next.i59.i to i32 call fastcc void @Abc_TtSwapVars(ptr noundef nonnull %13, i32 noundef %16, i32 noundef %.017.i58.i, i32 noundef %156) br label %157 -157: ; preds = %155, %153 +157: ; preds = %156, %153 %158 = add nsw i32 %.017.i58.i, -1 br label %159 @@ -580,12 +580,12 @@ Abc_TtCopy.exit86.i: ; preds = %.lr.ph.i75.i, %.lr. %318 = icmp samesign ugt i64 %indvars.iv.next.i89.i, %311 br i1 %318, label %319, label %321 -319: ; preds = %317 +320: ; preds = %317 %320 = trunc nsw i64 %indvars.iv.next.i89.i to i32 tail call fastcc void @Abc_TtSwapVars(ptr noundef nonnull %270, i32 noundef %16, i32 noundef %.017.i.i36, i32 noundef %320) br label %321 -321: ; preds = %319, %317 +321: ; preds = %320, %317 %322 = add nsw i32 %.017.i.i36, -1 br label %323 @@ -635,12 +635,12 @@ Mpm_TruthStretch.exit.i21: ; preds = %Mpm_TruthStretch.ex %347 = icmp samesign ugt i64 %indvars.iv.next.i93.i, %340 br i1 %347, label %348, label %350 -348: ; preds = %346 +349: ; preds = %346 %349 = trunc nsw i64 %indvars.iv.next.i93.i to i32 tail call fastcc void @Abc_TtSwapVars(ptr noundef nonnull %285, i32 noundef %328, i32 noundef %.017.i92.i, i32 noundef %349) br label %350 -350: ; preds = %348, %346 +350: ; preds = %349, %346 %351 = add nsw i32 %.017.i92.i, -1 br label %352 @@ -755,12 +755,12 @@ Abc_TtCopy.exit111.i: ; preds = %.lr.ph.i100.i, %.lr %410 = icmp samesign ugt i64 %indvars.iv.next.i115.i, %403 br i1 %410, label %411, label %413 -411: ; preds = %409 +412: ; preds = %409 %412 = trunc nsw i64 %indvars.iv.next.i115.i to i32 tail call fastcc void @Abc_TtSwapVars(ptr noundef nonnull %376, i32 noundef %390, i32 noundef %.017.i114.i, i32 noundef %412) br label %413 -413: ; preds = %411, %409 +413: ; preds = %412, %409 %414 = add nsw i32 %.017.i114.i, -1 br label %415 diff --git a/bench/darktable/optimized/DeflateDecompressor.ll b/bench/darktable/optimized/DeflateDecompressor.ll index fdf3b2cd6de..592225cccfa 100644 --- a/bench/darktable/optimized/DeflateDecompressor.ll +++ b/bench/darktable/optimized/DeflateDecompressor.ll @@ -178,9 +178,9 @@ define hidden void @_ZN8rawspeed19DeflateDecompressor6decodeEPSt10unique_ptrIA_h %7 = alloca %"struct.std::array.61", align 4 %8 = alloca %"struct.std::array.60", align 2 %9 = alloca i64, align 8 - %.sroa.0157.0.extract.trunc = trunc i64 %2 to i32 - %.sroa.7163.0.extract.shift = lshr i64 %2, 32 - %.sroa.7163.0.extract.trunc = trunc nuw i64 %.sroa.7163.0.extract.shift to i32 + %.sroa.0158.0.extract.trunc = trunc i64 %2 to i32 + %.sroa.7164.0.extract.shift = lshr i64 %2, 32 + %.sroa.7164.0.extract.trunc = trunc nuw i64 %.sroa.7164.0.extract.shift to i32 %.sroa.044.0.extract.trunc = trunc i64 %3 to i32 %.sroa.245.0.extract.shift = lshr i64 %3, 32 %.sroa.245.0.extract.trunc = trunc nuw i64 %.sroa.245.0.extract.shift to i32 @@ -196,16 +196,16 @@ define hidden void @_ZN8rawspeed19DeflateDecompressor6decodeEPSt10unique_ptrIA_h tail call void @llvm.assume(i1 %14) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #16 %15 = zext nneg i32 %12 to i64 - %16 = tail call i32 @llvm.abs.i32(i32 %.sroa.0157.0.extract.trunc, i1 false) + %16 = tail call i32 @llvm.abs.i32(i32 %.sroa.0158.0.extract.trunc, i1 false) %17 = zext i32 %16 to i64 - %18 = tail call i32 @llvm.abs.i32(i32 %.sroa.7163.0.extract.trunc, i1 false) + %18 = tail call i32 @llvm.abs.i32(i32 %.sroa.7164.0.extract.trunc, i1 false) %19 = zext i32 %18 to i64 %20 = mul nuw nsw i64 %19, %17 %21 = mul i64 %20, %15 store i64 %21, ptr %9, align 8, !tbaa !98 %22 = load ptr, ptr %1, align 8, !tbaa !6 - %.not183 = icmp eq ptr %22, null - br i1 %.not183, label %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit, label %24 + %.not184 = icmp eq ptr %22, null + br i1 %.not184, label %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit, label %24 _ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit: ; preds = %5 %23 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %21) #18 @@ -214,8 +214,8 @@ _ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit: ; preds = %5 24: ; preds = %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit, %5 %25 = phi ptr [ %23, %_ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit ], [ %22, %5 ] - %26 = mul nsw i32 %12, %.sroa.0157.0.extract.trunc - %27 = mul nuw nsw i32 %26, %.sroa.7163.0.extract.trunc + %26 = mul nsw i32 %12, %.sroa.0158.0.extract.trunc + %27 = mul nuw nsw i32 %26, %.sroa.7164.0.extract.trunc %28 = icmp ne i32 %26, 0 tail call void @llvm.assume(i1 %28) %29 = icmp sgt i32 %26, -1 @@ -284,8 +284,8 @@ _ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit: ; preds = %5 %71 = icmp samesign ugt i64 %3, 4294967295 %72 = xor i1 %71, %70 call void @llvm.assume(i1 %72) - %.not188 = icmp samesign ult i64 %3, 4294967296 - br i1 %.not188, label %._crit_edge, label %.lr.ph + %.not189 = icmp samesign ult i64 %3, 4294967296 + br i1 %.not189, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %39 %73 = mul nuw nsw i32 %53, %50 @@ -296,74 +296,74 @@ _ZNSt10unique_ptrIA_hSt14default_deleteIS0_EED2Ev.exit: ; preds = %5 %sext = shl i64 %2, 32 %78 = ashr exact i64 %sext, 32 %79 = and i64 %4, 2147483647 - %80 = zext nneg i32 %48 to i64 - %wide.trip.count.i79 = and i64 %3, 2147483647 - %81 = zext nneg i32 %50 to i64 - %82 = zext nneg i32 %53 to i64 - %83 = zext nneg i32 %73 to i64 - %84 = zext i32 %27 to i64 + %zext.i79 = zext nneg i32 %48 to i64 + %wide.trip.count.i80 = and i64 %3, 2147483647 + %80 = zext nneg i32 %50 to i64 + %81 = zext nneg i32 %53 to i64 + %82 = zext nneg i32 %73 to i64 + %83 = zext i32 %27 to i64 %umax = call i32 @llvm.umax.i32(i32 %.sroa.245.0.extract.trunc, i32 1) %wide.trip.count = zext nneg i32 %umax to i64 call void @llvm.assume(i1 %76) call void @llvm.assume(i1 %77) - br label %85 + br label %84 ._crit_edge: ; preds = %_ZN8rawspeed12_GLOBAL__N_116decodeFPDeltaRowINS_13ieee_754_20088Binary16EEEvNS_10Array1DRefIKhEEiNS_17CroppedArray1DRefIfEE.exit, %39 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #16 ret void -85: ; preds = %.lr.ph, %_ZN8rawspeed12_GLOBAL__N_116decodeFPDeltaRowINS_13ieee_754_20088Binary16EEEvNS_10Array1DRefIKhEEiNS_17CroppedArray1DRefIfEE.exit +84: ; preds = %.lr.ph, %_ZN8rawspeed12_GLOBAL__N_116decodeFPDeltaRowINS_13ieee_754_20088Binary16EEEvNS_10Array1DRefIKhEEiNS_17CroppedArray1DRefIfEE.exit %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %_ZN8rawspeed12_GLOBAL__N_116decodeFPDeltaRowINS_13ieee_754_20088Binary16EEEvNS_10Array1DRefIKhEEiNS_17CroppedArray1DRefIfEE.exit ] - %86 = icmp samesign ult i64 %indvars.iv, %.sroa.7163.0.extract.shift - call void @llvm.assume(i1 %86) - %87 = mul nuw nsw i64 %indvars.iv, %75 - %88 = add nuw nsw i64 %87, %75 - %89 = icmp samesign ule i64 %88, %84 - call void @llvm.assume(i1 %89) - %90 = getelementptr inbounds nuw i8, ptr %25, i64 %87 - %91 = load i32, ptr %74, align 8, !tbaa !24 - %92 = icmp slt i32 %91, %26 - br i1 %92, label %.lr.ph.i, label %_ZN8rawspeed12_GLOBAL__N_116decodeDeltaBytesENS_10Array1DRefIhEEiii.exit - -.lr.ph.i: ; preds = %85 - %93 = zext nneg i32 %91 to i64 - %94 = icmp sgt i32 %91, -1 - call void @llvm.assume(i1 %94) - br label %95 - -95: ; preds = %95, %.lr.ph.i - %indvars.iv.i = phi i64 [ %93, %.lr.ph.i ], [ %indvars.iv.next.i, %95 ] - %96 = trunc nuw i64 %indvars.iv.i to i32 - %97 = icmp sgt i32 %26, %96 - call void @llvm.assume(i1 %97) - %98 = getelementptr inbounds nuw i8, ptr %90, i64 %indvars.iv.i - %99 = load i8, ptr %98, align 1, !tbaa !96 - %100 = sub nuw nsw i64 %indvars.iv.i, %93 - %101 = icmp samesign ult i64 %100, %75 - call void @llvm.assume(i1 %101) - %102 = and i64 %100, 2147483648 - %103 = icmp eq i64 %102, 0 - call void @llvm.assume(i1 %103) - %104 = getelementptr inbounds nuw i8, ptr %90, i64 %100 - %105 = load i8, ptr %104, align 1, !tbaa !96 - %106 = add i8 %105, %99 - store i8 %106, ptr %98, align 1, !tbaa !96 + %85 = icmp samesign ult i64 %indvars.iv, %.sroa.7164.0.extract.shift + call void @llvm.assume(i1 %85) + %86 = mul nuw nsw i64 %indvars.iv, %75 + %87 = add nuw nsw i64 %86, %75 + %88 = icmp samesign ule i64 %87, %83 + call void @llvm.assume(i1 %88) + %89 = getelementptr inbounds nuw i8, ptr %25, i64 %86 + %90 = load i32, ptr %74, align 8, !tbaa !24 + %91 = icmp slt i32 %90, %26 + br i1 %91, label %.lr.ph.i, label %_ZN8rawspeed12_GLOBAL__N_116decodeDeltaBytesENS_10Array1DRefIhEEiii.exit + +.lr.ph.i: ; preds = %84 + %92 = zext nneg i32 %90 to i64 + %93 = icmp sgt i32 %90, -1 + call void @llvm.assume(i1 %93) + br label %94 + +94: ; preds = %94, %.lr.ph.i + %indvars.iv.i = phi i64 [ %92, %.lr.ph.i ], [ %indvars.iv.next.i, %94 ] + %95 = trunc nuw i64 %indvars.iv.i to i32 + %96 = icmp sgt i32 %26, %95 + call void @llvm.assume(i1 %96) + %97 = getelementptr inbounds nuw i8, ptr %89, i64 %indvars.iv.i + %98 = load i8, ptr %97, align 1, !tbaa !96 + %99 = sub nuw nsw i64 %indvars.iv.i, %92 + %100 = icmp samesign ult i64 %99, %75 + call void @llvm.assume(i1 %100) + %101 = and i64 %99, 2147483648 + %102 = icmp eq i64 %101, 0 + call void @llvm.assume(i1 %102) + %103 = getelementptr inbounds nuw i8, ptr %89, i64 %99 + %104 = load i8, ptr %103, align 1, !tbaa !96 + %105 = add i8 %104, %98 + store i8 %105, ptr %97, align 1, !tbaa !96 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 - %107 = trunc nuw i64 %indvars.iv.next.i to i32 - %108 = icmp sgt i32 %26, %107 - br i1 %108, label %95, label %_ZN8rawspeed12_GLOBAL__N_116decodeDeltaBytesENS_10Array1DRefIhEEiii.exit, !llvm.loop !109 - -_ZN8rawspeed12_GLOBAL__N_116decodeDeltaBytesENS_10Array1DRefIhEEiii.exit: ; preds = %95, %85 - %109 = icmp samesign ult i64 %indvars.iv, %.sroa.245.0.extract.shift - call void @llvm.assume(i1 %109) - %110 = add nuw nsw i64 %indvars.iv, %.sroa.243.0.extract.shift - %111 = icmp samesign ult i64 %110, %81 - call void @llvm.assume(i1 %111) - %112 = mul nuw nsw i64 %110, %82 - %113 = add nuw nsw i64 %112, %80 - %114 = icmp samesign ule i64 %113, %83 - call void @llvm.assume(i1 %114) - %115 = getelementptr inbounds nuw float, ptr %43, i64 %112 + %106 = trunc nuw i64 %indvars.iv.next.i to i32 + %107 = icmp sgt i32 %26, %106 + br i1 %107, label %94, label %_ZN8rawspeed12_GLOBAL__N_116decodeDeltaBytesENS_10Array1DRefIhEEiii.exit, !llvm.loop !109 + +_ZN8rawspeed12_GLOBAL__N_116decodeDeltaBytesENS_10Array1DRefIhEEiii.exit: ; preds = %94, %84 + %108 = icmp samesign ult i64 %indvars.iv, %.sroa.245.0.extract.shift + call void @llvm.assume(i1 %108) + %109 = add nuw nsw i64 %indvars.iv, %.sroa.243.0.extract.shift + %110 = icmp samesign ult i64 %109, %80 + call void @llvm.assume(i1 %110) + %111 = mul nuw nsw i64 %109, %81 + %112 = add nuw nsw i64 %111, %zext.i79 + %113 = icmp samesign ule i64 %112, %82 + call void @llvm.assume(i1 %113) + %114 = getelementptr inbounds nuw float, ptr %43, i64 %111 switch i32 %12, label %default.unreachable [ i32 2, label %.lr.ph.i51 i32 3, label %.lr.ph.i59 @@ -373,173 +373,173 @@ _ZN8rawspeed12_GLOBAL__N_116decodeDeltaBytesENS_10Array1DRefIhEEiii.exit: ; pred .lr.ph.i51: ; preds = %_ZN8rawspeed12_GLOBAL__N_116decodeDeltaBytesENS_10Array1DRefIhEEiii.exit, %_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary16ENS1_8Binary32EEEjj.exit.i %indvars.iv21.i = phi i64 [ %indvars.iv.next22.i, %_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary16ENS1_8Binary32EEEjj.exit.i ], [ 0, %_ZN8rawspeed12_GLOBAL__N_116decodeDeltaBytesENS_10Array1DRefIhEEiii.exit ] call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %8) #16 - %116 = trunc nuw nsw i64 %indvars.iv21.i to i32 - br label %140 + %115 = trunc nuw nsw i64 %indvars.iv21.i to i32 + br label %139 -117: ; preds = %140 +116: ; preds = %139 %.0.copyload.i.i.i = load i16, ptr %8, align 2 - %118 = call noundef i16 @llvm.bswap.i16(i16 %.0.copyload.i.i.i) - %119 = zext i16 %118 to i32 - %120 = lshr i32 %119, 10 - %121 = and i32 %120, 31 - %122 = and i32 %119, 1023 - %123 = shl nuw nsw i32 %122, 13 - %124 = icmp eq i32 %121, 31 - br i1 %124, label %_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary16ENS1_8Binary32EEEjj.exit.i, label %125 - -125: ; preds = %117 - %126 = add nuw nsw i32 %121, 112 - %127 = icmp eq i32 %121, 0 - br i1 %127, label %128, label %_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary16ENS1_8Binary32EEEjj.exit.i - -128: ; preds = %125 - %129 = icmp eq i32 %122, 0 - br i1 %129, label %_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary16ENS1_8Binary32EEEjj.exit.i, label %._crit_edge.i.i - -._crit_edge.i.i: ; preds = %128 - %.masked.numleadingzeros.i.i = call range(i32 9, 33) i32 @llvm.ctlz.i32(i32 %123, i1 true) - %130 = sub nuw nsw i32 121, %.masked.numleadingzeros.i.i + %117 = call noundef i16 @llvm.bswap.i16(i16 %.0.copyload.i.i.i) + %118 = zext i16 %117 to i32 + %119 = lshr i32 %118, 10 + %120 = and i32 %119, 31 + %121 = and i32 %118, 1023 + %122 = shl nuw nsw i32 %121, 13 + %123 = icmp eq i32 %120, 31 + br i1 %123, label %_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary16ENS1_8Binary32EEEjj.exit.i, label %124 + +124: ; preds = %116 + %125 = add nuw nsw i32 %120, 112 + %126 = icmp eq i32 %120, 0 + br i1 %126, label %127, label %_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary16ENS1_8Binary32EEEjj.exit.i + +127: ; preds = %124 + %128 = icmp eq i32 %121, 0 + br i1 %128, label %_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary16ENS1_8Binary32EEEjj.exit.i, label %._crit_edge.i.i + +._crit_edge.i.i: ; preds = %127 + %.masked.numleadingzeros.i.i = call range(i32 9, 33) i32 @llvm.ctlz.i32(i32 %122, i1 true) + %129 = sub nuw nsw i32 121, %.masked.numleadingzeros.i.i %.masked.leadingonepos.i.i = xor i32 %.masked.numleadingzeros.i.i, 31 %.lr.ph.tripcount.i.i = sub nuw nsw i32 23, %.masked.leadingonepos.i.i - %131 = shl i32 %123, %.lr.ph.tripcount.i.i - %132 = and i32 %131, 8380416 + %130 = shl i32 %122, %.lr.ph.tripcount.i.i + %131 = and i32 %130, 8380416 br label %_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary16ENS1_8Binary32EEEjj.exit.i -_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary16ENS1_8Binary32EEEjj.exit.i: ; preds = %._crit_edge.i.i, %128, %125, %117 - %.015.i.i = phi i32 [ %130, %._crit_edge.i.i ], [ %126, %125 ], [ 255, %117 ], [ 0, %128 ] - %.0.i.i = phi i32 [ %132, %._crit_edge.i.i ], [ %123, %125 ], [ %123, %117 ], [ 0, %128 ] - %.signext.i = sext i16 %118 to i32 - %133 = and i32 %.signext.i, -2147483648 - %134 = shl nuw nsw i32 %.015.i.i, 23 - %135 = or disjoint i32 %134, %133 - %136 = or i32 %135, %.0.i.i - %137 = add nuw nsw i64 %indvars.iv21.i, %79 - %138 = icmp samesign ule i64 %137, %80 - call void @llvm.assume(i1 %138) - %139 = getelementptr inbounds nuw float, ptr %115, i64 %137 - store i32 %136, ptr %139, align 4, !tbaa !111 +_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary16ENS1_8Binary32EEEjj.exit.i: ; preds = %._crit_edge.i.i, %127, %124, %116 + %.015.i.i = phi i32 [ %129, %._crit_edge.i.i ], [ %125, %124 ], [ 255, %116 ], [ 0, %127 ] + %.0.i.i = phi i32 [ %131, %._crit_edge.i.i ], [ %122, %124 ], [ %122, %116 ], [ 0, %127 ] + %.signext.i = sext i16 %117 to i32 + %132 = and i32 %.signext.i, -2147483648 + %133 = shl nuw nsw i32 %.015.i.i, 23 + %134 = or disjoint i32 %133, %132 + %135 = or i32 %134, %.0.i.i + %136 = add nuw nsw i64 %indvars.iv21.i, %79 + %137 = icmp samesign ule i64 %136, %zext.i79 + call void @llvm.assume(i1 %137) + %138 = getelementptr inbounds nuw float, ptr %114, i64 %136 + store i32 %135, ptr %138, align 4, !tbaa !111 call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %8) #16 %indvars.iv.next22.i = add nuw nsw i64 %indvars.iv21.i, 1 - %exitcond.not.i = icmp eq i64 %indvars.iv.next22.i, %wide.trip.count.i79 + %exitcond.not.i = icmp eq i64 %indvars.iv.next22.i, %wide.trip.count.i80 br i1 %exitcond.not.i, label %_ZN8rawspeed12_GLOBAL__N_116decodeFPDeltaRowINS_13ieee_754_20088Binary16EEEvNS_10Array1DRefIKhEEiNS_17CroppedArray1DRefIfEE.exit, label %.lr.ph.i51, !llvm.loop !113 -140: ; preds = %140, %.lr.ph.i51 - %indvars.iv.i52 = phi i64 [ 0, %.lr.ph.i51 ], [ %indvars.iv.next.i53, %140 ] - %141 = trunc i64 %indvars.iv.i52 to i32 - %142 = mul i32 %141, %.sroa.0157.0.extract.trunc - %143 = add nsw i32 %142, %116 - %144 = icmp samesign ult i32 %143, %26 +139: ; preds = %139, %.lr.ph.i51 + %indvars.iv.i52 = phi i64 [ 0, %.lr.ph.i51 ], [ %indvars.iv.next.i53, %139 ] + %140 = trunc i64 %indvars.iv.i52 to i32 + %141 = mul i32 %140, %.sroa.0158.0.extract.trunc + %142 = add nsw i32 %141, %115 + %143 = icmp samesign ult i32 %142, %26 call void @llvm.assume(i1 %144) - %145 = icmp sgt i32 %143, -1 + %145 = icmp sgt i32 %142, -1 call void @llvm.assume(i1 %145) - %146 = zext nneg i32 %143 to i64 - %147 = getelementptr inbounds nuw i8, ptr %90, i64 %146 - %148 = load i8, ptr %147, align 1, !tbaa !96 + %147 = zext nneg i32 %143 to i64 + %148 = getelementptr inbounds nuw i8, ptr %90, i64 %146 + %148 = load i8, ptr %148, align 1, !tbaa !96 %149 = getelementptr inbounds nuw [2 x i8], ptr %8, i64 0, i64 %indvars.iv.i52 store i8 %148, ptr %149, align 1, !tbaa !96 %indvars.iv.next.i53 = add nuw nsw i64 %indvars.iv.i52, 1 %.not.i54 = icmp eq i64 %indvars.iv.next.i53, 2 - br i1 %.not.i54, label %117, label %140, !llvm.loop !114 + br i1 %.not.i54, label %116, label %139, !llvm.loop !114 .lr.ph.i59: ; preds = %_ZN8rawspeed12_GLOBAL__N_116decodeDeltaBytesENS_10Array1DRefIhEEiii.exit, %_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary24ENS1_8Binary32EEEjj.exit.i %indvars.iv21.i61 = phi i64 [ %indvars.iv.next22.i68, %_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary24ENS1_8Binary32EEEjj.exit.i ], [ 0, %_ZN8rawspeed12_GLOBAL__N_116decodeDeltaBytesENS_10Array1DRefIhEEiii.exit ] call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #16 - br label %173 + br label %172 -150: ; preds = %173 +149: ; preds = %172 %.0.copyload.i.i.i65 = load i32, ptr %7, align 4 - %151 = call noundef i32 @llvm.bswap.i32(i32 %.0.copyload.i.i.i65) - %152 = lshr i32 %151, 8 - %153 = lshr i32 %151, 24 - %154 = and i32 %153, 127 - %155 = and i32 %152, 65535 - %156 = shl nuw nsw i32 %155, 7 - %157 = icmp eq i32 %154, 127 - br i1 %157, label %_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary24ENS1_8Binary32EEEjj.exit.i, label %158 - -158: ; preds = %150 - %159 = add nuw nsw i32 %154, 64 - %160 = icmp eq i32 %154, 0 - br i1 %160, label %161, label %_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary24ENS1_8Binary32EEEjj.exit.i - -161: ; preds = %158 - %162 = icmp eq i32 %155, 0 - br i1 %162, label %_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary24ENS1_8Binary32EEEjj.exit.i, label %._crit_edge.i.i70 - -._crit_edge.i.i70: ; preds = %161 - %.masked.numleadingzeros.i.i71 = call range(i32 9, 33) i32 @llvm.ctlz.i32(i32 %156, i1 true) - %163 = sub nuw nsw i32 73, %.masked.numleadingzeros.i.i71 + %150 = call noundef i32 @llvm.bswap.i32(i32 %.0.copyload.i.i.i65) + %151 = lshr i32 %150, 8 + %152 = lshr i32 %150, 24 + %153 = and i32 %152, 127 + %154 = and i32 %151, 65535 + %155 = shl nuw nsw i32 %154, 7 + %156 = icmp eq i32 %153, 127 + br i1 %156, label %_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary24ENS1_8Binary32EEEjj.exit.i, label %157 + +157: ; preds = %149 + %158 = add nuw nsw i32 %153, 64 + %159 = icmp eq i32 %153, 0 + br i1 %159, label %160, label %_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary24ENS1_8Binary32EEEjj.exit.i + +160: ; preds = %157 + %161 = icmp eq i32 %154, 0 + br i1 %161, label %_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary24ENS1_8Binary32EEEjj.exit.i, label %._crit_edge.i.i70 + +._crit_edge.i.i70: ; preds = %160 + %.masked.numleadingzeros.i.i71 = call range(i32 9, 33) i32 @llvm.ctlz.i32(i32 %155, i1 true) + %162 = sub nuw nsw i32 73, %.masked.numleadingzeros.i.i71 %.masked.leadingonepos.i.i72 = xor i32 %.masked.numleadingzeros.i.i71, 31 %.lr.ph.tripcount.i.i73 = sub nuw nsw i32 23, %.masked.leadingonepos.i.i72 - %164 = shl i32 %156, %.lr.ph.tripcount.i.i73 - %165 = and i32 %164, 8388480 + %163 = shl i32 %155, %.lr.ph.tripcount.i.i73 + %164 = and i32 %163, 8388480 br label %_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary24ENS1_8Binary32EEEjj.exit.i -_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary24ENS1_8Binary32EEEjj.exit.i: ; preds = %._crit_edge.i.i70, %161, %158, %150 - %.015.i.i66 = phi i32 [ %163, %._crit_edge.i.i70 ], [ %159, %158 ], [ 255, %150 ], [ 0, %161 ] - %.0.i.i67 = phi i32 [ %165, %._crit_edge.i.i70 ], [ %156, %158 ], [ %156, %150 ], [ 0, %161 ] - %166 = and i32 %151, -2147483648 - %167 = shl nuw nsw i32 %.015.i.i66, 23 - %168 = or disjoint i32 %167, %166 - %169 = or i32 %168, %.0.i.i67 - %170 = add nuw nsw i64 %indvars.iv21.i61, %79 - %171 = icmp samesign ule i64 %170, %80 - call void @llvm.assume(i1 %171) - %172 = getelementptr inbounds nuw float, ptr %115, i64 %170 - store i32 %169, ptr %172, align 4, !tbaa !111 +_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary24ENS1_8Binary32EEEjj.exit.i: ; preds = %._crit_edge.i.i70, %160, %157, %149 + %.015.i.i66 = phi i32 [ %162, %._crit_edge.i.i70 ], [ %158, %157 ], [ 255, %149 ], [ 0, %160 ] + %.0.i.i67 = phi i32 [ %164, %._crit_edge.i.i70 ], [ %155, %157 ], [ %155, %149 ], [ 0, %160 ] + %165 = and i32 %150, -2147483648 + %166 = shl nuw nsw i32 %.015.i.i66, 23 + %167 = or disjoint i32 %166, %165 + %168 = or i32 %167, %.0.i.i67 + %169 = add nuw nsw i64 %indvars.iv21.i61, %79 + %170 = icmp samesign ule i64 %169, %zext.i79 + call void @llvm.assume(i1 %170) + %171 = getelementptr inbounds nuw float, ptr %114, i64 %169 + store i32 %168, ptr %171, align 4, !tbaa !111 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #16 %indvars.iv.next22.i68 = add nuw nsw i64 %indvars.iv21.i61, 1 - %exitcond.not.i69 = icmp eq i64 %indvars.iv.next22.i68, %wide.trip.count.i79 + %exitcond.not.i69 = icmp eq i64 %indvars.iv.next22.i68, %wide.trip.count.i80 br i1 %exitcond.not.i69, label %_ZN8rawspeed12_GLOBAL__N_116decodeFPDeltaRowINS_13ieee_754_20088Binary16EEEvNS_10Array1DRefIKhEEiNS_17CroppedArray1DRefIfEE.exit, label %.lr.ph.i59, !llvm.loop !115 -173: ; preds = %173, %.lr.ph.i59 - %indvars.iv.i62 = phi i64 [ 0, %.lr.ph.i59 ], [ %indvars.iv.next.i63, %173 ] - %174 = mul nsw i64 %indvars.iv.i62, %78 - %175 = add nsw i64 %174, %indvars.iv21.i61 - %176 = icmp samesign ult i64 %175, %75 +172: ; preds = %172, %.lr.ph.i59 + %indvars.iv.i62 = phi i64 [ 0, %.lr.ph.i59 ], [ %indvars.iv.next.i63, %172 ] + %173 = mul nsw i64 %indvars.iv.i62, %78 + %174 = add nsw i64 %173, %indvars.iv21.i61 + %175 = icmp samesign ult i64 %174, %75 call void @llvm.assume(i1 %176) - %177 = icmp sgt i64 %175, -1 + %177 = icmp sgt i64 %174, -1 call void @llvm.assume(i1 %177) - %178 = getelementptr inbounds nuw i8, ptr %90, i64 %175 + %178 = getelementptr inbounds nuw i8, ptr %89, i64 %174 %179 = load i8, ptr %178, align 1, !tbaa !96 %180 = getelementptr inbounds nuw [4 x i8], ptr %7, i64 0, i64 %indvars.iv.i62 store i8 %179, ptr %180, align 1, !tbaa !96 %indvars.iv.next.i63 = add nuw nsw i64 %indvars.iv.i62, 1 %.not.i64 = icmp eq i64 %indvars.iv.next.i63, 3 - br i1 %.not.i64, label %150, label %173, !llvm.loop !116 + br i1 %.not.i64, label %149, label %172, !llvm.loop !116 .lr.ph.i78: ; preds = %_ZN8rawspeed12_GLOBAL__N_116decodeDeltaBytesENS_10Array1DRefIhEEiii.exit, %181 - %indvars.iv21.i80 = phi i64 [ %indvars.iv.next22.i85, %181 ], [ 0, %_ZN8rawspeed12_GLOBAL__N_116decodeDeltaBytesENS_10Array1DRefIhEEiii.exit ] + %indvars.iv21.i81 = phi i64 [ %indvars.iv.next22.i86, %181 ], [ 0, %_ZN8rawspeed12_GLOBAL__N_116decodeDeltaBytesENS_10Array1DRefIhEEiii.exit ] call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #16 br label %186 181: ; preds = %186 - %.0.copyload.i.i.i84 = load i32, ptr %6, align 4 - %182 = call noundef i32 @llvm.bswap.i32(i32 %.0.copyload.i.i.i84) - %183 = add nuw nsw i64 %indvars.iv21.i80, %79 - %184 = icmp samesign ule i64 %183, %80 + %.0.copyload.i.i.i85 = load i32, ptr %6, align 4 + %182 = call noundef i32 @llvm.bswap.i32(i32 %.0.copyload.i.i.i85) + %183 = add nuw nsw i64 %indvars.iv21.i81, %79 + %184 = icmp samesign ule i64 %183, %zext.i79 call void @llvm.assume(i1 %184) - %185 = getelementptr inbounds nuw float, ptr %115, i64 %183 + %185 = getelementptr inbounds nuw float, ptr %114, i64 %183 store i32 %182, ptr %185, align 4, !tbaa !111 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #16 - %indvars.iv.next22.i85 = add nuw nsw i64 %indvars.iv21.i80, 1 - %exitcond.not.i86 = icmp eq i64 %indvars.iv.next22.i85, %wide.trip.count.i79 - br i1 %exitcond.not.i86, label %_ZN8rawspeed12_GLOBAL__N_116decodeFPDeltaRowINS_13ieee_754_20088Binary16EEEvNS_10Array1DRefIKhEEiNS_17CroppedArray1DRefIfEE.exit, label %.lr.ph.i78, !llvm.loop !117 + %indvars.iv.next22.i86 = add nuw nsw i64 %indvars.iv21.i81, 1 + %exitcond.not.i87 = icmp eq i64 %indvars.iv.next22.i86, %wide.trip.count.i80 + br i1 %exitcond.not.i87, label %_ZN8rawspeed12_GLOBAL__N_116decodeFPDeltaRowINS_13ieee_754_20088Binary16EEEvNS_10Array1DRefIKhEEiNS_17CroppedArray1DRefIfEE.exit, label %.lr.ph.i78, !llvm.loop !117 186: ; preds = %186, %.lr.ph.i78 - %indvars.iv.i81 = phi i64 [ 0, %.lr.ph.i78 ], [ %indvars.iv.next.i82, %186 ] - %187 = mul nsw i64 %indvars.iv.i81, %78 - %188 = add nsw i64 %187, %indvars.iv21.i80 + %indvars.iv.i82 = phi i64 [ 0, %.lr.ph.i78 ], [ %indvars.iv.next.i82, %186 ] + %187 = mul nsw i64 %indvars.iv.i82, %78 + %188 = add nsw i64 %187, %indvars.iv21.i81 %189 = icmp samesign ult i64 %188, %75 call void @llvm.assume(i1 %189) %190 = icmp sgt i64 %188, -1 call void @llvm.assume(i1 %190) %191 = getelementptr inbounds nuw i8, ptr %90, i64 %188 %192 = load i8, ptr %191, align 1, !tbaa !96 - %193 = getelementptr inbounds nuw [4 x i8], ptr %6, i64 0, i64 %indvars.iv.i81 - store i8 %192, ptr %193, align 1, !tbaa !96 - %indvars.iv.next.i82 = add nuw nsw i64 %indvars.iv.i81, 1 - %.not.i83 = icmp eq i64 %indvars.iv.next.i82, 4 + %192 = getelementptr inbounds nuw [4 x i8], ptr %6, i64 0, i64 %indvars.iv.i81 + store i8 %192, ptr %192, align 1, !tbaa !96 + %194 = add nuw nsw i64 %indvars.iv.i82, 1 + %.not.i83 = icmp eq i64 %194, 4 br i1 %.not.i83, label %181, label %186, !llvm.loop !118 default.unreachable: ; preds = %_ZN8rawspeed12_GLOBAL__N_116decodeDeltaBytesENS_10Array1DRefIhEEiii.exit @@ -548,7 +548,7 @@ default.unreachable: ; preds = %_ZN8rawspeed12_GLOB _ZN8rawspeed12_GLOBAL__N_116decodeFPDeltaRowINS_13ieee_754_20088Binary16EEEvNS_10Array1DRefIKhEEiNS_17CroppedArray1DRefIfEE.exit: ; preds = %181, %_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary24ENS1_8Binary32EEEjj.exit.i, %_ZN8rawspeed25extendBinaryFloatingPointINS_13ieee_754_20088Binary16ENS1_8Binary32EEEjj.exit.i %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond.not, label %._crit_edge, label %85, !llvm.loop !119 + br i1 %exitcond.not, label %._crit_edge, label %84, !llvm.loop !119 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) diff --git a/bench/darktable/optimized/IiqDecoder.ll b/bench/darktable/optimized/IiqDecoder.ll index 4f8c426a5b9..4c136976fdd 100644 --- a/bench/darktable/optimized/IiqDecoder.ll +++ b/bench/darktable/optimized/IiqDecoder.ll @@ -4336,12 +4336,12 @@ define hidden void @_ZNK8rawspeed10IiqDecoder16correctBadColumnEt(ptr noundef no tail call void @llvm.assume(i1 %23) %24 = icmp eq i32 %13, 0 %25 = icmp ne i32 %15, 0 - %26 = xor i1 %24, %25 - tail call void @llvm.assume(i1 %26) + %25 = xor i1 %24, %25 + tail call void @llvm.assume(i1 %25) %27 = getelementptr inbounds nuw i8, ptr %6, i64 44 %28 = load i32, ptr %27, align 4, !tbaa !229 - %29 = icmp sgt i32 %28, 4 - br i1 %29, label %.lr.ph, label %._crit_edge + %28 = icmp sgt i32 %28, 4 + br i1 %28, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %2 %30 = mul nuw nsw i32 %18, %15 @@ -4374,168 +4374,168 @@ define hidden void @_ZNK8rawspeed10IiqDecoder16correctBadColumnEt(ptr noundef no %56 = zext nneg i32 %15 to i64 br label %57 -._crit_edge: ; preds = %162, %2 +._crit_edge: ; preds = %161, %2 ret void -57: ; preds = %.lr.ph, %162 - %indvars.iv436 = phi i64 [ 2, %.lr.ph ], [ %indvars.iv.next437.pre-phi, %162 ] - %58 = phi ptr [ %6, %.lr.ph ], [ %163, %162 ] - %59 = getelementptr inbounds nuw i8, ptr %58, i64 64 - %60 = trunc nuw nsw i64 %indvars.iv436 to i32 - %61 = tail call noundef zeroext i8 @_ZNK8rawspeed16ColorFilterArray10getColorAtEii(ptr noundef nonnull align 8 dereferenceable(32) %59, i32 noundef %31, i32 noundef %60) - %62 = icmp eq i8 %61, 1 - br i1 %62, label %63, label %116 +54: ; preds = %.lr.ph, %161 + %indvars.iv436 = phi i64 [ 2, %.lr.ph ], [ %indvars.iv.next437.pre-phi, %161 ] + %55 = phi ptr [ %6, %.lr.ph ], [ %162, %161 ] + %56 = getelementptr inbounds nuw i8, ptr %55, i64 64 + %57 = trunc nuw nsw i64 %indvars.iv436 to i32 + %58 = tail call noundef zeroext i8 @_ZNK8rawspeed16ColorFilterArray10getColorAtEii(ptr noundef nonnull align 8 dereferenceable(32) %56, i32 noundef %31, i32 noundef %57) + %59 = icmp eq i8 %58, 1 + br i1 %59, label %60, label %114 -63: ; preds = %57 +60: ; preds = %54 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #25 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #25 - %64 = add nsw i64 %indvars.iv436, -1 + %61 = add nsw i64 %indvars.iv436, -1 tail call void @llvm.assume(i1 %41) - %65 = icmp samesign ult i64 %64, %52 + %62 = icmp samesign ult i64 %61, %52 + tail call void @llvm.assume(i1 %62) + %63 = mul nuw nsw i64 %61, %53 + %64 = add nuw nsw i64 %63, %54 + %65 = icmp samesign ule i64 %64, %55 tail call void @llvm.assume(i1 %65) - %66 = mul nuw nsw i64 %64, %53 - %67 = add nuw nsw i64 %66, %54 - %68 = icmp samesign ule i64 %67, %55 - tail call void @llvm.assume(i1 %68) %69 = getelementptr inbounds nuw i16, ptr %8, i64 %66 - %70 = getelementptr inbounds nuw i16, ptr %69, i64 %42 - %71 = load i16, ptr %70, align 2, !tbaa !221 + %67 = getelementptr inbounds nuw i16, ptr %69, i64 %42 + %68 = load i16, ptr %67, align 2, !tbaa !221 store i16 %71, ptr %3, align 2, !tbaa !221 - %72 = zext i16 %71 to i32 - %73 = add nuw nsw i64 %indvars.iv436, 1 - %74 = icmp samesign ult i64 %73, %56 - tail call void @llvm.assume(i1 %74) + %72 = zext i16 %68 to i32 + %70 = add nuw nsw i64 %indvars.iv436, 1 + %71 = icmp samesign ult i64 %73, %56 + tail call void @llvm.assume(i1 %71) %75 = mul nuw nsw i64 %73, %49 - %76 = add nuw nsw i64 %75, %50 - %77 = icmp samesign ule i64 %76, %51 - tail call void @llvm.assume(i1 %77) + %73 = add nuw nsw i64 %75, %50 + %74 = icmp samesign ule i64 %73, %51 + tail call void @llvm.assume(i1 %74) %78 = getelementptr inbounds nuw i16, ptr %8, i64 %75 - %79 = getelementptr inbounds nuw i16, ptr %78, i64 %42 - %80 = load i16, ptr %79, align 2, !tbaa !221 + %76 = getelementptr inbounds nuw i16, ptr %78, i64 %42 + %77 = load i16, ptr %76, align 2, !tbaa !221 store i16 %80, ptr %43, align 2, !tbaa !221 %81 = zext i16 %80 to i32 - %82 = add nuw nsw i32 %81, %72 + %79 = add nuw nsw i32 %81, %72 tail call void @llvm.assume(i1 %45) - %83 = getelementptr inbounds nuw i16, ptr %69, i64 %46 - %84 = load i16, ptr %83, align 2, !tbaa !221 - store i16 %84, ptr %47, align 2, !tbaa !221 - %85 = zext i16 %84 to i32 - %86 = add nuw nsw i32 %82, %85 - %87 = getelementptr inbounds nuw i16, ptr %78, i64 %46 - %88 = load i16, ptr %87, align 2, !tbaa !221 - store i16 %88, ptr %48, align 2, !tbaa !221 - %89 = zext i16 %88 to i32 - %90 = add nuw nsw i32 %86, %89 - br label %103 - -91: ; preds = %103 - %92 = zext nneg i32 %spec.select to i64 - %93 = getelementptr inbounds nuw [4 x i16], ptr %3, i64 0, i64 %92 - %94 = load i16, ptr %93, align 2, !tbaa !221 - %95 = zext i16 %94 to i32 - %96 = add nuw nsw i32 %90, 1 - %97 = sub nsw i32 %96, %95 - %98 = sdiv i32 %97, 3 - %99 = trunc i32 %98 to i16 - %100 = mul nuw nsw i64 %indvars.iv436, %49 - %101 = add nuw nsw i64 %100, %50 - %102 = icmp samesign ule i64 %101, %51 - tail call void @llvm.assume(i1 %102) + %81 = getelementptr inbounds nuw i16, ptr %69, i64 %46 + %82 = load i16, ptr %81, align 2, !tbaa !221 + store i16 %82, ptr %47, align 2, !tbaa !221 + %83 = zext i16 %82 to i32 + %84 = add nuw nsw i32 %82, %83 + %85 = getelementptr inbounds nuw i16, ptr %78, i64 %46 + %86 = load i16, ptr %85, align 2, !tbaa !221 + store i16 %86, ptr %48, align 2, !tbaa !221 + %87 = zext i16 %86 to i32 + %88 = add nuw nsw i32 %84, %87 + br label %101 + +89: ; preds = %101 + %90 = zext nneg i32 %spec.select to i64 + %91 = getelementptr inbounds nuw [4 x i16], ptr %3, i64 0, i64 %90 + %92 = load i16, ptr %91, align 2, !tbaa !221 + %93 = zext i16 %92 to i32 + %94 = add nuw nsw i32 %88, 1 + %95 = sub nsw i32 %94, %93 + %96 = sdiv i32 %95, 3 + %97 = trunc i32 %96 to i16 + %98 = mul nuw nsw i64 %indvars.iv436, %49 + %99 = add nuw nsw i64 %98, %50 + %100 = icmp samesign ule i64 %99, %51 + tail call void @llvm.assume(i1 %100) tail call void @llvm.assume(i1 %38) - %gep = getelementptr inbounds nuw i16, ptr %invariant.gep, i64 %100 - store i16 %99, ptr %gep, align 2, !tbaa !221 + %gep = getelementptr inbounds nuw i16, ptr %invariant.gep, i64 %98 + store i16 %97, ptr %gep, align 2, !tbaa !221 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #25 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #25 - br label %162 - -103: ; preds = %63, %103 - %indvars.iv = phi i64 [ 0, %63 ], [ %indvars.iv.next, %103 ] - %.045433 = phi i32 [ 0, %63 ], [ %spec.select, %103 ] - %104 = getelementptr inbounds nuw [4 x i16], ptr %3, i64 0, i64 %indvars.iv - %105 = load i16, ptr %104, align 2, !tbaa !221 - %106 = zext i16 %105 to i32 - %107 = shl nuw nsw i32 %106, 2 - %108 = sub nsw i32 %107, %90 - %109 = tail call i32 @llvm.abs.i32(i32 %108, i1 true) - %110 = getelementptr inbounds nuw [4 x i32], ptr %4, i64 0, i64 %indvars.iv - store i32 %109, ptr %110, align 4, !tbaa !30 - %111 = zext nneg i32 %.045433 to i64 - %112 = getelementptr inbounds nuw [4 x i32], ptr %4, i64 0, i64 %111 - %113 = load i32, ptr %112, align 4, !tbaa !30 - %114 = icmp slt i32 %113, %109 - %115 = trunc nuw nsw i64 %indvars.iv to i32 - %spec.select = select i1 %114, i32 %115, i32 %.045433 + br label %161 + +101: ; preds = %60, %101 + %indvars.iv = phi i64 [ 0, %60 ], [ %indvars.iv.next, %101 ] + %.045433 = phi i32 [ 0, %60 ], [ %spec.select, %101 ] + %102 = getelementptr inbounds nuw [4 x i16], ptr %3, i64 0, i64 %indvars.iv + %103 = load i16, ptr %102, align 2, !tbaa !221 + %104 = zext i16 %103 to i32 + %105 = shl nuw nsw i32 %104, 2 + %106 = sub nsw i32 %105, %88 + %107 = tail call i32 @llvm.abs.i32(i32 %106, i1 true) + %108 = getelementptr inbounds nuw [4 x i32], ptr %4, i64 0, i64 %indvars.iv + store i32 %107, ptr %108, align 4, !tbaa !30 + %109 = zext nneg i32 %.045433 to i64 + %110 = getelementptr inbounds nuw [4 x i32], ptr %4, i64 0, i64 %109 + %111 = load i32, ptr %110, align 4, !tbaa !30 + %112 = icmp slt i32 %111, %107 + %113 = trunc nuw nsw i64 %indvars.iv to i32 + %spec.select = select i1 %112, i32 %113, i32 %.045433 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 4 - br i1 %exitcond.not, label %91, label %103, !llvm.loop !314 + br i1 %exitcond.not, label %89, label %101, !llvm.loop !314 -116: ; preds = %57 - %117 = add nuw nsw i64 %indvars.iv436, 2 +114: ; preds = %54 + %115 = add nuw nsw i64 %indvars.iv436, 2 tail call void @llvm.assume(i1 %33) - %118 = icmp samesign ult i64 %117, %56 - tail call void @llvm.assume(i1 %118) - %119 = mul nuw nsw i64 %117, %49 - %120 = add nuw nsw i64 %119, %50 - %121 = icmp samesign ule i64 %120, %51 - tail call void @llvm.assume(i1 %121) - %122 = getelementptr inbounds nuw i16, ptr %8, i64 %119 - %123 = getelementptr inbounds nuw i16, ptr %122, i64 %34 - %124 = load i16, ptr %123, align 2, !tbaa !221 - %125 = zext i16 %124 to i32 - %126 = add nsw i64 %indvars.iv436, -2 - %127 = icmp samesign ult i64 %126, %52 - tail call void @llvm.assume(i1 %127) - %128 = mul nuw nsw i64 %126, %53 - %129 = add nuw nsw i64 %128, %54 - %130 = icmp samesign ule i64 %129, %55 - tail call void @llvm.assume(i1 %130) + %116 = icmp samesign ult i64 %115, %56 + tail call void @llvm.assume(i1 %116) + %117 = mul nuw nsw i64 %115, %49 + %118 = add nuw nsw i64 %117, %50 + %119 = icmp samesign ule i64 %118, %51 + tail call void @llvm.assume(i1 %119) + %120 = getelementptr inbounds nuw i16, ptr %8, i64 %117 + %121 = getelementptr inbounds nuw i16, ptr %120, i64 %34 + %122 = load i16, ptr %121, align 2, !tbaa !221 + %123 = zext i16 %122 to i32 + %124 = add nsw i64 %indvars.iv436, -2 + %125 = icmp samesign ult i64 %124, %52 + tail call void @llvm.assume(i1 %125) + %126 = mul nuw nsw i64 %124, %53 + %127 = add nuw nsw i64 %126, %54 + %128 = icmp samesign ule i64 %127, %55 + tail call void @llvm.assume(i1 %128) %131 = getelementptr inbounds nuw i16, ptr %8, i64 %128 - %132 = getelementptr inbounds nuw i16, ptr %131, i64 %34 - %133 = load i16, ptr %132, align 2, !tbaa !221 - %134 = zext i16 %133 to i32 - %135 = add nuw nsw i32 %134, %125 + %130 = getelementptr inbounds nuw i16, ptr %131, i64 %34 + %131 = load i16, ptr %130, align 2, !tbaa !221 + %132 = zext i16 %131 to i32 + %133 = add nuw nsw i32 %132, %125 tail call void @llvm.assume(i1 %36) - %136 = getelementptr inbounds nuw i16, ptr %122, i64 %37 - %137 = load i16, ptr %136, align 2, !tbaa !221 - %138 = zext i16 %137 to i32 - %139 = add nuw nsw i32 %135, %138 - %140 = getelementptr inbounds nuw i16, ptr %131, i64 %37 - %141 = load i16, ptr %140, align 2, !tbaa !221 - %142 = zext i16 %141 to i32 - %143 = add nuw nsw i32 %139, %142 - %144 = mul nuw nsw i64 %indvars.iv436, %49 - %145 = add nuw nsw i64 %144, %50 - %146 = icmp samesign ule i64 %145, %51 - tail call void @llvm.assume(i1 %146) - %147 = getelementptr inbounds nuw i16, ptr %8, i64 %144 - %148 = getelementptr inbounds nuw i16, ptr %147, i64 %34 - %149 = load i16, ptr %148, align 2, !tbaa !221 - %150 = zext i16 %149 to i32 - %151 = getelementptr inbounds nuw i16, ptr %147, i64 %37 - %152 = load i16, ptr %151, align 2, !tbaa !221 - %153 = zext i16 %152 to i32 - %154 = add nuw nsw i32 %153, %150 - %155 = uitofp nneg i32 %143 to double - %156 = uitofp nneg i32 %154 to double - %157 = fmul double %156, 0x3FD6A09E7098EF50 - %158 = tail call double @llvm.fmuladd.f64(double %155, double 7.322330e-02, double %157) - %159 = tail call i64 @lround(double noundef %158) #25, !tbaa !30 - %160 = trunc i64 %159 to i16 + %135 = getelementptr inbounds nuw i16, ptr %120, i64 %37 + %136 = load i16, ptr %135, align 2, !tbaa !221 + %137 = zext i16 %136 to i32 + %138 = add nuw nsw i32 %135, %137 + %139 = getelementptr inbounds nuw i16, ptr %131, i64 %37 + %140 = load i16, ptr %139, align 2, !tbaa !221 + %141 = zext i16 %140 to i32 + %142 = add nuw nsw i32 %138, %141 + %143 = mul nuw nsw i64 %indvars.iv436, %49 + %144 = add nuw nsw i64 %143, %50 + %145 = icmp samesign ule i64 %144, %51 + tail call void @llvm.assume(i1 %145) + %146 = getelementptr inbounds nuw i16, ptr %8, i64 %143 + %147 = getelementptr inbounds nuw i16, ptr %146, i64 %34 + %148 = load i16, ptr %147, align 2, !tbaa !221 + %149 = zext i16 %148 to i32 + %150 = getelementptr inbounds nuw i16, ptr %146, i64 %37 + %151 = load i16, ptr %150, align 2, !tbaa !221 + %152 = zext i16 %151 to i32 + %153 = add nuw nsw i32 %152, %149 + %154 = uitofp nneg i32 %142 to double + %155 = uitofp nneg i32 %153 to double + %156 = fmul double %155, 0x3FD6A09E7098EF50 + %157 = tail call double @llvm.fmuladd.f64(double %154, double 7.322330e-02, double %156) + %158 = tail call i64 @lround(double noundef %157) #25, !tbaa !30 + %159 = trunc i64 %158 to i16 tail call void @llvm.assume(i1 %38) - %161 = getelementptr inbounds nuw i16, ptr %147, i64 %39 - store i16 %160, ptr %161, align 2, !tbaa !221 + %160 = getelementptr inbounds nuw i16, ptr %146, i64 %39 + store i16 %159, ptr %160, align 2, !tbaa !221 %.pre = add nuw nsw i64 %indvars.iv436, 1 - br label %162 - -162: ; preds = %91, %116 - %indvars.iv.next437.pre-phi = phi i64 [ %73, %91 ], [ %.pre, %116 ] - %163 = load ptr, ptr %5, align 8, !tbaa !110 - %164 = getelementptr inbounds nuw i8, ptr %163, i64 44 - %165 = load i32, ptr %164, align 4, !tbaa !229 - %166 = add nsw i32 %165, -2 - %167 = sext i32 %166 to i64 - %168 = icmp slt i64 %indvars.iv.next437.pre-phi, %167 - br i1 %168, label %57, label %._crit_edge, !llvm.loop !315 + br label %161 + +161: ; preds = %89, %114 + %indvars.iv.next437.pre-phi = phi i64 [ %73, %89 ], [ %.pre, %114 ] + %162 = load ptr, ptr %5, align 8, !tbaa !110 + %163 = getelementptr inbounds nuw i8, ptr %162, i64 44 + %164 = load i32, ptr %163, align 4, !tbaa !229 + %165 = add nsw i32 %164, -2 + %166 = sext i32 %165 to i64 + %167 = icmp slt i64 %indvars.iv.next437.pre-phi, %166 + br i1 %167, label %54, label %._crit_edge, !llvm.loop !315 } ; Function Attrs: mustprogress uwtable diff --git a/bench/darktable/optimized/OlympusDecompressor.ll b/bench/darktable/optimized/OlympusDecompressor.ll index dcc25005ac0..405ecdaeb29 100644 --- a/bench/darktable/optimized/OlympusDecompressor.ll +++ b/bench/darktable/optimized/OlympusDecompressor.ll @@ -512,153 +512,153 @@ _ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequen _ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit.preheader.i.i: ; preds = %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit25.i.i br i1 %.not254.i.i, label %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl13decompressRowERNS_14BitStreamerMSBEi.exit.i, label %.preheader.i.i -129: ; preds = %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit25.i.i, %116 +131: ; preds = %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit25.i.i, %116 %.sroa.1915.1.i = phi i32 [ %.sroa.1915.022.i, %116 ], [ %.sroa.1915.2.i, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit25.i.i ] %indvars.iv.i.i = phi i64 [ 0, %116 ], [ %indvars.iv.next.i.i, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit25.i.i ] - %130 = phi i32 [ %.sroa.9.021.i, %116 ], [ %198, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit25.i.i ] - %131 = phi i32 [ %.sroa.1915.022.i, %116 ], [ %.promoted258.i.i, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit25.i.i ] - %storemerge244245.i.i = phi i64 [ %.sroa.012.020.i, %116 ], [ %200, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit25.i.i ] - %132 = getelementptr inbounds nuw [2 x %"class.rawspeed::(anonymous namespace)::OlympusDifferenceDecoder"], ptr %3, i64 0, i64 %indvars.iv.i.i - %133 = icmp samesign ult i32 %130, 65 - call void @llvm.assume(i1 %133) - %.not.i31.i.i = icmp samesign ult i32 %130, 32 - br i1 %.not.i31.i.i, label %134, label %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.i - -134: ; preds = %129 + %132 = phi i32 [ %.sroa.9.021.i, %116 ], [ %200, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit25.i.i ] + %133 = phi i32 [ %.sroa.1915.022.i, %116 ], [ %.promoted258.i.i, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit25.i.i ] + %storemerge244245.i.i = phi i64 [ %.sroa.012.020.i, %116 ], [ %202, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit25.i.i ] + %134 = getelementptr inbounds nuw [2 x %"class.rawspeed::(anonymous namespace)::OlympusDifferenceDecoder"], ptr %3, i64 0, i64 %indvars.iv.i.i + %135 = icmp samesign ult i32 %132, 65 + call void @llvm.assume(i1 %135) + %.not.i31.i.i = icmp samesign ult i32 %132, 32 + br i1 %.not.i31.i.i, label %136, label %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.i + +136: ; preds = %131 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %.sroa.0.i.i.i.i) - %135 = add nuw nsw i32 %131, 4 - %.not.i.i.i.i6 = icmp samesign ugt i32 %135, %78 - br i1 %.not.i.i.i.i6, label %139, label %136, !prof !93 + %137 = add nuw nsw i32 %133, 4 + %.not.i.i.i.i6 = icmp samesign ugt i32 %137, %78 + br i1 %.not.i.i.i.i6, label %141, label %138, !prof !93 -136: ; preds = %134 - %137 = zext nneg i32 %131 to i64 - %138 = getelementptr inbounds nuw i8, ptr %84, i64 %137 +138: ; preds = %136 + %139 = zext nneg i32 %133 to i64 + %140 = getelementptr inbounds nuw i8, ptr %84, i64 %139 br label %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.i -139: ; preds = %134 - %140 = icmp samesign ugt i32 %131, %110 - br i1 %140, label %.invoke, label %141, !prof !93 +141: ; preds = %136 + %142 = icmp samesign ugt i32 %133, %110 + br i1 %142, label %.invoke, label %143, !prof !93 -141: ; preds = %139 +143: ; preds = %141 store i32 0, ptr %.sroa.0.i.i.i.i, align 4 - %.sroa.speculated26.i.i.i.i.i = call i32 @llvm.umin.i32(i32 %78, i32 %131) - %142 = add nuw nsw i32 %.sroa.speculated26.i.i.i.i.i, 4 - %.sroa.speculated.i.i.i.i.i = call i32 @llvm.umin.i32(i32 %78, i32 %142) - %143 = sub nsw i32 %.sroa.speculated.i.i.i.i.i, %.sroa.speculated26.i.i.i.i.i - %144 = icmp ult i32 %143, 5 - call void @llvm.assume(i1 %144) - %145 = zext nneg i32 %.sroa.speculated26.i.i.i.i.i to i64 - %146 = getelementptr inbounds nuw i8, ptr %84, i64 %145 - %147 = zext nneg i32 %143 to i64 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %.sroa.0.i.i.i.i, ptr nonnull align 1 %146, i64 %147, i1 false) + %.sroa.speculated26.i.i.i.i.i = call i32 @llvm.umin.i32(i32 %78, i32 %133) + %144 = add nuw nsw i32 %.sroa.speculated26.i.i.i.i.i, 4 + %.sroa.speculated.i.i.i.i.i = call i32 @llvm.umin.i32(i32 %78, i32 %144) + %145 = sub nsw i32 %.sroa.speculated.i.i.i.i.i, %.sroa.speculated26.i.i.i.i.i + %146 = icmp ult i32 %145, 5 + call void @llvm.assume(i1 %146) + %147 = zext nneg i32 %.sroa.speculated26.i.i.i.i.i to i64 + %148 = getelementptr inbounds nuw i8, ptr %84, i64 %147 + %149 = zext nneg i32 %145 to i64 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %.sroa.0.i.i.i.i, ptr nonnull align 1 %148, i64 %149, i1 false) br label %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.i -_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.i: ; preds = %141, %136 - %.sroa.0.0..sroa.0.0..in.i.i.i.i = phi ptr [ %.sroa.0.i.i.i.i, %141 ], [ %138, %136 ] +_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.i: ; preds = %143, %138 + %.sroa.0.0..sroa.0.0..in.i.i.i.i = phi ptr [ %.sroa.0.i.i.i.i, %143 ], [ %140, %138 ] %.sroa.0.0..sroa.0.0..i.i.i.i = load i32, ptr %.sroa.0.0..sroa.0.0..in.i.i.i.i, align 1 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %.sroa.0.i.i.i.i) - %148 = call i32 @llvm.bswap.i32(i32 %.sroa.0.0..sroa.0.0..i.i.i.i) - %149 = zext i32 %148 to i64 - %150 = or disjoint i32 %130, 32 - %151 = sub nuw nsw i32 32, %130 - %152 = zext nneg i32 %151 to i64 - %153 = shl nuw i64 %149, %152 - %154 = or i64 %153, %storemerge244245.i.i + %150 = call i32 @llvm.bswap.i32(i32 %.sroa.0.0..sroa.0.0..i.i.i.i) + %151 = zext i32 %150 to i64 + %152 = or disjoint i32 %132, 32 + %153 = sub nuw nsw i32 32, %132 + %154 = zext nneg i32 %153 to i64 + %155 = shl nuw i64 %151, %154 + %156 = or i64 %155, %storemerge244245.i.i br label %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.i -_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.i: ; preds = %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.i, %129 - %.sroa.1915.2.i = phi i32 [ %135, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.i ], [ %.sroa.1915.1.i, %129 ] - %storemerge243.i.i = phi i64 [ %154, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.i ], [ %storemerge244245.i.i, %129 ] - %.promoted258.i.i = phi i32 [ %135, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.i ], [ %131, %129 ] - %155 = phi i32 [ %150, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.i ], [ %130, %129 ] - %156 = getelementptr inbounds nuw i8, ptr %132, i64 8 - %157 = getelementptr inbounds nuw i8, ptr %132, i64 16 - %158 = load i32, ptr %157, align 8, !tbaa !92 - %.inv.i15.i.i = icmp sgt i32 %158, 2 - %159 = load i32, ptr %156, align 8, !tbaa !92 - %160 = and i32 %159, 65535 - %161 = call noundef range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %160, i1 false) +_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.i: ; preds = %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.i, %131 + %.sroa.1915.2.i = phi i32 [ %137, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.i ], [ %.sroa.1915.1.i, %131 ] + %storemerge243.i.i = phi i64 [ %156, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.i ], [ %storemerge244245.i.i, %131 ] + %.promoted258.i.i = phi i32 [ %137, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.i ], [ %133, %131 ] + %157 = phi i32 [ %152, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.i ], [ %132, %131 ] + %158 = getelementptr inbounds nuw i8, ptr %134, i64 8 + %159 = getelementptr inbounds nuw i8, ptr %134, i64 16 + %160 = load i32, ptr %159, align 8, !tbaa !92 + %.inv.i15.i.i = icmp sgt i32 %160, 2 + %161 = load i32, ptr %158, align 8, !tbaa !92 + %162 = and i32 %161, 65535 + %163 = call noundef range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %162, i1 false) %.neg237.i.i = select i1 %.inv.i15.i.i, i32 32, i32 30 - %162 = sub nsw i32 %.neg237.i.i, %161 - %163 = select i1 %.inv.i15.i.i, i32 2, i32 4 - %.sroa.speculated112.i.i = call i32 @llvm.smax.i32(i32 %162, i32 %163) - %164 = icmp sgt i32 %.promoted258.i.i, -1 - call void @llvm.assume(i1 %164) - %165 = lshr i64 %storemerge243.i.i, 49 - %166 = trunc nuw nsw i64 %165 to i32 - %167 = lshr i32 %166, 14 - %168 = sub nsw i32 0, %167 - %169 = load ptr, ptr %132, align 8, !tbaa !112 - %170 = and i64 %165, 4095 - %171 = load ptr, ptr %169, align 8, !tbaa !94 - %172 = getelementptr inbounds nuw i8, ptr %171, i64 %170 - %173 = load i8, ptr %172, align 1, !tbaa !91 - %.not.i16.i.i = icmp eq i8 %173, 12 - br i1 %.not.i16.i.i, label %179, label %174, !prof !93 - -174: ; preds = %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.i - %175 = sext i8 %173 to i32 - %176 = add nsw i32 %175, 4 - %177 = icmp samesign ule i32 %176, %155 - call void @llvm.assume(i1 %177) - %178 = sub nsw i32 %155, %176 + %164 = sub nsw i32 %.neg237.i.i, %163 + %165 = select i1 %.inv.i15.i.i, i32 2, i32 4 + %.sroa.speculated112.i.i = call i32 @llvm.smax.i32(i32 %164, i32 %165) + %166 = icmp sgt i32 %.promoted258.i.i, -1 + call void @llvm.assume(i1 %166) + %167 = lshr i64 %storemerge243.i.i, 49 + %168 = trunc nuw nsw i64 %167 to i32 + %169 = lshr i32 %168, 14 + %170 = sub nsw i32 0, %169 + %171 = load ptr, ptr %134, align 8, !tbaa !112 + %172 = and i64 %167, 4095 + %173 = load ptr, ptr %171, align 8, !tbaa !94 + %174 = getelementptr inbounds nuw i8, ptr %173, i64 %172 + %175 = load i8, ptr %174, align 1, !tbaa !91 + %.not.i16.i.i = icmp eq i8 %175, 12 + br i1 %.not.i16.i.i, label %181, label %176, !prof !93 + +176: ; preds = %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.i + %177 = sext i8 %175 to i32 + %178 = add nsw i32 %177, 4 + %179 = icmp samesign ule i32 %178, %157 + call void @llvm.assume(i1 %179) + %180 = sub nsw i32 %157, %178 br label %_ZN8rawspeed12_GLOBAL__N_124OlympusDifferenceDecoder7getDiffERNS_14BitStreamerMSBE.exit18.i.i -179: ; preds = %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.i - %180 = shl i64 %storemerge243.i.i, 15 - %181 = icmp slt i32 %162, 16 - call void @llvm.assume(i1 %181) - %182 = icmp ne i32 %162, 15 - call void @llvm.assume(i1 %182) - %183 = add nuw nsw i32 %.sroa.speculated112.i.i, 49 - %184 = zext nneg i32 %183 to i64 - %185 = lshr i64 %180, %184 - %186 = trunc nuw nsw i64 %185 to i32 - %187 = sub nuw nsw i32 16, %.sroa.speculated112.i.i - %.neg24.i = add nsw i32 %155, -31 - %188 = add nuw nsw i32 %.neg24.i, %.sroa.speculated112.i.i +181: ; preds = %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.i + %182 = shl i64 %storemerge243.i.i, 15 + %183 = icmp slt i32 %164, 16 + call void @llvm.assume(i1 %183) + %184 = icmp ne i32 %164, 15 + call void @llvm.assume(i1 %184) + %185 = add nuw nsw i32 %.sroa.speculated112.i.i, 49 + %186 = zext nneg i32 %185 to i64 + %187 = lshr i64 %182, %186 + %188 = trunc nuw nsw i64 %187 to i32 + %189 = sub nuw nsw i32 16, %.sroa.speculated112.i.i + %.neg24.i = add nsw i32 %157, -31 + %190 = add nuw nsw i32 %.neg24.i, %.sroa.speculated112.i.i br label %_ZN8rawspeed12_GLOBAL__N_124OlympusDifferenceDecoder7getDiffERNS_14BitStreamerMSBE.exit18.i.i -_ZN8rawspeed12_GLOBAL__N_124OlympusDifferenceDecoder7getDiffERNS_14BitStreamerMSBE.exit18.i.i: ; preds = %179, %174 - %.sink274.i.i = phi i32 [ %187, %179 ], [ %176, %174 ] - %.sink272.i.i = phi i64 [ %180, %179 ], [ %storemerge243.i.i, %174 ] - %.sink.i.i = phi i32 [ %188, %179 ], [ %178, %174 ] - %.0.i17.i.i = phi i32 [ %186, %179 ], [ %175, %174 ] - %189 = zext nneg i32 %.sink274.i.i to i64 - %190 = shl i64 %.sink272.i.i, %189 - %191 = shl nsw i32 %.0.i17.i.i, %.sroa.speculated112.i.i - %192 = icmp samesign ult i32 %.sink.i.i, 65 - call void @llvm.assume(i1 %192) - %193 = icmp samesign ule i32 %.sroa.speculated112.i.i, %.sink.i.i - call void @llvm.assume(i1 %193) - %194 = sub nuw nsw i32 64, %.sroa.speculated112.i.i - %195 = zext nneg i32 %194 to i64 - %196 = lshr i64 %190, %195 - %197 = trunc nuw nsw i64 %196 to i32 - %198 = sub nsw i32 %.sink.i.i, %.sroa.speculated112.i.i - %199 = zext nneg i32 %.sroa.speculated112.i.i to i64 - %200 = shl i64 %190, %199 - %201 = or i32 %191, %197 - store i32 %201, ptr %156, align 8, !tbaa !92 - %202 = xor i32 %201, %168 - %203 = getelementptr inbounds nuw i8, ptr %132, i64 12 - %204 = load i32, ptr %203, align 4, !tbaa !92 +_ZN8rawspeed12_GLOBAL__N_124OlympusDifferenceDecoder7getDiffERNS_14BitStreamerMSBE.exit18.i.i: ; preds = %181, %176 + %.sink274.i.i = phi i32 [ %189, %181 ], [ %178, %176 ] + %.sink272.i.i = phi i64 [ %182, %181 ], [ %storemerge243.i.i, %176 ] + %.sink.i.i = phi i32 [ %190, %181 ], [ %180, %176 ] + %.0.i17.i.i = phi i32 [ %188, %181 ], [ %177, %176 ] + %191 = zext nneg i32 %.sink274.i.i to i64 + %192 = shl i64 %.sink272.i.i, %191 + %193 = shl nsw i32 %.0.i17.i.i, %.sroa.speculated112.i.i + %194 = icmp samesign ult i32 %.sink.i.i, 65 + call void @llvm.assume(i1 %194) + %195 = icmp samesign ule i32 %.sroa.speculated112.i.i, %.sink.i.i + call void @llvm.assume(i1 %195) + %196 = sub nuw nsw i32 64, %.sroa.speculated112.i.i + %197 = zext nneg i32 %196 to i64 + %198 = lshr i64 %192, %197 + %199 = trunc nuw nsw i64 %198 to i32 + %200 = sub nsw i32 %.sink.i.i, %.sroa.speculated112.i.i + %201 = zext nneg i32 %.sroa.speculated112.i.i to i64 + %202 = shl i64 %192, %201 + %203 = or i32 %193, %199 + store i32 %203, ptr %158, align 8, !tbaa !92 + %204 = xor i32 %203, %170 + %205 = getelementptr inbounds nuw i8, ptr %134, i64 12 + %206 = load i32, ptr %205, align 4, !tbaa !92 %205 = add nsw i32 %204, %202 %206 = mul nsw i32 %205, 3 %207 = add nsw i32 %206, %204 %208 = ashr i32 %207, 5 store i32 %208, ptr %203, align 4, !tbaa !92 - %209 = icmp sgt i32 %201, 16 - %210 = add nsw i32 %158, 1 - %spec.select.i.i = select i1 %209, i32 0, i32 %210 - %211 = lshr i32 %166, 12 - %212 = and i32 %211, 3 - store i32 %spec.select.i.i, ptr %157, align 8, !tbaa !92 - %213 = shl nsw i32 %205, 2 - %214 = or disjoint i32 %213, %212 + %210 = icmp sgt i32 %201, 16 + %210 = add nsw i32 %160, 1 + %211 = select i1 %209, i32 0, i32 %210 + %212 = lshr i32 %166, 12 + %spec.select.i.i = and i32 %212, 3 + store i32 %211, ptr %157, align 8, !tbaa !92 + %214 = shl nsw i32 %205, 2 + %214 = or disjoint i32 %213, %spec.select.i.i br i1 %117, label %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit25.i.i, label %215 -215: ; preds = %_ZN8rawspeed12_GLOBAL__N_124OlympusDifferenceDecoder7getDiffERNS_14BitStreamerMSBE.exit18.i.i +215: ; preds = %_ZN8rawspeed12_GLOBAL__N_124OlympusDifferenceDecoder7getDiffERNS_14BitStreamerMSBE.exit18.i.i %216 = icmp samesign ult i64 %indvars.iv.i.i, %111 call void @llvm.assume(i1 %216) call void @llvm.assume(i1 %119) @@ -670,197 +670,197 @@ _ZN8rawspeed12_GLOBAL__N_124OlympusDifferenceDecoder7getDiffERNS_14BitStreamerMS _ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit25.i.i: ; preds = %215, %_ZN8rawspeed12_GLOBAL__N_124OlympusDifferenceDecoder7getDiffERNS_14BitStreamerMSBE.exit18.i.i %.0.i23.i.i = phi i32 [ %219, %215 ], [ 0, %_ZN8rawspeed12_GLOBAL__N_124OlympusDifferenceDecoder7getDiffERNS_14BitStreamerMSBE.exit18.i.i ] - %220 = add nsw i32 %214, %.0.i23.i.i - %221 = trunc i32 %220 to i16 - %222 = icmp samesign ult i64 %indvars.iv.i.i, %111 - call void @llvm.assume(i1 %222) + %222 = add nsw i32 %214, %.0.i23.i.i + %223 = trunc i32 %222 to i16 + %224 = icmp samesign ult i64 %indvars.iv.i.i, %111 + call void @llvm.assume(i1 %224) call void @llvm.assume(i1 %124) call void @llvm.assume(i1 %127) - %223 = getelementptr inbounds nuw i16, ptr %128, i64 %indvars.iv.i.i - store i16 %221, ptr %223, align 2, !tbaa !115 + %225 = getelementptr inbounds nuw i16, ptr %128, i64 %indvars.iv.i.i + store i16 %223, ptr %225, align 2, !tbaa !115 %indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1 %.not.i.i10.i = icmp eq i64 %indvars.iv.next.i.i, 2 - br i1 %.not.i.i10.i, label %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit.preheader.i.i, label %129, !llvm.loop !117 + br i1 %.not.i.i10.i, label %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit.preheader.i.i, label %131, !llvm.loop !117 .preheader.i.i: ; preds = %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit.preheader.i.i, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit12.i.i - %.sroa.012.1.i = phi i64 [ %300, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit12.i.i ], [ %200, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit.preheader.i.i ] + %.sroa.012.1.i = phi i64 [ %302, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit12.i.i ], [ %202, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit.preheader.i.i ] %.sroa.1915.3.i = phi i32 [ %.sroa.1915.5.i, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit12.i.i ], [ %.sroa.1915.2.i, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit.preheader.i.i ] %indvars.iv267.i.i = phi i64 [ %indvars.iv.next268.i.i, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit12.i.i ], [ 1, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit.preheader.i.i ] %.promoted248261.i.i = phi i32 [ %.promoted248259.i.i, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit12.i.i ], [ %.promoted258.i.i, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit.preheader.i.i ] - %.promoted247257.i.i = phi i32 [ %298, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit12.i.i ], [ %198, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit.preheader.i.i ] - %224 = shl nuw nsw i64 %indvars.iv267.i.i, 1 - br label %225 + %.promoted247257.i.i = phi i32 [ %300, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit12.i.i ], [ %200, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit.preheader.i.i ] + %226 = shl nuw nsw i64 %indvars.iv267.i.i, 1 + br label %227 -225: ; preds = %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit.i.i, %.preheader.i.i +227: ; preds = %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit.i.i, %.preheader.i.i %.sroa.1915.4.i = phi i32 [ %.sroa.1915.3.i, %.preheader.i.i ], [ %.sroa.1915.5.i, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit.i.i ] %indvars.iv264.i.i = phi i64 [ 0, %.preheader.i.i ], [ %indvars.iv.next265.i.i, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit.i.i ] %.promoted248260.i.i = phi i32 [ %.promoted248261.i.i, %.preheader.i.i ], [ %.promoted248259.i.i, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit.i.i ] - %226 = phi i32 [ %.promoted247257.i.i, %.preheader.i.i ], [ %298, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit.i.i ] - %227 = phi i32 [ %.promoted248261.i.i, %.preheader.i.i ], [ %254, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit.i.i ] - %storemerge235251252.i.i = phi i64 [ %.sroa.012.1.i, %.preheader.i.i ], [ %300, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit.i.i ] - %228 = add nuw nsw i64 %indvars.iv264.i.i, %224 - %229 = getelementptr inbounds nuw [2 x %"class.rawspeed::(anonymous namespace)::OlympusDifferenceDecoder"], ptr %3, i64 0, i64 %indvars.iv264.i.i - %230 = icmp samesign ult i32 %226, 65 - call void @llvm.assume(i1 %230) - %.not.i34.i.i = icmp samesign ult i32 %226, 32 - br i1 %.not.i34.i.i, label %231, label %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit41.i.i - -231: ; preds = %225 + %228 = phi i32 [ %.promoted247257.i.i, %.preheader.i.i ], [ %300, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit.i.i ] + %229 = phi i32 [ %.promoted248261.i.i, %.preheader.i.i ], [ %256, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit.i.i ] + %storemerge235251252.i.i = phi i64 [ %.sroa.012.1.i, %.preheader.i.i ], [ %302, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit.i.i ] + %230 = add nuw nsw i64 %indvars.iv264.i.i, %226 + %231 = getelementptr inbounds nuw [2 x %"class.rawspeed::(anonymous namespace)::OlympusDifferenceDecoder"], ptr %3, i64 0, i64 %indvars.iv264.i.i + %232 = icmp samesign ult i32 %228, 65 + call void @llvm.assume(i1 %232) + %.not.i34.i.i = icmp samesign ult i32 %228, 32 + br i1 %.not.i34.i.i, label %233, label %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit41.i.i + +233: ; preds = %227 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %.sroa.0.i.i33.i.i) - %232 = add nuw nsw i32 %227, 4 - %.not.i.i35.i.i = icmp samesign ugt i32 %232, %78 - br i1 %.not.i.i35.i.i, label %236, label %233, !prof !93 + %234 = add nuw nsw i32 %229, 4 + %.not.i.i35.i.i = icmp samesign ugt i32 %234, %78 + br i1 %.not.i.i35.i.i, label %238, label %235, !prof !93 -233: ; preds = %231 - %234 = zext nneg i32 %227 to i64 - %235 = getelementptr inbounds nuw i8, ptr %84, i64 %234 +235: ; preds = %233 + %236 = zext nneg i32 %229 to i64 + %237 = getelementptr inbounds nuw i8, ptr %84, i64 %236 br label %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i36.i.i -236: ; preds = %231 - %237 = icmp samesign ugt i32 %227, %110 - br i1 %237, label %.invoke, label %240, !prof !93 +238: ; preds = %233 + %239 = icmp samesign ugt i32 %229, %110 + br i1 %239, label %.invoke, label %242, !prof !93 -.invoke: ; preds = %139, %236, %_ZNK8rawspeed10ByteStream19peekRemainingBufferEv.exit.i, %_ZN8rawspeed10ByteStream9skipBytesEj.exit.i, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImplC2ENS_8RawImageE.exit - %238 = phi ptr [ @.str.4, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImplC2ENS_8RawImageE.exit ], [ @.str.6, %_ZN8rawspeed10ByteStream9skipBytesEj.exit.i ], [ @.str.7, %_ZNK8rawspeed10ByteStream19peekRemainingBufferEv.exit.i ], [ @.str.8, %236 ], [ @.str.8, %139 ] - %239 = phi ptr [ @__PRETTY_FUNCTION__._ZNK8rawspeed10ByteStream5checkEj, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImplC2ENS_8RawImageE.exit ], [ @__PRETTY_FUNCTION__._ZNK8rawspeed6Buffer10getSubViewEjj, %_ZN8rawspeed10ByteStream9skipBytesEj.exit.i ], [ @__PRETTY_FUNCTION__._ZN8rawspeed26BitStreamerReplenisherBaseINS_14BitStreamerMSBEEC2ENS_10Array1DRefIKSt4byteEE, %_ZNK8rawspeed10ByteStream19peekRemainingBufferEv.exit.i ], [ @__PRETTY_FUNCTION__._ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv, %236 ], [ @__PRETTY_FUNCTION__._ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv, %139 ] - invoke void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_11IOExceptionEEEvPKcz(ptr noundef nonnull %238, ptr noundef nonnull %239) #15 - to label %.cont unwind label %402 +.invoke: ; preds = %141, %238, %_ZNK8rawspeed10ByteStream19peekRemainingBufferEv.exit.i, %_ZN8rawspeed10ByteStream9skipBytesEj.exit.i, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImplC2ENS_8RawImageE.exit + %240 = phi ptr [ @.str.4, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImplC2ENS_8RawImageE.exit ], [ @.str.6, %_ZN8rawspeed10ByteStream9skipBytesEj.exit.i ], [ @.str.7, %_ZNK8rawspeed10ByteStream19peekRemainingBufferEv.exit.i ], [ @.str.8, %238 ], [ @.str.8, %141 ] + %241 = phi ptr [ @__PRETTY_FUNCTION__._ZNK8rawspeed10ByteStream5checkEj, %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImplC2ENS_8RawImageE.exit ], [ @__PRETTY_FUNCTION__._ZNK8rawspeed6Buffer10getSubViewEjj, %_ZN8rawspeed10ByteStream9skipBytesEj.exit.i ], [ @__PRETTY_FUNCTION__._ZN8rawspeed26BitStreamerReplenisherBaseINS_14BitStreamerMSBEEC2ENS_10Array1DRefIKSt4byteEE, %_ZNK8rawspeed10ByteStream19peekRemainingBufferEv.exit.i ], [ @__PRETTY_FUNCTION__._ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv, %238 ], [ @__PRETTY_FUNCTION__._ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv, %141 ] + invoke void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_11IOExceptionEEEvPKcz(ptr noundef nonnull %240, ptr noundef nonnull %241) #15 + to label %.cont unwind label %404 .cont: ; preds = %.invoke unreachable -240: ; preds = %236 +242: ; preds = %238 store i32 0, ptr %.sroa.0.i.i33.i.i, align 4 - %.sroa.speculated26.i.i.i39.i.i = call i32 @llvm.umin.i32(i32 %78, i32 %227) - %241 = add nuw nsw i32 %.sroa.speculated26.i.i.i39.i.i, 4 - %.sroa.speculated.i.i.i40.i.i = call i32 @llvm.umin.i32(i32 %78, i32 %241) - %242 = sub nsw i32 %.sroa.speculated.i.i.i40.i.i, %.sroa.speculated26.i.i.i39.i.i - %243 = icmp ult i32 %242, 5 - call void @llvm.assume(i1 %243) - %244 = zext nneg i32 %.sroa.speculated26.i.i.i39.i.i to i64 - %245 = getelementptr inbounds nuw i8, ptr %84, i64 %244 - %246 = zext nneg i32 %242 to i64 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %.sroa.0.i.i33.i.i, ptr nonnull align 1 %245, i64 %246, i1 false) + %.sroa.speculated26.i.i.i39.i.i = call i32 @llvm.umin.i32(i32 %78, i32 %229) + %243 = add nuw nsw i32 %.sroa.speculated26.i.i.i39.i.i, 4 + %.sroa.speculated.i.i.i40.i.i = call i32 @llvm.umin.i32(i32 %78, i32 %243) + %244 = sub nsw i32 %.sroa.speculated.i.i.i40.i.i, %.sroa.speculated26.i.i.i39.i.i + %245 = icmp ult i32 %244, 5 + call void @llvm.assume(i1 %245) + %246 = zext nneg i32 %.sroa.speculated26.i.i.i39.i.i to i64 + %247 = getelementptr inbounds nuw i8, ptr %84, i64 %246 + %248 = zext nneg i32 %244 to i64 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %.sroa.0.i.i33.i.i, ptr nonnull align 1 %247, i64 %248, i1 false) br label %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i36.i.i -_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i36.i.i: ; preds = %240, %233 - %.sroa.0.0..sroa.0.0..in.i.i37.i.i = phi ptr [ %.sroa.0.i.i33.i.i, %240 ], [ %235, %233 ] +_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i36.i.i: ; preds = %242, %235 + %.sroa.0.0..sroa.0.0..in.i.i37.i.i = phi ptr [ %.sroa.0.i.i33.i.i, %242 ], [ %237, %235 ] %.sroa.0.0..sroa.0.0..i.i38.i.i = load i32, ptr %.sroa.0.0..sroa.0.0..in.i.i37.i.i, align 1 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %.sroa.0.i.i33.i.i) - %247 = call i32 @llvm.bswap.i32(i32 %.sroa.0.0..sroa.0.0..i.i38.i.i) - %248 = zext i32 %247 to i64 - %249 = or disjoint i32 %226, 32 - %250 = sub nuw nsw i32 32, %226 - %251 = zext nneg i32 %250 to i64 - %252 = shl nuw i64 %248, %251 - %253 = or i64 %252, %storemerge235251252.i.i + %249 = call i32 @llvm.bswap.i32(i32 %.sroa.0.0..sroa.0.0..i.i38.i.i) + %250 = zext i32 %249 to i64 + %251 = or disjoint i32 %228, 32 + %252 = sub nuw nsw i32 32, %228 + %253 = zext nneg i32 %252 to i64 + %254 = shl nuw i64 %250, %253 + %255 = or i64 %254, %storemerge235251252.i.i br label %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit41.i.i -_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit41.i.i: ; preds = %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i36.i.i, %225 - %.sroa.1915.5.i = phi i32 [ %232, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i36.i.i ], [ %.sroa.1915.4.i, %225 ] - %.promoted248259.i.i = phi i32 [ %232, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i36.i.i ], [ %.promoted248260.i.i, %225 ] - %storemerge235250.i.i = phi i64 [ %253, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i36.i.i ], [ %storemerge235251252.i.i, %225 ] - %254 = phi i32 [ %232, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i36.i.i ], [ %227, %225 ] - %255 = phi i32 [ %249, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i36.i.i ], [ %226, %225 ] - %256 = getelementptr inbounds nuw i8, ptr %229, i64 8 - %257 = getelementptr inbounds nuw i8, ptr %229, i64 16 - %258 = load i32, ptr %257, align 8, !tbaa !92 - %.inv.i.i.i = icmp sgt i32 %258, 2 - %259 = load i32, ptr %256, align 8, !tbaa !92 - %260 = and i32 %259, 65535 - %261 = call noundef range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %260, i1 false) +_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit41.i.i: ; preds = %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i36.i.i, %227 + %.sroa.1915.5.i = phi i32 [ %234, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i36.i.i ], [ %.sroa.1915.4.i, %227 ] + %.promoted248259.i.i = phi i32 [ %234, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i36.i.i ], [ %.promoted248260.i.i, %227 ] + %storemerge235250.i.i = phi i64 [ %255, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i36.i.i ], [ %storemerge235251252.i.i, %227 ] + %256 = phi i32 [ %234, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i36.i.i ], [ %229, %227 ] + %257 = phi i32 [ %251, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i36.i.i ], [ %228, %227 ] + %258 = getelementptr inbounds nuw i8, ptr %231, i64 8 + %259 = getelementptr inbounds nuw i8, ptr %231, i64 16 + %260 = load i32, ptr %259, align 8, !tbaa !92 + %.inv.i.i.i = icmp sgt i32 %260, 2 + %261 = load i32, ptr %258, align 8, !tbaa !92 + %262 = and i32 %261, 65535 + %263 = call noundef range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %262, i1 false) %.neg240.i.i = select i1 %.inv.i.i.i, i32 32, i32 30 - %262 = sub nsw i32 %.neg240.i.i, %261 - %263 = select i1 %.inv.i.i.i, i32 2, i32 4 - %.sroa.speculated.i.i = call i32 @llvm.smax.i32(i32 %262, i32 %263) - %264 = icmp sgt i32 %254, -1 - call void @llvm.assume(i1 %264) - %265 = lshr i64 %storemerge235250.i.i, 49 - %266 = trunc nuw nsw i64 %265 to i32 - %267 = lshr i32 %266, 14 - %268 = sub nsw i32 0, %267 - %269 = load ptr, ptr %229, align 8, !tbaa !112 - %270 = and i64 %265, 4095 - %271 = load ptr, ptr %269, align 8, !tbaa !94 - %272 = getelementptr inbounds nuw i8, ptr %271, i64 %270 - %273 = load i8, ptr %272, align 1, !tbaa !91 - %.not.i13.i.i = icmp eq i8 %273, 12 - br i1 %.not.i13.i.i, label %279, label %274, !prof !93 - -274: ; preds = %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit41.i.i - %275 = sext i8 %273 to i32 - %276 = add nsw i32 %275, 4 - %277 = icmp samesign ule i32 %276, %255 - call void @llvm.assume(i1 %277) - %278 = sub nsw i32 %255, %276 + %264 = sub nsw i32 %.neg240.i.i, %263 + %265 = select i1 %.inv.i.i.i, i32 2, i32 4 + %.sroa.speculated.i.i = call i32 @llvm.smax.i32(i32 %264, i32 %265) + %266 = icmp sgt i32 %256, -1 + call void @llvm.assume(i1 %266) + %267 = lshr i64 %storemerge235250.i.i, 49 + %268 = trunc nuw nsw i64 %267 to i32 + %269 = lshr i32 %268, 14 + %270 = sub nsw i32 0, %269 + %271 = load ptr, ptr %231, align 8, !tbaa !112 + %272 = and i64 %267, 4095 + %273 = load ptr, ptr %271, align 8, !tbaa !94 + %274 = getelementptr inbounds nuw i8, ptr %273, i64 %272 + %275 = load i8, ptr %274, align 1, !tbaa !91 + %.not.i13.i.i = icmp eq i8 %275, 12 + br i1 %.not.i13.i.i, label %281, label %276, !prof !93 + +276: ; preds = %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit41.i.i + %277 = sext i8 %275 to i32 + %278 = add nsw i32 %277, 4 + %279 = icmp samesign ule i32 %278, %257 + call void @llvm.assume(i1 %279) + %280 = sub nsw i32 %257, %278 br label %_ZN8rawspeed12_GLOBAL__N_124OlympusDifferenceDecoder7getDiffERNS_14BitStreamerMSBE.exit.i.i -279: ; preds = %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit41.i.i - %280 = shl i64 %storemerge235250.i.i, 15 - %281 = icmp slt i32 %262, 16 - call void @llvm.assume(i1 %281) - %282 = icmp ne i32 %262, 15 - call void @llvm.assume(i1 %282) - %283 = add nuw nsw i32 %.sroa.speculated.i.i, 49 - %284 = zext nneg i32 %283 to i64 - %285 = lshr i64 %280, %284 - %286 = trunc nuw nsw i64 %285 to i32 - %287 = sub nuw nsw i32 16, %.sroa.speculated.i.i - %.neg.i = add nsw i32 %255, -31 - %288 = add nuw nsw i32 %.neg.i, %.sroa.speculated.i.i +281: ; preds = %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit41.i.i + %282 = shl i64 %storemerge235250.i.i, 15 + %283 = icmp slt i32 %264, 16 + call void @llvm.assume(i1 %283) + %284 = icmp ne i32 %264, 15 + call void @llvm.assume(i1 %284) + %285 = add nuw nsw i32 %.sroa.speculated.i.i, 49 + %286 = zext nneg i32 %285 to i64 + %287 = lshr i64 %282, %286 + %288 = trunc nuw nsw i64 %287 to i32 + %289 = sub nuw nsw i32 16, %.sroa.speculated.i.i + %.neg.i = add nsw i32 %257, -31 + %290 = add nuw nsw i32 %.neg.i, %.sroa.speculated.i.i br label %_ZN8rawspeed12_GLOBAL__N_124OlympusDifferenceDecoder7getDiffERNS_14BitStreamerMSBE.exit.i.i -_ZN8rawspeed12_GLOBAL__N_124OlympusDifferenceDecoder7getDiffERNS_14BitStreamerMSBE.exit.i.i: ; preds = %279, %274 - %.sink277.i.i = phi i32 [ %287, %279 ], [ %276, %274 ] - %.sink275.i.i = phi i64 [ %280, %279 ], [ %storemerge235250.i.i, %274 ] - %.sink270.i.i = phi i32 [ %288, %279 ], [ %278, %274 ] - %.0.i14.i.i = phi i32 [ %286, %279 ], [ %275, %274 ] - %289 = zext nneg i32 %.sink277.i.i to i64 - %290 = shl i64 %.sink275.i.i, %289 - %291 = shl nsw i32 %.0.i14.i.i, %.sroa.speculated.i.i - %292 = icmp samesign ult i32 %.sink270.i.i, 65 - call void @llvm.assume(i1 %292) - %293 = icmp samesign ule i32 %.sroa.speculated.i.i, %.sink270.i.i - call void @llvm.assume(i1 %293) - %294 = sub nuw nsw i32 64, %.sroa.speculated.i.i - %295 = zext nneg i32 %294 to i64 - %296 = lshr i64 %290, %295 - %297 = trunc nuw nsw i64 %296 to i32 - %298 = sub nsw i32 %.sink270.i.i, %.sroa.speculated.i.i - %299 = zext nneg i32 %.sroa.speculated.i.i to i64 - %300 = shl i64 %290, %299 - %301 = or i32 %291, %297 - store i32 %301, ptr %256, align 8, !tbaa !92 - %302 = xor i32 %301, %268 - %303 = getelementptr inbounds nuw i8, ptr %229, i64 12 - %304 = load i32, ptr %303, align 4, !tbaa !92 +_ZN8rawspeed12_GLOBAL__N_124OlympusDifferenceDecoder7getDiffERNS_14BitStreamerMSBE.exit.i.i: ; preds = %281, %276 + %.sink277.i.i = phi i32 [ %289, %281 ], [ %278, %276 ] + %.sink275.i.i = phi i64 [ %282, %281 ], [ %storemerge235250.i.i, %276 ] + %.sink270.i.i = phi i32 [ %290, %281 ], [ %280, %276 ] + %.0.i14.i.i = phi i32 [ %288, %281 ], [ %277, %276 ] + %291 = zext nneg i32 %.sink277.i.i to i64 + %292 = shl i64 %.sink275.i.i, %291 + %293 = shl nsw i32 %.0.i14.i.i, %.sroa.speculated.i.i + %294 = icmp samesign ult i32 %.sink270.i.i, 65 + call void @llvm.assume(i1 %294) + %295 = icmp samesign ule i32 %.sroa.speculated.i.i, %.sink270.i.i + call void @llvm.assume(i1 %295) + %296 = sub nuw nsw i32 64, %.sroa.speculated.i.i + %297 = zext nneg i32 %296 to i64 + %298 = lshr i64 %292, %297 + %299 = trunc nuw nsw i64 %298 to i32 + %300 = sub nsw i32 %.sink270.i.i, %.sroa.speculated.i.i + %301 = zext nneg i32 %.sroa.speculated.i.i to i64 + %302 = shl i64 %292, %301 + %303 = or i32 %293, %299 + store i32 %303, ptr %258, align 8, !tbaa !92 + %304 = xor i32 %303, %270 + %305 = getelementptr inbounds nuw i8, ptr %231, i64 12 + %306 = load i32, ptr %305, align 4, !tbaa !92 %305 = add nsw i32 %304, %302 %306 = mul nsw i32 %305, 3 %307 = add nsw i32 %306, %304 %308 = ashr i32 %307, 5 store i32 %308, ptr %303, align 4, !tbaa !92 - %309 = icmp sgt i32 %301, 16 - %310 = add nsw i32 %258, 1 - %spec.select234.i.i = select i1 %309, i32 0, i32 %310 - %311 = lshr i32 %266, 12 - %312 = and i32 %311, 3 - store i32 %spec.select234.i.i, ptr %257, align 8, !tbaa !92 - %313 = shl nsw i32 %305, 2 - %314 = or disjoint i32 %313, %312 - %315 = add nsw i64 %228, -2 + %310 = icmp sgt i32 %301, 16 + %310 = add nsw i32 %260, 1 + %311 = select i1 %309, i32 0, i32 %310 + %312 = lshr i32 %266, 12 + %spec.select234.i.i = and i32 %312, 3 + store i32 %311, ptr %257, align 8, !tbaa !92 + %314 = shl nsw i32 %305, 2 + %314 = or disjoint i32 %313, %spec.select234.i.i + %315 = add nsw i64 %230, -2 %316 = icmp samesign ult i64 %315, %111 call void @llvm.assume(i1 %316) - %317 = getelementptr inbounds nuw i16, ptr %128, i64 %315 + %318 = getelementptr inbounds nuw i16, ptr %128, i64 %315 %318 = load i16, ptr %317, align 2, !tbaa !115 %319 = zext i16 %318 to i32 br i1 %117, label %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit.i.i, label %320 -320: ; preds = %_ZN8rawspeed12_GLOBAL__N_124OlympusDifferenceDecoder7getDiffERNS_14BitStreamerMSBE.exit.i.i +320: ; preds = %_ZN8rawspeed12_GLOBAL__N_124OlympusDifferenceDecoder7getDiffERNS_14BitStreamerMSBE.exit.i.i %321 = icmp samesign ult i64 %228, %111 call void @llvm.assume(i1 %321) call void @llvm.assume(i1 %119) call void @llvm.assume(i1 %122) - %322 = getelementptr inbounds nuw i16, ptr %123, i64 %228 + %322 = getelementptr inbounds nuw i16, ptr %123, i64 %230 %323 = load i16, ptr %322, align 2, !tbaa !115 %324 = zext i16 %323 to i32 %325 = getelementptr inbounds nuw i16, ptr %123, i64 %315 @@ -871,45 +871,45 @@ _ZN8rawspeed12_GLOBAL__N_124OlympusDifferenceDecoder7getDiffERNS_14BitStreamerMS %330 = xor i32 %328, %329 %331 = icmp slt i32 %330, 0 %332 = icmp ne i16 %318, %326 - %or.cond3.i.i.i = and i1 %332, %331 - %333 = icmp ne i16 %323, %326 - %or.cond5.i.i.i = and i1 %333, %or.cond3.i.i.i - %334 = call i32 @llvm.abs.i32(i32 %328, i1 true) + %333 = and i1 %332, %331 + %334 = icmp ne i16 %323, %326 + %or.cond3.i.i.i = and i1 %334, %333 + %335 = call i32 @llvm.abs.i32(i32 %328, i1 true) br i1 %or.cond5.i.i.i, label %335, label %344 -335: ; preds = %320 +335:; preds = %320 %336 = icmp samesign ugt i32 %334, 32 %337 = call i32 @llvm.abs.i32(i32 %329, i1 true) %338 = icmp samesign ugt i32 %337, 32 - %or.cond27.i.i.i = select i1 %336, i1 true, i1 %338 + %339 = select i1 %336, i1 true, i1 %338 br i1 %or.cond27.i.i.i, label %339, label %341 -339: ; preds = %335 +339: ; preds = %335 %340 = add nsw i32 %329, %319 br label %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit.i.i -341: ; preds = %335 - %342 = add nuw nsw i32 %324, %319 - %343 = lshr i32 %342, 1 +343: ; preds = %335 + %344 = add nuw nsw i32 %324, %319 + %345 = lshr i32 %344, 1 br label %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit.i.i -344: ; preds = %320 - %345 = call i32 @llvm.abs.i32(i32 %329, i1 true) - %346 = icmp samesign ugt i32 %334, %345 - %347 = select i1 %346, i32 %319, i32 %324 +346: ; preds = %320 + %347 = call i32 @llvm.abs.i32(i32 %329, i1 true) + %348 = icmp samesign ugt i32 %334, %347 + %349 = select i1 %348, i32 %319, i32 %324 br label %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit.i.i -_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit.i.i: ; preds = %344, %341, %339, %_ZN8rawspeed12_GLOBAL__N_124OlympusDifferenceDecoder7getDiffERNS_14BitStreamerMSBE.exit.i.i - %.0.i19.i.i = phi i32 [ %340, %339 ], [ %343, %341 ], [ %347, %344 ], [ %319, %_ZN8rawspeed12_GLOBAL__N_124OlympusDifferenceDecoder7getDiffERNS_14BitStreamerMSBE.exit.i.i ] - %348 = add nsw i32 %314, %.0.i19.i.i - %349 = trunc i32 %348 to i16 - %350 = icmp samesign ult i64 %228, %111 - call void @llvm.assume(i1 %350) - %351 = getelementptr inbounds nuw i16, ptr %128, i64 %228 - store i16 %349, ptr %351, align 2, !tbaa !115 +_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit.i.i: ; preds = %346, %343, %339, %_ZN8rawspeed12_GLOBAL__N_124OlympusDifferenceDecoder7getDiffERNS_14BitStreamerMSBE.exit.i.i + %.0.i19.i.i = phi i32 [ %340, %339 ], [ %345, %343 ], [ %349, %346 ], [ %319, %_ZN8rawspeed12_GLOBAL__N_124OlympusDifferenceDecoder7getDiffERNS_14BitStreamerMSBE.exit.i.i ] + %350 = add nsw i32 %314, %.0.i19.i.i + %351 = trunc i32 %350 to i16 + %352 = icmp samesign ult i64 %230, %111 + call void @llvm.assume(i1 %352) + %353 = getelementptr inbounds nuw i16, ptr %128, i64 %230 + store i16 %351, ptr %353, align 2, !tbaa !115 %indvars.iv.next265.i.i = add nuw nsw i64 %indvars.iv264.i.i, 1 %.not.i11.i.i = icmp eq i64 %indvars.iv.next265.i.i, 2 - br i1 %.not.i11.i.i, label %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit12.i.i, label %225, !llvm.loop !117 + br i1 %.not.i11.i.i, label %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit12.i.i, label %227, !llvm.loop !117 _ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit12.i.i: ; preds = %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl7getPredENS_10Array2DRefItEEii.exit.i.i %indvars.iv.next268.i.i = add nuw nsw i64 %indvars.iv267.i.i, 1 @@ -917,8 +917,8 @@ _ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayI br i1 %.not.i.i, label %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl13decompressRowERNS_14BitStreamerMSBEi.exit.i, label %.preheader.i.i, !llvm.loop !118 _ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl13decompressRowERNS_14BitStreamerMSBEi.exit.i: ; preds = %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit12.i.i, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit.preheader.i.i - %.sroa.012.2.i = phi i64 [ %200, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit.preheader.i.i ], [ %300, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit12.i.i ] - %.sroa.9.1.i = phi i32 [ %198, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit.preheader.i.i ], [ %298, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit12.i.i ] + %.sroa.012.2.i = phi i64 [ %202, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit.preheader.i.i ], [ %302, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit12.i.i ] + %.sroa.9.1.i = phi i32 [ %200, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit.preheader.i.i ], [ %300, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit12.i.i ] %.sroa.1915.6.i = phi i32 [ %.sroa.1915.2.i, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit.preheader.i.i ], [ %.sroa.1915.5.i, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl15decompressGroupERSt5arrayINS0_24OlympusDifferenceDecoderELm2EERNS_14BitStreamerMSBEii.exit12.i.i ] call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %3) #20 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 @@ -926,128 +926,128 @@ _ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl13decompressRowERNS_14BitStr br i1 %exitcond.not.i, label %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl10decompressENS_10ByteStreamE.exit, label %116, !llvm.loop !119 _ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl10decompressENS_10ByteStreamE.exit: ; preds = %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl13decompressRowERNS_14BitStreamerMSBEi.exit.i - %352 = load ptr, ptr %21, align 8, !tbaa !94 - %.not.i.i.i.i.i11 = icmp eq ptr %352, null - br i1 %.not.i.i.i.i.i11, label %_ZN8rawspeed9SimpleLUTIaLi12EED2Ev.exit.i, label %353 - -353: ; preds = %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl10decompressENS_10ByteStreamE.exit - %354 = load ptr, ptr %22, align 8, !tbaa !97 - %355 = ptrtoint ptr %354 to i64 - %356 = ptrtoint ptr %352 to i64 - %357 = sub i64 %355, %356 - call void @_ZdlPvm(ptr noundef nonnull %352, i64 noundef %357) #23 + %354 = load ptr, ptr %21, align 8, !tbaa !94 + %.not.i.i.i.i.i11 = icmp eq ptr %354, null + br i1 %.not.i.i.i.i.i11, label %_ZN8rawspeed9SimpleLUTIaLi12EED2Ev.exit.i, label %355 + +355: ; preds = %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl10decompressENS_10ByteStreamE.exit + %356 = load ptr, ptr %22, align 8, !tbaa !97 + %357 = ptrtoint ptr %356 to i64 + %358 = ptrtoint ptr %354 to i64 + %359 = sub i64 %357, %358 + call void @_ZdlPvm(ptr noundef nonnull %354, i64 noundef %359) #23 br label %_ZN8rawspeed9SimpleLUTIaLi12EED2Ev.exit.i -_ZN8rawspeed9SimpleLUTIaLi12EED2Ev.exit.i: ; preds = %353, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl10decompressENS_10ByteStreamE.exit - %358 = load ptr, ptr %20, align 8, !tbaa !14 - %.not.i.i.i.i12 = icmp eq ptr %358, null - br i1 %.not.i.i.i.i12, label %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImplD2Ev.exit, label %359 - -359: ; preds = %_ZN8rawspeed9SimpleLUTIaLi12EED2Ev.exit.i - %360 = getelementptr inbounds nuw i8, ptr %358, i64 8 - %361 = load atomic i64, ptr %360 acquire, align 8 - %362 = icmp eq i64 %361, 4294967297 - %363 = trunc i64 %361 to i32 - br i1 %362, label %364, label %372 - -364: ; preds = %359 - store i32 0, ptr %360, align 8, !tbaa !86 - %365 = getelementptr inbounds nuw i8, ptr %358, i64 12 - store i32 0, ptr %365, align 4, !tbaa !88 - %366 = load ptr, ptr %358, align 8, !tbaa !89 - %367 = getelementptr inbounds nuw i8, ptr %366, i64 16 - %368 = load ptr, ptr %367, align 8 - call void %368(ptr noundef nonnull align 8 dereferenceable(16) %358) #20 - %369 = load ptr, ptr %358, align 8, !tbaa !89 - %370 = getelementptr inbounds nuw i8, ptr %369, i64 24 - %371 = load ptr, ptr %370, align 8 - call void %371(ptr noundef nonnull align 8 dereferenceable(16) %358) #20 +_ZN8rawspeed9SimpleLUTIaLi12EED2Ev.exit.i: ; preds = %355, %_ZNK8rawspeed12_GLOBAL__N_123OlympusDecompressorImpl10decompressENS_10ByteStreamE.exit + %360 = load ptr, ptr %20, align 8, !tbaa !14 + %.not.i.i.i.i12 = icmp eq ptr %360, null + br i1 %.not.i.i.i.i12, label %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImplD2Ev.exit, label %361 + +361: ; preds = %_ZN8rawspeed9SimpleLUTIaLi12EED2Ev.exit.i + %362 = getelementptr inbounds nuw i8, ptr %360, i64 8 + %363 = load atomic i64, ptr %362 acquire, align 8 + %364 = icmp eq i64 %363, 4294967297 + %365 = trunc i64 %363 to i32 + br i1 %364, label %366, label %374 + +366: ; preds = %361 + store i32 0, ptr %362, align 8, !tbaa !86 + %367 = getelementptr inbounds nuw i8, ptr %360, i64 12 + store i32 0, ptr %367, align 4, !tbaa !88 + %368 = load ptr, ptr %360, align 8, !tbaa !89 + %369 = getelementptr inbounds nuw i8, ptr %368, i64 16 + %370 = load ptr, ptr %369, align 8 + call void %368(ptr noundef nonnull align 8 dereferenceable(16) %360) #20 + %371 = load ptr, ptr %360, align 8, !tbaa !89 + %372 = getelementptr inbounds nuw i8, ptr %371, i64 24 + %373 = load ptr, ptr %372, align 8 + call void %371(ptr noundef nonnull align 8 dereferenceable(16) %360) #20 br label %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImplD2Ev.exit -372: ; preds = %359 - %373 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !91 - %.not.i.i.i.i1.i = icmp eq i8 %373, 0 - br i1 %.not.i.i.i.i1.i, label %376, label %374 +374: ; preds = %361 + %375 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !91 + %.not.i.i.i.i1.i = icmp eq i8 %375, 0 + br i1 %.not.i.i.i.i1.i, label %378, label %376 -374: ; preds = %372 - %375 = add nsw i32 %363, -1 - store i32 %375, ptr %360, align 4, !tbaa !92 +376: ; preds = %374 + %377 = add nsw i32 %365, -1 + store i32 %377, ptr %362, align 4, !tbaa !92 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i -376: ; preds = %372 - %377 = atomicrmw volatile add ptr %360, i32 -1 acq_rel, align 4 +378: ; preds = %374 + %379 = atomicrmw volatile add ptr %362, i32 -1 acq_rel, align 4 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i -_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i: ; preds = %376, %374 - %.0.i.i.i.i.i.i = phi i32 [ %363, %374 ], [ %377, %376 ] - %378 = icmp eq i32 %.0.i.i.i.i.i.i, 1 - br i1 %378, label %379, label %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImplD2Ev.exit, !prof !93 +_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i: ; preds = %378, %376 + %.0.i.i.i.i.i.i = phi i32 [ %365, %376 ], [ %379, %378 ] + %380 = icmp eq i32 %.0.i.i.i.i.i.i, 1 + br i1 %380, label %381, label %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImplD2Ev.exit, !prof !93 -379: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i - call void @_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv(ptr noundef nonnull align 8 dereferenceable(16) %358) #20 +381: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i + call void @_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv(ptr noundef nonnull align 8 dereferenceable(16) %360) #20 br label %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImplD2Ev.exit -_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImplD2Ev.exit: ; preds = %_ZN8rawspeed9SimpleLUTIaLi12EED2Ev.exit.i, %364, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i, %379 - %380 = load ptr, ptr %7, align 8, !tbaa !14 - %.not.i.i.i13 = icmp eq ptr %380, null - br i1 %.not.i.i.i13, label %_ZN8rawspeed8RawImageD2Ev.exit, label %381 - -381: ; preds = %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImplD2Ev.exit - %382 = getelementptr inbounds nuw i8, ptr %380, i64 8 - %383 = load atomic i64, ptr %382 acquire, align 8 - %384 = icmp eq i64 %383, 4294967297 - %385 = trunc i64 %383 to i32 - br i1 %384, label %386, label %394 - -386: ; preds = %381 - store i32 0, ptr %382, align 8, !tbaa !86 - %387 = getelementptr inbounds nuw i8, ptr %380, i64 12 - store i32 0, ptr %387, align 4, !tbaa !88 - %388 = load ptr, ptr %380, align 8, !tbaa !89 - %389 = getelementptr inbounds nuw i8, ptr %388, i64 16 - %390 = load ptr, ptr %389, align 8 - call void %390(ptr noundef nonnull align 8 dereferenceable(16) %380) #20 - %391 = load ptr, ptr %380, align 8, !tbaa !89 - %392 = getelementptr inbounds nuw i8, ptr %391, i64 24 - %393 = load ptr, ptr %392, align 8 - call void %393(ptr noundef nonnull align 8 dereferenceable(16) %380) #20 +_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImplD2Ev.exit: ; preds = %_ZN8rawspeed9SimpleLUTIaLi12EED2Ev.exit.i, %366, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i, %381 + %382 = load ptr, ptr %7, align 8, !tbaa !14 + %.not.i.i.i13 = icmp eq ptr %382, null + br i1 %.not.i.i.i13, label %_ZN8rawspeed8RawImageD2Ev.exit, label %383 + +383: ; preds = %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImplD2Ev.exit + %384 = getelementptr inbounds nuw i8, ptr %382, i64 8 + %385 = load atomic i64, ptr %384 acquire, align 8 + %386 = icmp eq i64 %385, 4294967297 + %387 = trunc i64 %385 to i32 + br i1 %386, label %388, label %396 + +388: ; preds = %383 + store i32 0, ptr %384, align 8, !tbaa !86 + %389 = getelementptr inbounds nuw i8, ptr %382, i64 12 + store i32 0, ptr %389, align 4, !tbaa !88 + %390 = load ptr, ptr %382, align 8, !tbaa !89 + %391 = getelementptr inbounds nuw i8, ptr %390, i64 16 + %392 = load ptr, ptr %391, align 8 + call void %390(ptr noundef nonnull align 8 dereferenceable(16) %382) #20 + %393 = load ptr, ptr %382, align 8, !tbaa !89 + %394 = getelementptr inbounds nuw i8, ptr %393, i64 24 + %395 = load ptr, ptr %394, align 8 + call void %393(ptr noundef nonnull align 8 dereferenceable(16) %382) #20 br label %_ZN8rawspeed8RawImageD2Ev.exit -394: ; preds = %381 - %395 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !91 - %.not.i.i.i.i14 = icmp eq i8 %395, 0 - br i1 %.not.i.i.i.i14, label %398, label %396 +396: ; preds = %383 + %397 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !91 + %.not.i.i.i.i14 = icmp eq i8 %397, 0 + br i1 %.not.i.i.i.i14, label %400, label %398 -396: ; preds = %394 - %397 = add nsw i32 %385, -1 - store i32 %397, ptr %382, align 4, !tbaa !92 +398: ; preds = %396 + %399 = add nsw i32 %387, -1 + store i32 %399, ptr %384, align 4, !tbaa !92 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i -398: ; preds = %394 - %399 = atomicrmw volatile add ptr %382, i32 -1 acq_rel, align 4 +400: ; preds = %396 + %401 = atomicrmw volatile add ptr %384, i32 -1 acq_rel, align 4 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i -_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i: ; preds = %398, %396 - %.0.i.i.i.i.i = phi i32 [ %385, %396 ], [ %399, %398 ] - %400 = icmp eq i32 %.0.i.i.i.i.i, 1 - br i1 %400, label %401, label %_ZN8rawspeed8RawImageD2Ev.exit, !prof !93 +_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i: ; preds = %400, %398 + %.0.i.i.i.i.i = phi i32 [ %387, %398 ], [ %401, %400 ] + %402 = icmp eq i32 %.0.i.i.i.i.i, 1 + br i1 %402, label %403, label %_ZN8rawspeed8RawImageD2Ev.exit, !prof !93 -401: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i - call void @_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv(ptr noundef nonnull align 8 dereferenceable(16) %380) #20 +403: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i + call void @_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv(ptr noundef nonnull align 8 dereferenceable(16) %382) #20 br label %_ZN8rawspeed8RawImageD2Ev.exit -_ZN8rawspeed8RawImageD2Ev.exit: ; preds = %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImplD2Ev.exit, %386, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i, %401 +_ZN8rawspeed8RawImageD2Ev.exit: ; preds = %_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImplD2Ev.exit, %388, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i, %403 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %4) #20 ret void -402: ; preds = %.invoke - %403 = landingpad { ptr, i32 } +404: ; preds = %.invoke + %405 = landingpad { ptr, i32 } cleanup call fastcc void @_ZN8rawspeed12_GLOBAL__N_123OlympusDecompressorImplD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %4) #20 br label %.body -.body: ; preds = %.body.i, %402 - %.pn = phi { ptr, i32 } [ %403, %402 ], [ %lpad.phi.i.i, %.body.i ] +.body: ; preds = %.body.i, %404 + %.pn = phi { ptr, i32 } [ %405, %404 ], [ %lpad.phi.i.i, %.body.i ] call void @_ZN8rawspeed8RawImageD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #20 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %4) #20 resume { ptr, i32 } %.pn diff --git a/bench/darktable/optimized/PentaxDecompressor.ll b/bench/darktable/optimized/PentaxDecompressor.ll index b0651e49516..16c35d6c6bc 100644 --- a/bench/darktable/optimized/PentaxDecompressor.ll +++ b/bench/darktable/optimized/PentaxDecompressor.ll @@ -1900,7 +1900,7 @@ _ZNK8rawspeed10ByteStream19peekRemainingBufferEv.exit: ; preds = %2 tail call void @llvm.assume(i1 %40) %41 = getelementptr inbounds nuw i8, ptr %39, i64 %34 %42 = icmp samesign ult i32 %33, 4 - br i1 %42, label %62, label %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit.preheader + br i1 %42, label %59, label %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit.preheader _ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit.preheader: ; preds = %_ZNK8rawspeed10ByteStream19peekRemainingBufferEv.exit %43 = icmp sgt i32 %13, 0 @@ -1928,47 +1928,47 @@ _ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequen %60 = zext nneg i32 %11 to i64 %61 = zext nneg i32 %17 to i64 %wide.trip.count241 = zext nneg i32 %13 to i64 - br label %63 + br label %60 -62: ; preds = %_ZNK8rawspeed10ByteStream19peekRemainingBufferEv.exit +59: ; preds = %_ZNK8rawspeed10ByteStream19peekRemainingBufferEv.exit tail call void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_11IOExceptionEEEvPKcz(ptr noundef nonnull @.str.17, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8rawspeed26BitStreamerReplenisherBaseINS_14BitStreamerMSBEEC2ENS_10Array1DRefIKSt4byteEE) #14 unreachable _ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit._crit_edge: ; preds = %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit, %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit.preheader ret void -63: ; preds = %.lr.ph, %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit +60: ; preds = %.lr.ph, %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit %indvars.iv238 = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next239, %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit ] %.sroa.4663.0225 = phi i32 [ 0, %.lr.ph ], [ %.sroa.4663.2, %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit ] %.sroa.16.0224 = phi i32 [ 0, %.lr.ph ], [ %.sroa.16.3, %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit ] %.sroa.037.0223 = phi i64 [ 0, %.lr.ph ], [ %.sroa.037.3, %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit ] call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #20 store i64 0, ptr %3, align 8 - %64 = icmp samesign ugt i64 %indvars.iv238, 1 - br i1 %64, label %65, label %77 + %61 = icmp samesign ugt i64 %indvars.iv238, 1 + br i1 %61, label %62, label %77 -65: ; preds = %63 - %66 = add nsw i64 %indvars.iv238, -2 - %67 = icmp samesign ult i64 %66, %58 - tail call void @llvm.assume(i1 %67) +62: ; preds = %60 + %63 = add nsw i64 %indvars.iv238, -2 + %64 = icmp samesign ult i64 %63, %58 + tail call void @llvm.assume(i1 %64) %68 = mul nuw nsw i64 %66, %59 - %69 = add nuw nsw i64 %68, %60 - %70 = icmp samesign ule i64 %69, %61 - tail call void @llvm.assume(i1 %70) - %71 = getelementptr inbounds nuw i16, ptr %6, i64 %68 + %66 = add nuw nsw i64 %68, %60 + %67 = icmp samesign ule i64 %66, %61 + tail call void @llvm.assume(i1 %67) + %69 = getelementptr inbounds nuw i16, ptr %6, i64 %68 + %72 = load i16, ptr %69, align 2, !tbaa !168 + %70 = zext i16 %72 to i32 + %71 = getelementptr inbounds nuw i8, ptr %71, i64 2 %72 = load i16, ptr %71, align 2, !tbaa !168 - %73 = zext i16 %72 to i32 - %74 = getelementptr inbounds nuw i8, ptr %71, i64 2 - %75 = load i16, ptr %74, align 2, !tbaa !168 - %76 = zext i16 %75 to i32 + %73 = zext i16 %75 to i32 store i32 %73, ptr %3, align 8 store i32 %76, ptr %.sroa.4.0..sroa_idx, align 4, !tbaa !131 br label %77 -77: ; preds = %65, %63 +77:; preds = %65, %63 %78 = load ptr, ptr %48, align 8 %79 = load ptr, ptr %50, align 8 - %80 = load ptr, ptr %49, align 8 + %77 = load ptr, ptr %49, align 8 %81 = ptrtoint ptr %79 to i64 %82 = ptrtoint ptr %80 to i64 %83 = sub i64 %81, %82 @@ -1990,173 +1990,173 @@ _ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequen call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #20 %indvars.iv.next239 = add nuw nsw i64 %indvars.iv238, 1 %exitcond242.not = icmp eq i64 %indvars.iv.next239, %wide.trip.count241 - br i1 %exitcond242.not, label %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit._crit_edge, label %63, !llvm.loop !169 - -96: ; preds = %77, %198 - %indvars.iv = phi i64 [ 0, %77 ], [ %indvars.iv.next, %198 ] - %.sroa.4663.1221 = phi i32 [ %.sroa.4663.0225, %77 ], [ %.sroa.4663.2, %198 ] - %.sroa.16.1220 = phi i32 [ %.sroa.16.0224, %77 ], [ %.sroa.16.3, %198 ] - %.sroa.037.1219 = phi i64 [ %.sroa.037.0223, %77 ], [ %.sroa.037.3, %198 ] - %97 = icmp samesign ult i32 %.sroa.16.1220, 65 - tail call void @llvm.assume(i1 %97) + br i1 %exitcond242.not, label %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit._crit_edge, label %60, !llvm.loop !169 + +95: ; preds = %77, %197 + %indvars.iv = phi i64 [ 0, %77 ], [ %indvars.iv.next, %197 ] + %.sroa.4663.1221 = phi i32 [ %.sroa.4663.0225, %77 ], [ %.sroa.4663.2, %197 ] + %.sroa.16.1220 = phi i32 [ %.sroa.16.0224, %77 ], [ %.sroa.16.3, %197 ] + %.sroa.037.1219 = phi i64 [ %.sroa.037.0223, %77 ], [ %.sroa.037.3, %197 ] + %96 = icmp samesign ult i32 %.sroa.16.1220, 65 + tail call void @llvm.assume(i1 %96) %.not.i31 = icmp samesign ult i32 %.sroa.16.1220, 32 - br i1 %.not.i31, label %98, label %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit + br i1 %.not.i31, label %97, label %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit -98: ; preds = %96 +97: ; preds = %95 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %.sroa.0.i.i) - %99 = add nuw nsw i32 %.sroa.4663.1221, 4 - %.not.i.i32 = icmp samesign ugt i32 %99, %33 - br i1 %.not.i.i32, label %103, label %100, !prof !133 + %98 = add nuw nsw i32 %.sroa.4663.1221, 4 + %.not.i.i32 = icmp samesign ugt i32 %98, %33 + br i1 %.not.i.i32, label %102, label %99, !prof !133 -100: ; preds = %98 - %101 = zext nneg i32 %.sroa.4663.1221 to i64 - %102 = getelementptr inbounds nuw i8, ptr %41, i64 %101 +99: ; preds = %97 + %100 = zext nneg i32 %.sroa.4663.1221 to i64 + %101 = getelementptr inbounds nuw i8, ptr %41, i64 %100 br label %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i -103: ; preds = %98 - %104 = icmp samesign ugt i32 %.sroa.4663.1221, %47 - br i1 %104, label %105, label %106, !prof !133 +102: ; preds = %97 + %103 = icmp samesign ugt i32 %.sroa.4663.1221, %47 + br i1 %103, label %104, label %105, !prof !133 -105: ; preds = %103 +104: ; preds = %102 tail call void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_11IOExceptionEEEvPKcz(ptr noundef nonnull @.str.28, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv) #14 unreachable -106: ; preds = %103 +105: ; preds = %102 store i32 0, ptr %.sroa.0.i.i, align 4 %.sroa.speculated26.i.i.i = tail call i32 @llvm.umin.i32(i32 %33, i32 %.sroa.4663.1221) - %107 = add nuw nsw i32 %.sroa.speculated26.i.i.i, 4 - %.sroa.speculated.i.i.i = tail call i32 @llvm.umin.i32(i32 %33, i32 %107) - %108 = sub nsw i32 %.sroa.speculated.i.i.i, %.sroa.speculated26.i.i.i - %109 = icmp ult i32 %108, 5 - tail call void @llvm.assume(i1 %109) - %110 = zext nneg i32 %.sroa.speculated26.i.i.i to i64 - %111 = getelementptr inbounds nuw i8, ptr %41, i64 %110 - %112 = zext nneg i32 %108 to i64 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %.sroa.0.i.i, ptr nonnull align 1 %111, i64 %112, i1 false) + %106 = add nuw nsw i32 %.sroa.speculated26.i.i.i, 4 + %.sroa.speculated.i.i.i = tail call i32 @llvm.umin.i32(i32 %33, i32 %106) + %107 = sub nsw i32 %.sroa.speculated.i.i.i, %.sroa.speculated26.i.i.i + %108 = icmp ult i32 %107, 5 + tail call void @llvm.assume(i1 %108) + %109 = zext nneg i32 %.sroa.speculated26.i.i.i to i64 + %110 = getelementptr inbounds nuw i8, ptr %41, i64 %109 + %111 = zext nneg i32 %107 to i64 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %.sroa.0.i.i, ptr nonnull align 1 %110, i64 %111, i1 false) br label %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i -_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i: ; preds = %106, %100 - %.sroa.0.0..sroa.0.0..in.i.i = phi ptr [ %.sroa.0.i.i, %106 ], [ %102, %100 ] +_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i: ; preds = %105, %99 + %.sroa.0.0..sroa.0.0..in.i.i = phi ptr [ %.sroa.0.i.i, %105 ], [ %101, %99 ] %.sroa.0.0..sroa.0.0..i.i = load i32, ptr %.sroa.0.0..sroa.0.0..in.i.i, align 1 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %.sroa.0.i.i) - %113 = tail call i32 @llvm.bswap.i32(i32 %.sroa.0.0..sroa.0.0..i.i) - %114 = zext i32 %113 to i64 - %115 = or disjoint i32 %.sroa.16.1220, 32 - %116 = sub nuw nsw i32 32, %.sroa.16.1220 - %117 = zext nneg i32 %116 to i64 - %118 = shl nuw i64 %114, %117 - %119 = or i64 %118, %.sroa.037.1219 + %112 = tail call i32 @llvm.bswap.i32(i32 %.sroa.0.0..sroa.0.0..i.i) + %113 = zext i32 %112 to i64 + %114 = or disjoint i32 %.sroa.16.1220, 32 + %115 = sub nuw nsw i32 32, %.sroa.16.1220 + %116 = zext nneg i32 %115 to i64 + %117 = shl nuw i64 %113, %116 + %118 = or i64 %117, %.sroa.037.1219 br label %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit -_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit: ; preds = %96, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i - %.sroa.037.4 = phi i64 [ %119, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i ], [ %.sroa.037.1219, %96 ] - %.sroa.16.4 = phi i32 [ %115, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i ], [ %.sroa.16.1220, %96 ] - %.sroa.4663.2 = phi i32 [ %99, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i ], [ %.sroa.4663.1221, %96 ] - %120 = lshr i64 %.sroa.037.4, 53 - %121 = getelementptr inbounds nuw i32, ptr %78, i64 %120 - %122 = load i32, ptr %121, align 4, !tbaa !132 - %123 = ashr i32 %122, 9 - %124 = and i32 %122, 255 - %125 = icmp samesign ult i32 %124, 33 - tail call void @llvm.assume(i1 %125) - %126 = sub nuw nsw i32 %.sroa.16.4, %124 - %127 = zext nneg i32 %124 to i64 - %128 = shl i64 %.sroa.037.4, %127 - %129 = and i32 %122, 256 - %.not.i = icmp eq i32 %129, 0 - br i1 %.not.i, label %130, label %_ZNK8rawspeed20PrefixCodeLUTDecoderINS_15BaselineCodeTagENS_23PrefixCodeLookupDecoderIS1_EEE6decodeINS_14BitStreamerMSBELb1EEEiRT_.exit - -130: ; preds = %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit - %.not17.i = icmp eq i32 %122, 0 - br i1 %.not17.i, label %135, label %131 - -131: ; preds = %130 +_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit: ; preds = %95, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i + %.sroa.037.4 = phi i64 [ %118, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i ], [ %.sroa.037.1219, %95 ] + %.sroa.16.4 = phi i32 [ %114, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i ], [ %.sroa.16.1220, %95 ] + %.sroa.4663.2 = phi i32 [ %98, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i ], [ %.sroa.4663.1221, %95 ] + %119 = lshr i64 %.sroa.037.4, 53 + %120 = getelementptr inbounds nuw i32, ptr %78, i64 %119 + %121 = load i32, ptr %120, align 4, !tbaa !132 + %122 = ashr i32 %121, 9 + %123 = and i32 %121, 255 + %124 = icmp samesign ult i32 %123, 33 + tail call void @llvm.assume(i1 %124) + %125 = sub nuw nsw i32 %.sroa.16.4, %123 + %126 = zext nneg i32 %123 to i64 + %127 = shl i64 %.sroa.037.4, %126 + %128 = and i32 %121, 256 + %.not.i = icmp eq i32 %128, 0 + br i1 %.not.i, label %129, label %_ZNK8rawspeed20PrefixCodeLUTDecoderINS_15BaselineCodeTagENS_23PrefixCodeLookupDecoderIS1_EEE6decodeINS_14BitStreamerMSBELb1EEEiRT_.exit + +129: ; preds = %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit + %.not17.i = icmp eq i32 %121, 0 + br i1 %.not17.i, label %135, label %130 + +130: ; preds = %129 %132 = trunc i32 %122 to i8 %133 = trunc i32 %123 to i8 %134 = icmp ne i8 %133, 0 tail call void @llvm.assume(i1 %134) br label %170 -135: ; preds = %130 - %136 = icmp samesign ugt i32 %126, 10 +135:; preds = %130 + %136 = icmp samesign ugt i32 %125, 10 tail call void @llvm.assume(i1 %136) %137 = add nsw i32 %126, -11 %138 = shl i64 %128, 11 - %139 = trunc nuw nsw i64 %120 to i32 + %.sroa.0.018.i = trunc nuw nsw i64 %119 to i32 %.sroa.0.018.i = trunc nuw nsw i64 %120 to i16 br i1 %86, label %.lr.ph.i, label %.critedge.i -.lr.ph.i: ; preds = %135, %.critedge2.i - %.sroa.037.6 = phi i64 [ %150, %.critedge2.i ], [ %138, %135 ] - %.sroa.16.6 = phi i32 [ %149, %.critedge2.i ], [ %137, %135 ] - %140 = phi i64 [ %155, %.critedge2.i ], [ 11, %135 ] - %.sroa.0.021.i = phi i16 [ %.sroa.0.0.i, %.critedge2.i ], [ %.sroa.0.018.i, %135 ] - %.sroa.8.020.i = phi i8 [ %154, %.critedge2.i ], [ 11, %135 ] - %.sroa.0.0.in19.i = phi i32 [ %153, %.critedge2.i ], [ %139, %135 ] +.lr.ph.i:; preds = %135, %.critedge2.i + %.sroa.16.6 = phi i64 [ %150, %.critedge2.i ], [ %138, %135 ] + %139 = phi i32 [ %149, %.critedge2.i ], [ %137, %135 ] + %.sroa.0.021.i = phi i64 [ %155, %.critedge2.i ], [ 11, %135 ] + %.sroa.8.020.i = phi i16 [ %155, %.critedge2.i ], [ %.sroa.0.018.i, %135 ] + %.sroa.0.0.in19.i = phi i8 [ %154, %.critedge2.i ], [ 11, %135 ] + %140 = phi i32 [ %153, %.critedge2.i ], [ %139, %135 ] %141 = getelementptr inbounds nuw i16, ptr %87, i64 %140 %142 = load i16, ptr %141, align 2, !tbaa !168 %143 = icmp eq i16 %142, -1 - %144 = icmp ult i16 %142, %.sroa.0.021.i + %or.cond.i = icmp ult i16 %142, %.sroa.0.021.i %or.cond.i = select i1 %143, i1 true, i1 %144 br i1 %or.cond.i, label %.critedge2.i, label %.critedge.i .critedge2.i: ; preds = %.lr.ph.i - %145 = icmp samesign ult i32 %.sroa.16.6, 65 + %144 = icmp samesign ult i32 %.sroa.16.6, 65 tail call void @llvm.assume(i1 %145) %146 = icmp ne i32 %.sroa.16.6, 0 tail call void @llvm.assume(i1 %146) - %147 = lshr i64 %.sroa.037.6, 63 - %148 = trunc nuw nsw i64 %147 to i32 - %149 = add nsw i32 %.sroa.16.6, -1 - %150 = shl i64 %.sroa.037.6, 1 - %151 = shl nsw i32 %.sroa.0.0.in19.i, 1 - %152 = and i32 %151, 131070 - %153 = or disjoint i32 %152, %148 + %148 = lshr i64 %.sroa.16.6, 63 + %149 = trunc nuw nsw i64 %147 to i32 + %150 = add nsw i32 %.sroa.16.6, -1 + %151 = shl i64 %139, 1 + %152 = shl nsw i32 %140, 1 + %153 = and i32 %152, 131070 + %.sroa.0.0.i = or disjoint i32 %152, %148 %154 = add i8 %.sroa.8.020.i, 1 - %.sroa.0.0.i = trunc i32 %153 to i16 + %155 = trunc i32 %153 to i16 %155 = zext i8 %154 to i64 %156 = icmp ugt i64 %85, %155 br i1 %156, label %.lr.ph.i, label %.critedge.i, !llvm.loop !170 -.critedge.i: ; preds = %.critedge2.i, %.lr.ph.i, %135 - %.sroa.037.5 = phi i64 [ %138, %135 ], [ %.sroa.037.6, %.lr.ph.i ], [ %150, %.critedge2.i ] - %.sroa.16.5 = phi i32 [ %137, %135 ], [ %.sroa.16.6, %.lr.ph.i ], [ %149, %.critedge2.i ] - %.sroa.0.0.in.lcssa.i = phi i32 [ %139, %135 ], [ %.sroa.0.0.in19.i, %.lr.ph.i ], [ %153, %.critedge2.i ] - %.sroa.8.0.lcssa.i = phi i8 [ 11, %135 ], [ %.sroa.8.020.i, %.lr.ph.i ], [ %154, %.critedge2.i ] - %.sroa.0.0.lcssa.i = phi i16 [ %.sroa.0.018.i, %135 ], [ %.sroa.0.021.i, %.lr.ph.i ], [ %.sroa.0.0.i, %.critedge2.i ] +.critedge.i: ; preds = %.critedge2.i, %.lr.ph.i, %135 + %.sroa.0.0.in.lcssa.i = phi i64 [ %138, %135 ], [ %.sroa.16.6, %.lr.ph.i ], [ %150, %.critedge2.i ] + %.sroa.8.0.lcssa.i = phi i32 [ %137, %135 ], [ %.sroa.16.6, %.lr.ph.i ], [ %150, %.critedge2.i ] + %.sroa.0.0.lcssa.i = phi i32 [ %.sroa.0.018.i, %135 ], [ %.sroa.0.0.in19.i, %.lr.ph.i ], [ %.sroa.0.0.i, %.critedge2.i ] + %.lcssa17.i = phi i8 [ 11, %135 ], [ %140, %.lr.ph.i ], [ %154, %.critedge2.i ] + %156 = phi i16 [ %.sroa.0.018.i, %135 ], [ %.sroa.0.021.i, %.lr.ph.i ], [ %155, %.critedge2.i ] %.lcssa17.i = phi i64 [ 11, %135 ], [ %140, %.lr.ph.i ], [ %155, %.critedge2.i ] %157 = icmp ult i64 %85, %.lcssa17.i br i1 %157, label %162, label %158 -158: ; preds = %.critedge.i - %159 = getelementptr inbounds nuw i16, ptr %87, i64 %.lcssa17.i +158:; preds = %.critedge.i + %160 = getelementptr inbounds nuw i16, ptr %87, i64 %.lcssa17.i %160 = load i16, ptr %159, align 2, !tbaa !168 %161 = icmp ult i16 %160, %.sroa.0.0.lcssa.i - br i1 %161, label %162, label %_ZNK8rawspeed23PrefixCodeLookupDecoderINS_15BaselineCodeTagEE26finishReadingPartialSymbolINS_14BitStreamerMSBEEESt4pairINS_18AbstractPrefixCodeIS1_E10CodeSymbolEiERT_S8_.exit + br i1 %161, label %159, label %_ZNK8rawspeed23PrefixCodeLookupDecoderINS_15BaselineCodeTagEE26finishReadingPartialSymbolINS_14BitStreamerMSBEEESt4pairINS_18AbstractPrefixCodeIS1_E10CodeSymbolEiERT_S8_.exit -162: ; preds = %158, %.critedge.i - %163 = and i32 %.sroa.0.0.in.lcssa.i, 65535 +162:; preds = %158, %.critedge.i + %160 = and i32 %156, 65535 %164 = zext i8 %.sroa.8.0.lcssa.i to i32 tail call void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_19RawDecoderExceptionEEEvPKcz(ptr noundef nonnull @.str.29, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK8rawspeed23PrefixCodeLookupDecoderINS_15BaselineCodeTagEE26finishReadingPartialSymbolINS_14BitStreamerMSBEEESt4pairINS_18AbstractPrefixCodeIS1_E10CodeSymbolEiERT_S8_, i32 noundef %163, i32 noundef %164) #14 unreachable _ZNK8rawspeed23PrefixCodeLookupDecoderINS_15BaselineCodeTagEE26finishReadingPartialSymbolINS_14BitStreamerMSBEEESt4pairINS_18AbstractPrefixCodeIS1_E10CodeSymbolEiERT_S8_.exit: ; preds = %158 %.sroa.0.0.mask.i = and i32 %.sroa.0.0.in.lcssa.i, 65535 - %165 = getelementptr inbounds nuw i16, ptr %88, i64 %.lcssa17.i - %166 = load i16, ptr %165, align 2, !tbaa !168 - %.tr.i = zext i16 %166 to i32 + %164 = getelementptr inbounds nuw i16, ptr %88, i64 %.lcssa17.i + %165 = load i16, ptr %164, align 2, !tbaa !168 + %.tr.i = zext i16 %165 to i32 %.narrow.i = sub nsw i32 %.sroa.0.0.mask.i, %.tr.i - %167 = zext i32 %.narrow.i to i64 - %168 = getelementptr inbounds nuw i8, ptr %89, i64 %167 - %169 = load i8, ptr %168, align 1, !tbaa !131 - br label %170 - -170: ; preds = %_ZNK8rawspeed23PrefixCodeLookupDecoderINS_15BaselineCodeTagEE26finishReadingPartialSymbolINS_14BitStreamerMSBEEESt4pairINS_18AbstractPrefixCodeIS1_E10CodeSymbolEiERT_S8_.exit, %131 - %.0202 = phi i8 [ %169, %_ZNK8rawspeed23PrefixCodeLookupDecoderINS_15BaselineCodeTagEE26finishReadingPartialSymbolINS_14BitStreamerMSBEEESt4pairINS_18AbstractPrefixCodeIS1_E10CodeSymbolEiERT_S8_.exit ], [ %133, %131 ] - %.sroa.0.sroa.6.0 = phi i8 [ %.sroa.8.0.lcssa.i, %_ZNK8rawspeed23PrefixCodeLookupDecoderINS_15BaselineCodeTagEE26finishReadingPartialSymbolINS_14BitStreamerMSBEEESt4pairINS_18AbstractPrefixCodeIS1_E10CodeSymbolEiERT_S8_.exit ], [ %132, %131 ] - %.sroa.037.2 = phi i64 [ %.sroa.037.5, %_ZNK8rawspeed23PrefixCodeLookupDecoderINS_15BaselineCodeTagEE26finishReadingPartialSymbolINS_14BitStreamerMSBEEESt4pairINS_18AbstractPrefixCodeIS1_E10CodeSymbolEiERT_S8_.exit ], [ %128, %131 ] - %.sroa.16.2 = phi i32 [ %.sroa.16.5, %_ZNK8rawspeed23PrefixCodeLookupDecoderINS_15BaselineCodeTagEE26finishReadingPartialSymbolINS_14BitStreamerMSBEEESt4pairINS_18AbstractPrefixCodeIS1_E10CodeSymbolEiERT_S8_.exit ], [ %126, %131 ] - %171 = icmp ult i8 %.sroa.0.sroa.6.0, 17 + %166 = zext i32 %.narrow.i to i64 + %167 = getelementptr inbounds nuw i8, ptr %89, i64 %166 + %168 = load i8, ptr %167, align 1, !tbaa !131 + br label %169 + +169: ; preds = %_ZNK8rawspeed23PrefixCodeLookupDecoderINS_15BaselineCodeTagEE26finishReadingPartialSymbolINS_14BitStreamerMSBEEESt4pairINS_18AbstractPrefixCodeIS1_E10CodeSymbolEiERT_S8_.exit, %130 + %.0202 = phi i8 [ %168, %_ZNK8rawspeed23PrefixCodeLookupDecoderINS_15BaselineCodeTagEE26finishReadingPartialSymbolINS_14BitStreamerMSBEEESt4pairINS_18AbstractPrefixCodeIS1_E10CodeSymbolEiERT_S8_.exit ], [ %133, %130 ] + %.sroa.0.sroa.6.0 = phi i8 [ %.sroa.8.0.lcssa.i, %_ZNK8rawspeed23PrefixCodeLookupDecoderINS_15BaselineCodeTagEE26finishReadingPartialSymbolINS_14BitStreamerMSBEEESt4pairINS_18AbstractPrefixCodeIS1_E10CodeSymbolEiERT_S8_.exit ], [ %132, %130 ] + %.sroa.037.2 = phi i64 [ %.sroa.037.5, %_ZNK8rawspeed23PrefixCodeLookupDecoderINS_15BaselineCodeTagEE26finishReadingPartialSymbolINS_14BitStreamerMSBEEESt4pairINS_18AbstractPrefixCodeIS1_E10CodeSymbolEiERT_S8_.exit ], [ %127, %130 ] + %.sroa.16.2 = phi i32 [ %.sroa.16.5, %_ZNK8rawspeed23PrefixCodeLookupDecoderINS_15BaselineCodeTagEE26finishReadingPartialSymbolINS_14BitStreamerMSBEEESt4pairINS_18AbstractPrefixCodeIS1_E10CodeSymbolEiERT_S8_.exit ], [ %125, %130 ] + %170 = icmp ult i8 %.sroa.0.sroa.6.0, 17 tail call void @llvm.assume(i1 %171) %172 = icmp ult i8 %.0202, 17 tail call void @llvm.assume(i1 %172) @@ -2165,60 +2165,60 @@ _ZNK8rawspeed23PrefixCodeLookupDecoderINS_15BaselineCodeTagEE26finishReadingPart i8 0, label %_ZNK8rawspeed20PrefixCodeLUTDecoderINS_15BaselineCodeTagENS_23PrefixCodeLookupDecoderIS1_EEE6decodeINS_14BitStreamerMSBELb1EEEiRT_.exit ] -173: ; preds = %170 - br i1 %91, label %174, label %_ZNK8rawspeed20PrefixCodeLUTDecoderINS_15BaselineCodeTagENS_23PrefixCodeLookupDecoderIS1_EEE6decodeINS_14BitStreamerMSBELb1EEEiRT_.exit +172: ; preds = %169 + br i1 %91, label %173, label %_ZNK8rawspeed20PrefixCodeLUTDecoderINS_15BaselineCodeTagENS_23PrefixCodeLookupDecoderIS1_EEE6decodeINS_14BitStreamerMSBELb1EEEiRT_.exit -174: ; preds = %173 - %175 = icmp samesign ugt i32 %.sroa.16.2, 15 - tail call void @llvm.assume(i1 %175) - %176 = add nsw i32 %.sroa.16.2, -16 - %177 = shl i64 %.sroa.037.2, 16 +173: ; preds = %172 + %174 = icmp samesign ugt i32 %.sroa.16.2, 15 + tail call void @llvm.assume(i1 %174) + %175 = add nsw i32 %.sroa.16.2, -16 + %176 = shl i64 %.sroa.037.2, 16 br label %_ZNK8rawspeed20PrefixCodeLUTDecoderINS_15BaselineCodeTagENS_23PrefixCodeLookupDecoderIS1_EEE6decodeINS_14BitStreamerMSBELb1EEEiRT_.exit -178: ; preds = %170 - %179 = zext nneg i8 %.0202 to i32 - %180 = icmp samesign uge i32 %.sroa.16.2, %179 - tail call void @llvm.assume(i1 %180) - %181 = sub nuw nsw i32 64, %179 - %182 = zext nneg i32 %181 to i64 - %183 = lshr i64 %.sroa.037.2, %182 - %184 = trunc i64 %183 to i32 - %185 = sub nsw i32 %.sroa.16.2, %179 - %186 = zext nneg i8 %.0202 to i64 - %187 = shl i64 %.sroa.037.2, %186 - %188 = icmp sgt i64 %.sroa.037.2, -1 - %notmask.i.i = shl nsw i32 -1, %179 +177: ; preds = %169 + %178 = zext nneg i8 %.0202 to i32 + %179 = icmp samesign uge i32 %.sroa.16.2, %178 + tail call void @llvm.assume(i1 %179) + %180 = sub nuw nsw i32 64, %178 + %181 = zext nneg i32 %180 to i64 + %182 = lshr i64 %.sroa.037.2, %181 + %183 = trunc i64 %182 to i32 + %184 = sub nsw i32 %.sroa.16.2, %178 + %185 = zext nneg i8 %.0202 to i64 + %186 = shl i64 %.sroa.037.2, %185 + %187 = icmp sgt i64 %.sroa.037.2, -1 + %notmask.i.i = shl nsw i32 -1, %178 %.neg.i.i = add nuw nsw i32 %notmask.i.i, 1 - %189 = select i1 %188, i32 %.neg.i.i, i32 0 - %.0.i.i = add nsw i32 %189, %184 + %188 = select i1 %187, i32 %.neg.i.i, i32 0 + %.0.i.i = add nsw i32 %188, %183 br label %_ZNK8rawspeed20PrefixCodeLUTDecoderINS_15BaselineCodeTagENS_23PrefixCodeLookupDecoderIS1_EEE6decodeINS_14BitStreamerMSBELb1EEEiRT_.exit -_ZNK8rawspeed20PrefixCodeLUTDecoderINS_15BaselineCodeTagENS_23PrefixCodeLookupDecoderIS1_EEE6decodeINS_14BitStreamerMSBELb1EEEiRT_.exit: ; preds = %178, %174, %173, %170, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit - %.sroa.037.3 = phi i64 [ %128, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit ], [ %187, %178 ], [ %.sroa.037.2, %170 ], [ %177, %174 ], [ %.sroa.037.2, %173 ] - %.sroa.16.3 = phi i32 [ %126, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit ], [ %185, %178 ], [ %.sroa.16.2, %170 ], [ %176, %174 ], [ %.sroa.16.2, %173 ] - %.0.i = phi i32 [ %123, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit ], [ %.0.i.i, %178 ], [ 0, %170 ], [ -32768, %174 ], [ -32768, %173 ] - %190 = and i64 %indvars.iv, 1 - %191 = getelementptr inbounds nuw [2 x i32], ptr %3, i64 0, i64 %190 - %192 = load i32, ptr %191, align 4, !tbaa !132 - %193 = add nsw i32 %192, %.0.i - store i32 %193, ptr %191, align 4, !tbaa !132 - %194 = icmp ult i32 %193, 65536 - br i1 %194, label %198, label %195 - -195: ; preds = %_ZNK8rawspeed20PrefixCodeLUTDecoderINS_15BaselineCodeTagENS_23PrefixCodeLookupDecoderIS1_EEE6decodeINS_14BitStreamerMSBELb1EEEiRT_.exit - %196 = trunc nuw nsw i64 %indvars.iv to i32 - %197 = trunc nuw nsw i64 %indvars.iv238 to i32 - tail call void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_19RawDecoderExceptionEEEvPKcz(ptr noundef nonnull @.str.4, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK8rawspeed18PentaxDecompressor10decompressENS_10ByteStreamE, i32 noundef %196, i32 noundef %197) #14 +_ZNK8rawspeed20PrefixCodeLUTDecoderINS_15BaselineCodeTagENS_23PrefixCodeLookupDecoderIS1_EEE6decodeINS_14BitStreamerMSBELb1EEEiRT_.exit: ; preds = %177, %173, %172, %169, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit + %.sroa.037.3 = phi i64 [ %127, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit ], [ %186, %177 ], [ %.sroa.037.2, %169 ], [ %176, %173 ], [ %.sroa.037.2, %172 ] + %.sroa.16.3 = phi i32 [ %125, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit ], [ %185, %178 ], [ %.sroa.16.2, %170 ], [ %176, %174 ], [ %.sroa.16.2, %173 ] + %.0.i = phi i32 [ %122, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit ], [ %.0.i.i, %177 ], [ 0, %169 ], [ -32768, %173 ], [ -32768, %172 ] + %189 = and i64 %indvars.iv, 1 + %190 = getelementptr inbounds nuw [2 x i32], ptr %3, i64 0, i64 %189 + %191 = load i32, ptr %190, align 4, !tbaa !132 + %192 = add nsw i32 %191, %.0.i + store i32 %192, ptr %190, align 4, !tbaa !132 + %193 = icmp ult i32 %192, 65536 + br i1 %193, label %197, label %194 + +194: ; preds = %_ZNK8rawspeed20PrefixCodeLUTDecoderINS_15BaselineCodeTagENS_23PrefixCodeLookupDecoderIS1_EEE6decodeINS_14BitStreamerMSBELb1EEEiRT_.exit + %195 = trunc nuw nsw i64 %indvars.iv to i32 + %196 = trunc nuw nsw i64 %indvars.iv238 to i32 + tail call void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_19RawDecoderExceptionEEEvPKcz(ptr noundef nonnull @.str.4, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK8rawspeed18PentaxDecompressor10decompressENS_10ByteStreamE, i32 noundef %195, i32 noundef %196) #14 unreachable -198: ; preds = %_ZNK8rawspeed20PrefixCodeLUTDecoderINS_15BaselineCodeTagENS_23PrefixCodeLookupDecoderIS1_EEE6decodeINS_14BitStreamerMSBELb1EEEiRT_.exit - %199 = trunc nuw i32 %193 to i16 +197: ; preds = %_ZNK8rawspeed20PrefixCodeLUTDecoderINS_15BaselineCodeTagENS_23PrefixCodeLookupDecoderIS1_EEE6decodeINS_14BitStreamerMSBELb1EEEiRT_.exit + %198 = trunc nuw i32 %192 to i16 tail call void @llvm.assume(i1 %94) - %200 = getelementptr inbounds nuw i16, ptr %95, i64 %indvars.iv - store i16 %199, ptr %200, align 2, !tbaa !168 + %199 = getelementptr inbounds nuw i16, ptr %95, i64 %indvars.iv + store i16 %198, ptr %199, align 2, !tbaa !168 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %56 - br i1 %exitcond.not, label %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit, label %96, !llvm.loop !171 + br i1 %exitcond.not, label %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit, label %95, !llvm.loop !171 } ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write) diff --git a/bench/darktable/optimized/RafDecoder.ll b/bench/darktable/optimized/RafDecoder.ll index d36ac3a1be6..fca2f7e62a3 100644 --- a/bench/darktable/optimized/RafDecoder.ll +++ b/bench/darktable/optimized/RafDecoder.ll @@ -2516,7 +2516,7 @@ _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.thread.i.i.i.i.i.i.i93: ; preds = %_Z _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit104.thread: ; preds = %_ZNKSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_S5_ESt10_Select1stIS8_ESt4lessIvESaIS8_EE14_M_lower_boundEPKSt13_Rb_tree_nodeIS8_EPKSt18_Rb_tree_node_baseRS7_.exit.i.i.i85, %._crit_edge.i.i63 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #27 - br label %352 + br label %350 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit104: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i.i.i87, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.thread.i.i.i.i.i.i.i93 %.0.i.i.i.i.i.i.i90 = phi i32 [ %91, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i.i.i87 ], [ %.0.i6.i.i.i.i.i.i.i96, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.thread.i.i.i.i.i.i.i93 ] @@ -2528,13 +2528,13 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit104: ; preds = %_Z call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #27 %96 = trunc nuw i8 %.pre to i1 %97 = select i1 %95, i1 %96, i1 false - br i1 %97, label %98, label %352 + br i1 %97, label %98, label %350 98: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit104 %99 = getelementptr inbounds nuw i8, ptr %0, i64 28 %100 = load i8, ptr %99, align 4, !tbaa !153, !range !80, !noundef !81 %101 = trunc nuw i8 %100 to i1 - br i1 %101, label %352, label %102 + br i1 %101, label %350, label %102 102: ; preds = %98 %103 = getelementptr inbounds nuw i8, ptr %0, i64 104 @@ -2573,8 +2573,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit104: ; preds = %_Z invoke void @_ZN8rawspeed15RawImageDataU16C1ERKNS_8iPoint2DEj(ptr noundef nonnull align 8 dereferenceable(616) %118, ptr noundef nonnull align 4 dereferenceable(8) %4, i32 noundef 1) to label %_ZN8rawspeed8RawImage6createERKNS_8iPoint2DENS_12RawImageTypeEj.exit unwind label %_ZNSt15__allocated_ptrISaISt23_Sp_counted_ptr_inplaceIN8rawspeed15RawImageDataU16ESaIvELN9__gnu_cxx12_Lock_policyE2EEEED2Ev.exit9.i.i.i.i.i, !noalias !164 -common.resume: ; preds = %351, %_ZNSt15__allocated_ptrISaISt23_Sp_counted_ptr_inplaceIN8rawspeed15RawImageDataU16ESaIvELN9__gnu_cxx12_Lock_policyE2EEEED2Ev.exit9.i.i.i.i.i - %common.resume.op = phi { ptr, i32 } [ %119, %_ZNSt15__allocated_ptrISaISt23_Sp_counted_ptr_inplaceIN8rawspeed15RawImageDataU16ESaIvELN9__gnu_cxx12_Lock_policyE2EEEED2Ev.exit9.i.i.i.i.i ], [ %.pn50, %351 ] +common.resume: ; preds = %349, %_ZNSt15__allocated_ptrISaISt23_Sp_counted_ptr_inplaceIN8rawspeed15RawImageDataU16ESaIvELN9__gnu_cxx12_Lock_policyE2EEEED2Ev.exit9.i.i.i.i.i + %common.resume.op = phi { ptr, i32 } [ %119, %_ZNSt15__allocated_ptrISaISt23_Sp_counted_ptr_inplaceIN8rawspeed15RawImageDataU16ESaIvELN9__gnu_cxx12_Lock_policyE2EEEED2Ev.exit9.i.i.i.i.i ], [ %.pn50, %349 ] resume { ptr, i32 } %common.resume.op _ZNSt15__allocated_ptrISaISt23_Sp_counted_ptr_inplaceIN8rawspeed15RawImageDataU16ESaIvELN9__gnu_cxx12_Lock_policyE2EEEED2Ev.exit9.i.i.i.i.i: ; preds = %112 @@ -2590,7 +2590,7 @@ _ZN8rawspeed8RawImage6createERKNS_8iPoint2DENS_12RawImageTypeEj.exit: ; preds = %121 = getelementptr inbounds nuw i8, ptr %115, i64 56 %122 = load i64, ptr %121, align 4 invoke void @_ZN8rawspeed12RawImageData9clearAreaENS_12iRectangle2DE(ptr noundef nonnull align 8 dereferenceable(616) %118, i64 0, i64 %122) - to label %123 unwind label %344 + to label %123 unwind label %342 123: ; preds = %_ZN8rawspeed8RawImage6createERKNS_8iPoint2DENS_12RawImageTypeEj.exit %124 = load ptr, ptr %6, align 8, !tbaa !64 @@ -2740,10 +2740,10 @@ _ZN8rawspeed8RawImage6createERKNS_8iPoint2DENS_12RawImageTypeEj.exit: ; preds = br label %.preheader.us .preheader.us.us.preheader: ; preds = %.preheader.lr.ph.split.us - %210 = zext i32 %.sroa.0165.0 to i64 - %211 = zext nneg i32 %157 to i64 - %212 = sext i32 %.sroa.8.0 to i64 - %213 = zext nneg i32 %159 to i64 + %207 = zext i32 %.sroa.0165.0 to i64 + %208 = zext nneg i32 %157 to i64 + %209 = sext i32 %.sroa.8.0 to i64 + %210 = zext nneg i32 %159 to i64 %214 = zext nneg i32 %162 to i64 %215 = zext nneg i32 %157 to i64 %216 = zext nneg i32 %163 to i64 @@ -2753,54 +2753,54 @@ _ZN8rawspeed8RawImage6createERKNS_8iPoint2DENS_12RawImageTypeEj.exit: ; preds = .preheader.us.us: ; preds = %.preheader.us.us.preheader, %._crit_edge.split.us.us.us %indvars.iv224 = phi i64 [ 0, %.preheader.us.us.preheader ], [ %indvars.iv.next225, %._crit_edge.split.us.us.us ] - %217 = trunc nuw nsw i64 %indvars.iv224 to i32 - %.neg200.reass.reass.us.us = add i32 %invariant.op206, %217 - %218 = add nuw nsw i64 %indvars.iv224, %212 - %219 = icmp sgt i64 %218, -1 - %220 = icmp samesign ult i64 %218, %213 - %221 = mul nuw nsw i64 %218, %214 - %222 = add nuw nsw i64 %221, %215 - %223 = icmp samesign ule i64 %222, %216 - %224 = getelementptr inbounds nuw i16, ptr %152, i64 %221 + %211 = trunc nuw nsw i64 %indvars.iv224 to i32 + %.neg200.reass.reass.us.us = add i32 %invariant.op206, %211 + %212 = add nuw nsw i64 %indvars.iv224, %209 + %213 = icmp sgt i64 %212, -1 + %214 = icmp samesign ult i64 %212, %213 + %215 = mul nuw nsw i64 %218, %214 + %216 = add nuw nsw i64 %221, %215 + %217 = icmp samesign ule i64 %216, %216 + %218 = getelementptr inbounds nuw i16, ptr %152, i64 %221 br label %225 -225: ; preds = %236, %.preheader.us.us +225:; preds = %232, %.preheader.us.us %indvars.iv219 = phi i64 [ %indvars.iv.next220, %236 ], [ 0, %.preheader.us.us ] %226 = trunc nuw nsw i64 %indvars.iv219 to i32 - %227 = lshr i32 %226, 1 - %228 = sub i32 %.neg200.reass.reass.us.us, %227 + %indvars.iv219 = lshr i32 %226, 1 + %222 = sub i32 %.neg200.reass.reass.us.us, %indvars.iv219 %indvars.iv.next220 = add nuw nsw i64 %indvars.iv219, 1 - %229 = trunc nuw nsw i64 %indvars.iv.next220 to i32 - %230 = lshr i32 %229, 1 - %231 = add nuw nsw i32 %230, %217 - %232 = icmp slt i32 %228, %200 - br i1 %232, label %233, label %.split.us - -233: ; preds = %225 - %234 = load i32, ptr %196, align 8, !tbaa !111 - %235 = icmp slt i32 %231, %234 - br i1 %235, label %236, label %.split.us - -236: ; preds = %233 - %237 = add nuw nsw i64 %indvars.iv219, %210 - %238 = and i64 %237, 2147483648 - %239 = icmp eq i64 %238, 0 + %225 = trunc nuw nsw i64 %indvars.iv.next220 to i32 + %226 = lshr i32 %225, 1 + %227 = add nuw nsw i32 %226, %211 + %228 = icmp slt i32 %228, %200 + br i1 %228, label %229, label %.split.us + +229: ; preds = %225 + %230 = load i32, ptr %196, align 8, !tbaa !111 + %231 = icmp slt i32 %227, %230 + br i1 %231, label %232, label %.split.us + +232: ; preds = %229 + %233 = add nuw nsw i64 %indvars.iv219, %207 + %234 = and i64 %233, 2147483648 + %235 = icmp eq i64 %234, 0 call void @llvm.assume(i1 %239) %240 = icmp samesign ult i64 %237, %211 call void @llvm.assume(i1 %240) call void @llvm.assume(i1 %219) - call void @llvm.assume(i1 %220) + call void @llvm.assume(i1 %214) call void @llvm.assume(i1 %223) - %241 = getelementptr inbounds nuw i16, ptr %224, i64 %237 - %242 = load i16, ptr %241, align 2, !tbaa !178 + %243 = getelementptr inbounds nuw i16, ptr %224, i64 %237 + %244 = load i16, ptr %243, align 2, !tbaa !178 %243 = icmp samesign ult i32 %231, %178 call void @llvm.assume(i1 %243) %244 = icmp sgt i32 %228, -1 call void @llvm.assume(i1 %244) %245 = icmp samesign ult i32 %228, %180 call void @llvm.assume(i1 %245) - %246 = mul nuw nsw i32 %228, %183 - %247 = add nuw nsw i32 %246, %178 + %247 = mul nuw nsw i32 %228, %183 + %248 = add nuw nsw i32 %246, %178 %248 = icmp samesign ule i32 %247, %184 call void @llvm.assume(i1 %248) %249 = zext nneg i32 %246 to i64 @@ -2811,65 +2811,65 @@ _ZN8rawspeed8RawImage6createERKNS_8iPoint2DENS_12RawImageTypeEj.exit: ; preds = %exitcond223.not = icmp eq i64 %indvars.iv.next220, %wide.trip.count222 br i1 %exitcond223.not, label %._crit_edge.split.us.us.us, label %225, !llvm.loop !180 -._crit_edge.split.us.us.us: ; preds = %236 +._crit_edge.split.us.us.us: ; preds = %232 %indvars.iv.next225 = add nuw nsw i64 %indvars.iv224, 1 %exitcond228.not = icmp eq i64 %indvars.iv.next225, %wide.trip.count227 br i1 %exitcond228.not, label %._crit_edge205, label %.preheader.us.us, !llvm.loop !181 .preheader.us: ; preds = %.preheader.us.preheader, %._crit_edge.split.us208 %indvars.iv214 = phi i64 [ 0, %.preheader.us.preheader ], [ %indvars.iv.next215, %._crit_edge.split.us208 ] - %253 = trunc nuw nsw i64 %indvars.iv214 to i32 - %254 = lshr i32 %253, 1 - %255 = add i32 %201, %254 - %256 = add nuw i32 %254, %.sroa.0169.0 + %249 = trunc nuw nsw i64 %indvars.iv214 to i32 + %250 = lshr i32 %249, 1 + %251 = add i32 %201, %250 + %252 = add nuw i32 %250, %.sroa.0169.0 %indvars.iv.next215 = add nuw nsw i64 %indvars.iv214, 1 - %257 = lshr i64 %indvars.iv.next215, 1 - %258 = add nuw nsw i64 %indvars.iv214, %205 - %259 = icmp sgt i64 %258, -1 - %260 = icmp samesign ult i64 %258, %206 - %261 = mul nuw nsw i64 %258, %207 - %262 = add nuw nsw i64 %261, %208 - %263 = icmp samesign ule i64 %262, %209 - %264 = getelementptr inbounds nuw i16, ptr %152, i64 %261 - %265 = and i64 %257, 2147483647 - %266 = icmp slt i32 %255, %200 + %253 = lshr i64 %indvars.iv.next215, 1 + %254 = add nuw nsw i64 %indvars.iv214, %205 + %255 = icmp sgt i64 %254, -1 + %256 = icmp samesign ult i64 %254, %206 + %257 = mul nuw nsw i64 %258, %207 + %258 = add nuw nsw i64 %257, %208 + %259 = icmp samesign ule i64 %258, %209 + %260 = getelementptr inbounds nuw i16, ptr %152, i64 %257 + %261 = and i64 %257, 2147483647 + %262 = icmp slt i32 %255, %200 br label %267 -267: ; preds = %.preheader.us, %276 +267:; preds = %.preheader.us, %276 %indvars.iv = phi i64 [ 0, %.preheader.us ], [ %indvars.iv.next, %276 ] %268 = trunc nuw nsw i64 %indvars.iv to i32 - %269 = xor i32 %268, -1 - %270 = add i32 %256, %269 - %271 = add nuw nsw i64 %indvars.iv, %265 + %indvars.iv = xor i32 %268, -1 + %266 = add i32 %256, %indvars.iv + %267 = add nuw nsw i64 %indvars.iv, %261 br i1 %266, label %272, label %.split.us -272: ; preds = %267 +272:; preds = %267 %273 = load i32, ptr %196, align 8, !tbaa !111 - %274 = trunc nuw i64 %271 to i32 - %275 = icmp sgt i32 %273, %274 + %274 = trunc nuw i64 %267 to i32 + %271 = icmp sgt i32 %273, %274 br i1 %275, label %276, label %.split.us -276: ; preds = %272 +276:; preds = %272 %277 = add nuw nsw i64 %indvars.iv, %203 %278 = and i64 %277, 2147483648 - %279 = icmp eq i64 %278, 0 - call void @llvm.assume(i1 %279) - %280 = icmp samesign ult i64 %277, %204 - call void @llvm.assume(i1 %280) + %275 = icmp eq i64 %278, 0 + call void @llvm.assume(i1 %275) + %277 = icmp samesign ult i64 %277, %204 + call void @llvm.assume(i1 %277) call void @llvm.assume(i1 %259) call void @llvm.assume(i1 %260) - call void @llvm.assume(i1 %263) + call void @llvm.assume(i1 %255) %281 = getelementptr inbounds nuw i16, ptr %264, i64 %277 %282 = load i16, ptr %281, align 2, !tbaa !178 - %283 = icmp samesign ult i64 %271, %202 + %279 = icmp samesign ult i64 %271, %202 call void @llvm.assume(i1 %283) - %284 = icmp sgt i32 %270, -1 + %284 = icmp sgt i32 %266, -1 call void @llvm.assume(i1 %284) - %285 = icmp samesign ult i32 %270, %180 - call void @llvm.assume(i1 %285) - %286 = mul nuw nsw i32 %270, %183 - %287 = add nuw nsw i32 %286, %178 - %288 = icmp samesign ule i32 %287, %184 + %286 = icmp samesign ult i32 %270, %180 + call void @llvm.assume(i1 %286) + %287 = mul nuw nsw i32 %270, %183 + %288 = add nuw nsw i32 %286, %178 + %289 = icmp samesign ule i32 %288, %184 call void @llvm.assume(i1 %288) %289 = zext nneg i32 %286 to i64 %290 = getelementptr inbounds nuw i16, ptr %173, i64 %289 @@ -2885,141 +2885,141 @@ _ZN8rawspeed8RawImage6createERKNS_8iPoint2DENS_12RawImageTypeEj.exit: ; preds = ._crit_edge205: ; preds = %._crit_edge.split.us208, %._crit_edge.split.us.us.us, %.preheader.lr.ph, %146 store ptr %118, ptr %6, align 8, !tbaa !64 - %292 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %293 = load ptr, ptr %292, align 8, !tbaa !65 - %.not.i.i.i.i117 = icmp eq ptr %115, %293 - br i1 %.not.i.i.i.i117, label %_ZN8rawspeed8RawImageaSERKS0_.exit.thread, label %294 - -294: ; preds = %._crit_edge205 - %295 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !15 - %.not.i.i.i.i.i = icmp eq i8 %295, 0 - br i1 %.not.i.i.i.i.i, label %299, label %296 - -296: ; preds = %294 - %297 = load i32, ptr %116, align 4, !tbaa !66 - %298 = add nsw i32 %297, 1 - store i32 %298, ptr %116, align 4, !tbaa !66 + %290 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %291 = load ptr, ptr %290, align 8, !tbaa !65 + %.not.i.i.i.i117 = icmp eq ptr %115, %291 + br i1 %.not.i.i.i.i117, label %_ZN8rawspeed8RawImageaSERKS0_.exit.thread, label %292 + +292: ; preds = %._crit_edge205 + %293 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !15 + %.not.i.i.i.i.i = icmp eq i8 %293, 0 + br i1 %.not.i.i.i.i.i, label %297, label %294 + +294: ; preds = %292 + %295 = load i32, ptr %116, align 4, !tbaa !66 + %296 = add nsw i32 %295, 1 + store i32 %296, ptr %116, align 4, !tbaa !66 br label %_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE15_M_add_ref_copyEv.exit.i.i.i.i -299: ; preds = %294 - %300 = atomicrmw volatile add ptr %116, i32 1 acq_rel, align 4 - %.pr.pre.i.i.i.i = load ptr, ptr %292, align 8, !tbaa !65 +297: ; preds = %292 + %298 = atomicrmw volatile add ptr %116, i32 1 acq_rel, align 4 + %.pr.pre.i.i.i.i = load ptr, ptr %290, align 8, !tbaa !65 br label %_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE15_M_add_ref_copyEv.exit.i.i.i.i -_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE15_M_add_ref_copyEv.exit.i.i.i.i: ; preds = %299, %296 - %301 = phi ptr [ %293, %296 ], [ %.pr.pre.i.i.i.i, %299 ] - %.not8.i.i.i.i = icmp eq ptr %301, null - br i1 %.not8.i.i.i.i, label %_ZN8rawspeed8RawImageaSERKS0_.exit, label %302 - -302: ; preds = %_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE15_M_add_ref_copyEv.exit.i.i.i.i - %303 = getelementptr inbounds nuw i8, ptr %301, i64 8 - %304 = load atomic i64, ptr %303 acquire, align 8 - %305 = icmp eq i64 %304, 4294967297 - %306 = trunc i64 %304 to i32 - br i1 %305, label %307, label %315 - -307: ; preds = %302 - store i32 0, ptr %303, align 8, !tbaa !67 - %308 = getelementptr inbounds nuw i8, ptr %301, i64 12 - store i32 0, ptr %308, align 4, !tbaa !69 - %309 = load ptr, ptr %301, align 8, !tbaa !70 - %310 = getelementptr inbounds nuw i8, ptr %309, i64 16 - %311 = load ptr, ptr %310, align 8 - call void %311(ptr noundef nonnull align 8 dereferenceable(16) %301) #27 - %312 = load ptr, ptr %301, align 8, !tbaa !70 - %313 = getelementptr inbounds nuw i8, ptr %312, i64 24 - %314 = load ptr, ptr %313, align 8 - call void %314(ptr noundef nonnull align 8 dereferenceable(16) %301) #27 +_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE15_M_add_ref_copyEv.exit.i.i.i.i: ; preds = %297, %294 + %299 = phi ptr [ %291, %294 ], [ %.pr.pre.i.i.i.i, %297 ] + %.not8.i.i.i.i = icmp eq ptr %299, null + br i1 %.not8.i.i.i.i, label %_ZN8rawspeed8RawImageaSERKS0_.exit, label %300 + +300: ; preds = %_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE15_M_add_ref_copyEv.exit.i.i.i.i + %301 = getelementptr inbounds nuw i8, ptr %299, i64 8 + %302 = load atomic i64, ptr %301 acquire, align 8 + %303 = icmp eq i64 %302, 4294967297 + %304 = trunc i64 %302 to i32 + br i1 %303, label %305, label %313 + +305: ; preds = %300 + store i32 0, ptr %301, align 8, !tbaa !67 + %306 = getelementptr inbounds nuw i8, ptr %299, i64 12 + store i32 0, ptr %306, align 4, !tbaa !69 + %307 = load ptr, ptr %299, align 8, !tbaa !70 + %308 = getelementptr inbounds nuw i8, ptr %307, i64 16 + %309 = load ptr, ptr %308, align 8 + call void %311(ptr noundef nonnull align 8 dereferenceable(16) %299) #27 + %310 = load ptr, ptr %299, align 8, !tbaa !70 + %311 = getelementptr inbounds nuw i8, ptr %310, i64 24 + %312 = load ptr, ptr %311, align 8 + call void %314(ptr noundef nonnull align 8 dereferenceable(16) %299) #27 br label %_ZN8rawspeed8RawImageaSERKS0_.exit -315: ; preds = %302 - %316 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !15 - %.not.i9.i.i.i.i = icmp eq i8 %316, 0 - br i1 %.not.i9.i.i.i.i, label %319, label %317 +313: ; preds = %300 + %314 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !15 + %.not.i9.i.i.i.i = icmp eq i8 %314, 0 + br i1 %.not.i9.i.i.i.i, label %317, label %315 -317: ; preds = %315 - %318 = add nsw i32 %306, -1 - store i32 %318, ptr %303, align 4, !tbaa !66 +315: ; preds = %313 + %316 = add nsw i32 %304, -1 + store i32 %316, ptr %301, align 4, !tbaa !66 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i -319: ; preds = %315 - %320 = atomicrmw volatile add ptr %303, i32 -1 acq_rel, align 4 +317: ; preds = %313 + %318 = atomicrmw volatile add ptr %301, i32 -1 acq_rel, align 4 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i -_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i: ; preds = %319, %317 - %.0.i.i.i.i.i.i = phi i32 [ %306, %317 ], [ %320, %319 ] - %321 = icmp eq i32 %.0.i.i.i.i.i.i, 1 - br i1 %321, label %322, label %_ZN8rawspeed8RawImageaSERKS0_.exit, !prof !72 +_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i: ; preds = %317, %315 + %.0.i.i.i.i.i.i = phi i32 [ %304, %315 ], [ %318, %317 ] + %319 = icmp eq i32 %.0.i.i.i.i.i.i, 1 + br i1 %319, label %320, label %_ZN8rawspeed8RawImageaSERKS0_.exit, !prof !72 -322: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i - call void @_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv(ptr noundef nonnull align 8 dereferenceable(16) %301) #27 +320: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i + call void @_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv(ptr noundef nonnull align 8 dereferenceable(16) %299) #27 br label %_ZN8rawspeed8RawImageaSERKS0_.exit -_ZN8rawspeed8RawImageaSERKS0_.exit: ; preds = %_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE15_M_add_ref_copyEv.exit.i.i.i.i, %307, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i, %322 - store ptr %115, ptr %292, align 8, !tbaa !65 +_ZN8rawspeed8RawImageaSERKS0_.exit: ; preds = %_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE15_M_add_ref_copyEv.exit.i.i.i.i, %305, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i, %320 + store ptr %115, ptr %290, align 8, !tbaa !65 %.pr = load ptr, ptr %120, align 8, !tbaa !65 %.not.i.i.i = icmp eq ptr %.pr, null br i1 %.not.i.i.i, label %_ZN8rawspeed8RawImageD2Ev.exit, label %_ZN8rawspeed8RawImageaSERKS0_.exit.thread _ZN8rawspeed8RawImageaSERKS0_.exit.thread: ; preds = %._crit_edge205, %_ZN8rawspeed8RawImageaSERKS0_.exit - %323 = phi ptr [ %.pr, %_ZN8rawspeed8RawImageaSERKS0_.exit ], [ %115, %._crit_edge205 ] - %324 = getelementptr inbounds nuw i8, ptr %323, i64 8 - %325 = load atomic i64, ptr %324 acquire, align 8 - %326 = icmp eq i64 %325, 4294967297 - %327 = trunc i64 %325 to i32 - br i1 %326, label %328, label %336 - -328: ; preds = %_ZN8rawspeed8RawImageaSERKS0_.exit.thread - store i32 0, ptr %324, align 8, !tbaa !67 - %329 = getelementptr inbounds nuw i8, ptr %323, i64 12 - store i32 0, ptr %329, align 4, !tbaa !69 - %330 = load ptr, ptr %323, align 8, !tbaa !70 - %331 = getelementptr inbounds nuw i8, ptr %330, i64 16 - %332 = load ptr, ptr %331, align 8 - call void %332(ptr noundef nonnull align 8 dereferenceable(16) %323) #27 - %333 = load ptr, ptr %323, align 8, !tbaa !70 - %334 = getelementptr inbounds nuw i8, ptr %333, i64 24 - %335 = load ptr, ptr %334, align 8 - call void %335(ptr noundef nonnull align 8 dereferenceable(16) %323) #27 + %321 = phi ptr [ %.pr, %_ZN8rawspeed8RawImageaSERKS0_.exit ], [ %115, %._crit_edge205 ] + %322 = getelementptr inbounds nuw i8, ptr %321, i64 8 + %323 = load atomic i64, ptr %322 acquire, align 8 + %324 = icmp eq i64 %323, 4294967297 + %325 = trunc i64 %323 to i32 + br i1 %324, label %326, label %334 + +326: ; preds = %_ZN8rawspeed8RawImageaSERKS0_.exit.thread + store i32 0, ptr %322, align 8, !tbaa !67 + %327 = getelementptr inbounds nuw i8, ptr %321, i64 12 + store i32 0, ptr %327, align 4, !tbaa !69 + %328 = load ptr, ptr %321, align 8, !tbaa !70 + %329 = getelementptr inbounds nuw i8, ptr %328, i64 16 + %330 = load ptr, ptr %329, align 8 + call void %332(ptr noundef nonnull align 8 dereferenceable(16) %321) #27 + %331 = load ptr, ptr %321, align 8, !tbaa !70 + %332 = getelementptr inbounds nuw i8, ptr %331, i64 24 + %333 = load ptr, ptr %332, align 8 + call void %335(ptr noundef nonnull align 8 dereferenceable(16) %321) #27 br label %_ZN8rawspeed8RawImageD2Ev.exit -336: ; preds = %_ZN8rawspeed8RawImageaSERKS0_.exit.thread - %337 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !15 - %.not.i.i.i.i118 = icmp eq i8 %337, 0 - br i1 %.not.i.i.i.i118, label %340, label %338 +334: ; preds = %_ZN8rawspeed8RawImageaSERKS0_.exit.thread + %335 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !15 + %.not.i.i.i.i118 = icmp eq i8 %335, 0 + br i1 %.not.i.i.i.i118, label %338, label %336 -338: ; preds = %336 - %339 = add nsw i32 %327, -1 - store i32 %339, ptr %324, align 4, !tbaa !66 +336: ; preds = %334 + %337 = add nsw i32 %325, -1 + store i32 %337, ptr %322, align 4, !tbaa !66 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i -340: ; preds = %336 - %341 = atomicrmw volatile add ptr %324, i32 -1 acq_rel, align 4 +338: ; preds = %334 + %339 = atomicrmw volatile add ptr %322, i32 -1 acq_rel, align 4 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i -_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i: ; preds = %340, %338 - %.0.i.i.i.i.i = phi i32 [ %327, %338 ], [ %341, %340 ] - %342 = icmp eq i32 %.0.i.i.i.i.i, 1 - br i1 %342, label %343, label %_ZN8rawspeed8RawImageD2Ev.exit, !prof !72 +_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i: ; preds = %338, %336 + %.0.i.i.i.i.i = phi i32 [ %325, %336 ], [ %339, %338 ] + %340 = icmp eq i32 %.0.i.i.i.i.i, 1 + br i1 %340, label %341, label %_ZN8rawspeed8RawImageD2Ev.exit, !prof !72 -343: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i - call void @_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv(ptr noundef nonnull align 8 dereferenceable(16) %323) #27 +341: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i + call void @_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv(ptr noundef nonnull align 8 dereferenceable(16) %321) #27 br label %_ZN8rawspeed8RawImageD2Ev.exit -_ZN8rawspeed8RawImageD2Ev.exit: ; preds = %_ZN8rawspeed8RawImageaSERKS0_.exit, %328, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i, %343 +_ZN8rawspeed8RawImageD2Ev.exit: ; preds = %_ZN8rawspeed8RawImageaSERKS0_.exit, %326, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i, %341 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #27 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #27 - br label %357 + br label %355 -344: ; preds = %_ZN8rawspeed8RawImage6createERKNS_8iPoint2DENS_12RawImageTypeEj.exit +342: ; preds = %_ZN8rawspeed8RawImage6createERKNS_8iPoint2DENS_12RawImageTypeEj.exit %345 = landingpad { ptr, i32 } cleanup - br label %351 + br label %349 346: ; preds = %.noexc114, %.noexc113, %.noexc112, %.noexc111, %.noexc110, %.noexc109, %.noexc108, %123 %347 = landingpad { ptr, i32 } cleanup - br label %351 + br label %349 348: ; preds = %.split.us %349 = landingpad { ptr, i32 } @@ -3028,25 +3028,25 @@ _ZN8rawspeed8RawImageD2Ev.exit: ; preds = %_ZN8rawspeed8RawIma .split.us: ; preds = %272, %267, %225, %233 invoke void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_19RawDecoderExceptionEEEvPKcz(ptr noundef nonnull @.str.12, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8rawspeed10RafDecoder16applyCorrectionsEPKNS_6CameraE) #13 - to label %350 unwind label %348 + to label %348 unwind label %348 -350: ; preds = %.split.us +348: ; preds = %.split.us unreachable -351: ; preds = %348, %346, %344 +349: ; preds = %348, %346, %344 %.pn50 = phi { ptr, i32 } [ %349, %348 ], [ %347, %346 ], [ %345, %344 ] call void @_ZN8rawspeed8RawImageD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #27 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #27 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #27 br label %common.resume -352: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit104.thread, %98, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit104 - %353 = load i8, ptr %10, align 1, !tbaa !79, !range !80, !noundef !81 - %354 = trunc nuw i8 %353 to i1 - br i1 %354, label %355, label %357 +350: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit104.thread, %98, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit104 + %351 = load i8, ptr %10, align 1, !tbaa !79, !range !80, !noundef !81 + %352 = trunc nuw i8 %351 to i1 + br i1 %352, label %353, label %355 -355: ; preds = %352 - %356 = load ptr, ptr %6, align 8, !tbaa !64 +353: ; preds = %350 + %354 = load ptr, ptr %6, align 8, !tbaa !64 %.sroa.8.0.insert.ext = zext i32 %.sroa.8.0 to i64 %.sroa.8.0.insert.shift = shl nuw i64 %.sroa.8.0.insert.ext, 32 %.sroa.0165.0.insert.ext = zext i32 %.sroa.0165.0 to i64 @@ -3055,10 +3055,10 @@ _ZN8rawspeed8RawImageD2Ev.exit: ; preds = %_ZN8rawspeed8RawIma %.sroa.12.0.insert.shift = shl nuw i64 %.sroa.12.0.insert.ext, 32 %.sroa.0169.0.insert.ext = zext i32 %.sroa.0169.0 to i64 %.sroa.0169.0.insert.insert = or disjoint i64 %.sroa.12.0.insert.shift, %.sroa.0169.0.insert.ext - call void @_ZN8rawspeed12RawImageData8subFrameENS_12iRectangle2DE(ptr noundef nonnull align 8 dereferenceable(616) %356, i64 %.sroa.0165.0.insert.insert, i64 %.sroa.0169.0.insert.insert) - br label %357 + call void @_ZN8rawspeed12RawImageData8subFrameENS_12iRectangle2DE(ptr noundef nonnull align 8 dereferenceable(616) %354, i64 %.sroa.0165.0.insert.insert, i64 %.sroa.0169.0.insert.insert) + br label %355 -357: ; preds = %352, %355, %_ZN8rawspeed8RawImageD2Ev.exit +355: ; preds = %350, %353, %_ZN8rawspeed8RawImageD2Ev.exit ret void } diff --git a/bench/darktable/optimized/SamsungV0Decompressor.ll b/bench/darktable/optimized/SamsungV0Decompressor.ll index 0eb8b7ddb19..2b6fe09ce24 100644 --- a/bench/darktable/optimized/SamsungV0Decompressor.ll +++ b/bench/darktable/optimized/SamsungV0Decompressor.ll @@ -976,9 +976,9 @@ _ZN8rawspeed16BitStreamerMSB32CI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequ call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #22 %45 = icmp slt i32 %1, 2 %46 = select i1 %45, i32 7, i32 4 - br label %71 + br label %70 -.preheader486: ; preds = %71 +.preheader486: ; preds = %70 %47 = add nuw nsw i32 %34, 8 %48 = add nsw i32 %1, -1 %49 = icmp samesign ult i32 %48, %15 @@ -1006,136 +1006,136 @@ _ZN8rawspeed16BitStreamerMSB32CI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequ %70 = zext nneg i32 %13 to i64 br label %73 -71: ; preds = %_ZN8rawspeed16BitStreamerMSB32CI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit, %71 - %.0.idx508 = phi i64 [ 0, %_ZN8rawspeed16BitStreamerMSB32CI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit ], [ %.0.add, %71 ] +70: ; preds = %_ZN8rawspeed16BitStreamerMSB32CI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit, %70 + %.0.idx508 = phi i64 [ 0, %_ZN8rawspeed16BitStreamerMSB32CI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit ], [ %.0.add, %70 ] %.0.ptr = getelementptr inbounds nuw i8, ptr %4, i64 %.0.idx508 store i32 %46, ptr %.0.ptr, align 4, !tbaa !16 %.0.add = add nuw nsw i64 %.0.idx508, 4 %.not = icmp eq i64 %.0.add, 16 - br i1 %.not, label %.preheader486, label %71 + br i1 %.not, label %.preheader486, label %70 -72: ; preds = %.loopexit +71: ; preds = %.loopexit call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #22 ret void -73: ; preds = %.preheader486, %.loopexit +72: ; preds = %.preheader486, %.loopexit %indvars.iv557 = phi i64 [ 0, %.preheader486 ], [ %indvars.iv.next558.pre-phi, %.loopexit ] %.sroa.59215.0534 = phi i32 [ 0, %.preheader486 ], [ %.sroa.59215.5, %.loopexit ] %.sroa.24.0533 = phi i32 [ 0, %.preheader486 ], [ %.sroa.24.6, %.loopexit ] %.sroa.0180.0532 = phi i64 [ 0, %.preheader486 ], [ %.sroa.0180.6, %.loopexit ] - %74 = icmp samesign ult i32 %.sroa.24.0533, 65 - tail call void @llvm.assume(i1 %74) + %73 = icmp samesign ult i32 %.sroa.24.0533, 65 + tail call void @llvm.assume(i1 %73) %.not.i = icmp samesign ult i32 %.sroa.24.0533, 32 - br i1 %.not.i, label %75, label %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit + br i1 %.not.i, label %74, label %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit -75: ; preds = %73 +74: ; preds = %72 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %.sroa.0.i.i) - %76 = add nuw nsw i32 %.sroa.59215.0534, 4 - %.not.i.i119 = icmp samesign ugt i32 %76, %34 - br i1 %.not.i.i119, label %80, label %77, !prof !134 + %75 = add nuw nsw i32 %.sroa.59215.0534, 4 + %.not.i.i119 = icmp samesign ugt i32 %75, %34 + br i1 %.not.i.i119, label %79, label %76, !prof !134 -77: ; preds = %75 - %78 = zext nneg i32 %.sroa.59215.0534 to i64 - %79 = getelementptr inbounds nuw i8, ptr %42, i64 %78 +76: ; preds = %74 + %77 = zext nneg i32 %.sroa.59215.0534 to i64 + %78 = getelementptr inbounds nuw i8, ptr %42, i64 %77 br label %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i -80: ; preds = %75 - %81 = icmp samesign ugt i32 %.sroa.59215.0534, %47 - br i1 %81, label %82, label %83, !prof !134 +79: ; preds = %74 + %80 = icmp samesign ugt i32 %.sroa.59215.0534, %47 + br i1 %80, label %81, label %82, !prof !134 -82: ; preds = %80 +81: ; preds = %79 tail call void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_11IOExceptionEEEvPKcz(ptr noundef nonnull @.str.15, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv) #12 unreachable -83: ; preds = %80 +82: ; preds = %79 store i32 0, ptr %.sroa.0.i.i, align 4 %.sroa.speculated26.i.i.i = tail call i32 @llvm.umin.i32(i32 %34, i32 %.sroa.59215.0534) - %84 = add nuw nsw i32 %.sroa.speculated26.i.i.i, 4 - %.sroa.speculated.i.i.i = tail call i32 @llvm.umin.i32(i32 %34, i32 %84) - %85 = sub nsw i32 %.sroa.speculated.i.i.i, %.sroa.speculated26.i.i.i - %86 = icmp ult i32 %85, 5 - tail call void @llvm.assume(i1 %86) - %87 = zext nneg i32 %.sroa.speculated26.i.i.i to i64 - %88 = getelementptr inbounds nuw i8, ptr %42, i64 %87 - %89 = zext nneg i32 %85 to i64 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %.sroa.0.i.i, ptr nonnull align 1 %88, i64 %89, i1 false) + %83 = add nuw nsw i32 %.sroa.speculated26.i.i.i, 4 + %.sroa.speculated.i.i.i = tail call i32 @llvm.umin.i32(i32 %34, i32 %83) + %84 = sub nsw i32 %.sroa.speculated.i.i.i, %.sroa.speculated26.i.i.i + %85 = icmp ult i32 %84, 5 + tail call void @llvm.assume(i1 %85) + %86 = zext nneg i32 %.sroa.speculated26.i.i.i to i64 + %87 = getelementptr inbounds nuw i8, ptr %42, i64 %86 + %88 = zext nneg i32 %84 to i64 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %.sroa.0.i.i, ptr nonnull align 1 %87, i64 %88, i1 false) br label %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i -_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i: ; preds = %83, %77 - %.sroa.0.0..sroa.0.0..in.i.i = phi ptr [ %.sroa.0.i.i, %83 ], [ %79, %77 ] +_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i: ; preds = %82, %76 + %.sroa.0.0..sroa.0.0..in.i.i = phi ptr [ %.sroa.0.i.i, %82 ], [ %78, %76 ] %.sroa.0.0..sroa.0.0..i.i = load i32, ptr %.sroa.0.0..sroa.0.0..in.i.i, align 1 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %.sroa.0.i.i) - %90 = zext i32 %.sroa.0.0..sroa.0.0..i.i to i64 - %91 = or disjoint i32 %.sroa.24.0533, 32 - %92 = sub nuw nsw i32 32, %.sroa.24.0533 - %93 = zext nneg i32 %92 to i64 - %94 = shl nuw i64 %90, %93 - %95 = or i64 %94, %.sroa.0180.0532 + %89 = zext i32 %.sroa.0.0..sroa.0.0..i.i to i64 + %90 = or disjoint i32 %.sroa.24.0533, 32 + %91 = sub nuw nsw i32 32, %.sroa.24.0533 + %92 = zext nneg i32 %91 to i64 + %93 = shl nuw i64 %89, %92 + %94 = or i64 %93, %.sroa.0180.0532 br label %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit -_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit: ; preds = %73, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i - %.sroa.0180.9 = phi i64 [ %95, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i ], [ %.sroa.0180.0532, %73 ] - %.sroa.24.9 = phi i32 [ %91, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i ], [ %.sroa.24.0533, %73 ] - %.sroa.59215.8 = phi i32 [ %76, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i ], [ %.sroa.59215.0534, %73 ] - %96 = and i32 %.sroa.59215.8, 3 - %97 = icmp eq i32 %96, 0 - tail call void @llvm.assume(i1 %97) - %98 = add nsw i32 %.sroa.24.9, -1 - %99 = shl i64 %.sroa.0180.9, 1 +_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit: ; preds = %72, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i + %.sroa.0180.9 = phi i64 [ %94, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i ], [ %.sroa.0180.0532, %72 ] + %.sroa.24.9 = phi i32 [ %90, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i ], [ %.sroa.24.0533, %72 ] + %.sroa.59215.8 = phi i32 [ %75, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i ], [ %.sroa.59215.0534, %72 ] + %95 = and i32 %.sroa.59215.8, 3 + %96 = icmp eq i32 %95, 0 + tail call void @llvm.assume(i1 %96) + %97 = add nsw i32 %.sroa.24.9, -1 + %98 = shl i64 %.sroa.0180.9, 1 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #22 - br label %100 + br label %99 -100: ; preds = %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit, %100 - %.086.idx511 = phi i64 [ 0, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit ], [ %.086.add, %100 ] - %.sroa.24.1510 = phi i32 [ %98, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit ], [ %104, %100 ] - %.sroa.0180.1509 = phi i64 [ %99, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit ], [ %105, %100 ] +99: ; preds = %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit, %99 + %.086.idx511 = phi i64 [ 0, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit ], [ %.086.add, %99 ] + %.sroa.24.1510 = phi i32 [ %97, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit ], [ %103, %99 ] + %.sroa.0180.1509 = phi i64 [ %98, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit ], [ %104, %99 ] %.086.ptr = getelementptr inbounds nuw i8, ptr %5, i64 %.086.idx511 - %101 = icmp ugt i32 %.sroa.24.1510, 1 - tail call void @llvm.assume(i1 %101) - %102 = lshr i64 %.sroa.0180.1509, 62 - %103 = trunc nuw nsw i64 %102 to i32 - %104 = add nsw i32 %.sroa.24.1510, -2 - %105 = shl i64 %.sroa.0180.1509, 2 - store i32 %103, ptr %.086.ptr, align 4, !tbaa !16 + %100 = icmp ugt i32 %.sroa.24.1510, 1 + tail call void @llvm.assume(i1 %100) + %101 = lshr i64 %.sroa.0180.1509, 62 + %102 = trunc nuw nsw i64 %101 to i32 + %103 = add nsw i32 %.sroa.24.1510, -2 + %104 = shl i64 %.sroa.0180.1509, 2 + store i32 %102, ptr %.086.ptr, align 4, !tbaa !16 %.086.add = add nuw nsw i64 %.086.idx511, 4 %.not95 = icmp eq i64 %.086.add, 16 - br i1 %.not95, label %.preheader485.preheader, label %100 + br i1 %.not95, label %.preheader485.preheader, label %99 -.preheader485.preheader: ; preds = %100 +.preheader485.preheader: ; preds = %99 %.not94 = icmp sgt i64 %.sroa.0180.9, -1 br label %.preheader485 -106: ; preds = %.thread567, %155 - %.sroa.0180.3564573 = phi i64 [ %141, %.thread567 ], [ %.sroa.0180.2512, %155 ] - %.sroa.24.3565572 = phi i32 [ %140, %.thread567 ], [ %.sroa.24.2513, %155 ] - %.sroa.59215.2566571 = phi i32 [ %.sroa.59215.9, %.thread567 ], [ %.sroa.59215.1514, %155 ] +105: ; preds = %.thread567, %154 + %.sroa.0180.3564573 = phi i64 [ %140, %.thread567 ], [ %.sroa.0180.2512, %154 ] + %.sroa.24.3565572 = phi i32 [ %139, %.thread567 ], [ %.sroa.24.2513, %154 ] + %.sroa.59215.2566571 = phi i32 [ %.sroa.59215.9, %.thread567 ], [ %.sroa.59215.1514, %154 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 4 - br i1 %exitcond.not, label %107, label %.preheader485, !llvm.loop !150 - -107: ; preds = %106 - br i1 %.not94, label %257, label %158 - -.preheader485: ; preds = %.preheader485.preheader, %106 - %indvars.iv = phi i64 [ 0, %.preheader485.preheader ], [ %indvars.iv.next, %106 ] - %.sroa.59215.1514 = phi i32 [ %.sroa.59215.8, %.preheader485.preheader ], [ %.sroa.59215.2566571, %106 ] - %.sroa.24.2513 = phi i32 [ %104, %.preheader485.preheader ], [ %.sroa.24.3565572, %106 ] - %.sroa.0180.2512 = phi i64 [ %105, %.preheader485.preheader ], [ %.sroa.0180.3564573, %106 ] - %108 = getelementptr inbounds nuw [4 x i32], ptr %5, i64 0, i64 %indvars.iv - %109 = load i32, ptr %108, align 4, !tbaa !16 - switch i32 %109, label %.preheader485._crit_edge [ - i32 3, label %110 - i32 2, label %143 - i32 1, label %147 + br i1 %exitcond.not, label %106, label %.preheader485, !llvm.loop !150 + +106: ; preds = %105 + br i1 %.not94, label %256, label %157 + +.preheader485: ; preds = %.preheader485.preheader, %105 + %indvars.iv = phi i64 [ 0, %.preheader485.preheader ], [ %indvars.iv.next, %105 ] + %.sroa.59215.1514 = phi i32 [ %.sroa.59215.8, %.preheader485.preheader ], [ %.sroa.59215.2566571, %105 ] + %.sroa.24.2513 = phi i32 [ %103, %.preheader485.preheader ], [ %.sroa.24.3565572, %105 ] + %.sroa.0180.2512 = phi i64 [ %104, %.preheader485.preheader ], [ %.sroa.0180.3564573, %105 ] + %107 = getelementptr inbounds nuw [4 x i32], ptr %5, i64 0, i64 %indvars.iv + %108 = load i32, ptr %107, align 4, !tbaa !16 + switch i32 %108, label %.preheader485._crit_edge [ + i32 3, label %109 + i32 2, label %142 + i32 1, label %146 ] .preheader485._crit_edge: ; preds = %.preheader485 %.phi.trans.insert = getelementptr inbounds nuw [4 x i32], ptr %4, i64 0, i64 %indvars.iv %.pre = load i32, ptr %.phi.trans.insert, align 4, !tbaa !16 - br label %151 + br label %150 -110: ; preds = %.preheader485 - %111 = icmp samesign ult i32 %.sroa.24.2513, 65 +109: ; preds = %.preheader485 + %110 = icmp samesign ult i32 %.sroa.24.2513, 65 tail call void @llvm.assume(i1 %111) %112 = icmp sgt i32 %.sroa.59215.1514, -1 tail call void @llvm.assume(i1 %112) @@ -1143,335 +1143,335 @@ _ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentia %114 = icmp eq i32 %113, 0 tail call void @llvm.assume(i1 %114) %.not.i.i120 = icmp samesign ult i32 %.sroa.24.2513, 4 - br i1 %.not.i.i120, label %115, label %.thread567 + br i1 %.not.i.i120, label %114, label %.thread567 -115: ; preds = %110 +114: ; preds = %109 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %.sroa.0.i.i.i) - %116 = add nuw nsw i32 %.sroa.59215.1514, 4 - %.not.i.i.i = icmp samesign ugt i32 %116, %34 - br i1 %.not.i.i.i, label %120, label %117, !prof !134 + %115 = add nuw nsw i32 %.sroa.59215.1514, 4 + %.not.i.i.i = icmp samesign ugt i32 %115, %34 + br i1 %.not.i.i.i, label %119, label %116, !prof !134 -117: ; preds = %115 - %118 = zext nneg i32 %.sroa.59215.1514 to i64 - %119 = getelementptr inbounds nuw i8, ptr %42, i64 %118 +116: ; preds = %114 + %117 = zext nneg i32 %.sroa.59215.1514 to i64 + %118 = getelementptr inbounds nuw i8, ptr %42, i64 %117 br label %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i -120: ; preds = %115 - %121 = icmp samesign ugt i32 %.sroa.59215.1514, %47 - br i1 %121, label %122, label %123, !prof !134 +119: ; preds = %114 + %120 = icmp samesign ugt i32 %.sroa.59215.1514, %47 + br i1 %120, label %121, label %122, !prof !134 -122: ; preds = %120 +121: ; preds = %119 tail call void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_11IOExceptionEEEvPKcz(ptr noundef nonnull @.str.15, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv) #12 unreachable -123: ; preds = %120 +122: ; preds = %119 store i32 0, ptr %.sroa.0.i.i.i, align 4 %.sroa.speculated26.i.i.i.i = tail call i32 @llvm.umin.i32(i32 %34, i32 %.sroa.59215.1514) - %124 = add nuw nsw i32 %.sroa.speculated26.i.i.i.i, 4 - %.sroa.speculated.i.i.i.i = tail call i32 @llvm.umin.i32(i32 %34, i32 %124) - %125 = sub nsw i32 %.sroa.speculated.i.i.i.i, %.sroa.speculated26.i.i.i.i - %126 = icmp ult i32 %125, 5 - tail call void @llvm.assume(i1 %126) - %127 = zext nneg i32 %.sroa.speculated26.i.i.i.i to i64 - %128 = getelementptr inbounds nuw i8, ptr %42, i64 %127 - %129 = zext nneg i32 %125 to i64 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %.sroa.0.i.i.i, ptr nonnull align 1 %128, i64 %129, i1 false) + %123 = add nuw nsw i32 %.sroa.speculated26.i.i.i.i, 4 + %.sroa.speculated.i.i.i.i = tail call i32 @llvm.umin.i32(i32 %34, i32 %123) + %124 = sub nsw i32 %.sroa.speculated.i.i.i.i, %.sroa.speculated26.i.i.i.i + %125 = icmp ult i32 %124, 5 + tail call void @llvm.assume(i1 %125) + %126 = zext nneg i32 %.sroa.speculated26.i.i.i.i to i64 + %127 = getelementptr inbounds nuw i8, ptr %42, i64 %126 + %128 = zext nneg i32 %124 to i64 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %.sroa.0.i.i.i, ptr nonnull align 1 %127, i64 %128, i1 false) br label %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i -_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i: ; preds = %123, %117 - %.sroa.0.0..sroa.0.0..in.i.i.i = phi ptr [ %.sroa.0.i.i.i, %123 ], [ %119, %117 ] +_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i: ; preds = %122, %116 + %.sroa.0.0..sroa.0.0..in.i.i.i = phi ptr [ %.sroa.0.i.i.i, %122 ], [ %118, %116 ] %.sroa.0.0..sroa.0.0..i.i.i = load i32, ptr %.sroa.0.0..sroa.0.0..in.i.i.i, align 1 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %.sroa.0.i.i.i) - %130 = zext i32 %.sroa.0.0..sroa.0.0..i.i.i to i64 - %131 = or disjoint i32 %.sroa.24.2513, 32 - %132 = sub nuw nsw i32 32, %.sroa.24.2513 - %133 = zext nneg i32 %132 to i64 - %134 = shl nuw i64 %130, %133 - %135 = or i64 %134, %.sroa.0180.2512 + %129 = zext i32 %.sroa.0.0..sroa.0.0..i.i.i to i64 + %130 = or disjoint i32 %.sroa.24.2513, 32 + %131 = sub nuw nsw i32 32, %.sroa.24.2513 + %132 = zext nneg i32 %131 to i64 + %133 = shl nuw i64 %129, %132 + %134 = or i64 %133, %.sroa.0180.2512 br label %.thread567 -.thread567: ; preds = %110, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i - %.sroa.59215.9 = phi i32 [ %116, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i ], [ %.sroa.59215.1514, %110 ] - %136 = phi i64 [ %135, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i ], [ %.sroa.0180.2512, %110 ] - %137 = phi i32 [ %131, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i ], [ %.sroa.24.2513, %110 ] - %138 = lshr i64 %136, 60 - %139 = trunc nuw nsw i64 %138 to i32 - %140 = add nsw i32 %137, -4 - %141 = shl i64 %136, 4 - %142 = getelementptr inbounds nuw [4 x i32], ptr %4, i64 0, i64 %indvars.iv - store i32 %139, ptr %142, align 4, !tbaa !16 - br label %106 - -143: ; preds = %.preheader485 - %144 = getelementptr inbounds nuw [4 x i32], ptr %4, i64 0, i64 %indvars.iv - %145 = load i32, ptr %144, align 4, !tbaa !16 - %146 = add nsw i32 %145, -1 - store i32 %146, ptr %144, align 4, !tbaa !16 - br label %151 - -147: ; preds = %.preheader485 - %148 = getelementptr inbounds nuw [4 x i32], ptr %4, i64 0, i64 %indvars.iv - %149 = load i32, ptr %148, align 4, !tbaa !16 - %150 = add nsw i32 %149, 1 - store i32 %150, ptr %148, align 4, !tbaa !16 - br label %151 - -151: ; preds = %.preheader485._crit_edge, %147, %143 - %152 = phi i32 [ %.pre, %.preheader485._crit_edge ], [ %150, %147 ], [ %146, %143 ] - %153 = icmp slt i32 %152, 0 - br i1 %153, label %154, label %155 - -154: ; preds = %151 +.thread567: ; preds = %109, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i + %.sroa.59215.9 = phi i32 [ %115, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i ], [ %.sroa.59215.1514, %109 ] + %135 = phi i64 [ %134, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i ], [ %.sroa.0180.2512, %109 ] + %136 = phi i32 [ %130, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i ], [ %.sroa.24.2513, %109 ] + %137 = lshr i64 %135, 60 + %138 = trunc nuw nsw i64 %137 to i32 + %139 = add nsw i32 %136, -4 + %140 = shl i64 %135, 4 + %141 = getelementptr inbounds nuw [4 x i32], ptr %4, i64 0, i64 %indvars.iv + store i32 %138, ptr %141, align 4, !tbaa !16 + br label %105 + +142: ; preds = %.preheader485 + %143 = getelementptr inbounds nuw [4 x i32], ptr %4, i64 0, i64 %indvars.iv + %144 = load i32, ptr %143, align 4, !tbaa !16 + %145 = add nsw i32 %144, -1 + store i32 %145, ptr %143, align 4, !tbaa !16 + br label %150 + +146: ; preds = %.preheader485 + %147 = getelementptr inbounds nuw [4 x i32], ptr %4, i64 0, i64 %indvars.iv + %148 = load i32, ptr %147, align 4, !tbaa !16 + %149 = add nsw i32 %148, 1 + store i32 %149, ptr %147, align 4, !tbaa !16 + br label %150 + +150: ; preds = %.preheader485._crit_edge, %146, %142 + %151 = phi i32 [ %.pre, %.preheader485._crit_edge ], [ %149, %146 ], [ %145, %142 ] + %152 = icmp slt i32 %151, 0 + br i1 %152, label %153, label %154 + +153: ; preds = %150 tail call void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_19RawDecoderExceptionEEEvPKcz(ptr noundef nonnull @.str.3, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK8rawspeed21SamsungV0Decompressor15decompressStripEiNS_10ByteStreamE) #12 unreachable -155: ; preds = %151 - %156 = icmp samesign ugt i32 %152, 16 - br i1 %156, label %157, label %106 +154: ; preds = %150 + %155 = icmp samesign ugt i32 %151, 16 + br i1 %155, label %156, label %105 -157: ; preds = %155 +156: ; preds = %154 tail call void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_19RawDecoderExceptionEEEvPKcz(ptr noundef nonnull @.str.4, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK8rawspeed21SamsungV0Decompressor15decompressStripEiNS_10ByteStreamE) #12 unreachable -158: ; preds = %107 - br i1 %45, label %159, label %160 +157: ; preds = %106 + br i1 %45, label %158, label %159 -159: ; preds = %158 +158: ; preds = %157 tail call void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_19RawDecoderExceptionEEEvPKcz(ptr noundef nonnull @.str.5, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK8rawspeed21SamsungV0Decompressor15decompressStripEiNS_10ByteStreamE) #12 unreachable -160: ; preds = %158 - %161 = add nuw nsw i64 %indvars.iv557, 16 - %.not97 = icmp samesign ult i64 %161, %69 - br i1 %.not97, label %.preheader484, label %162 +159: ; preds = %157 + %160 = add nuw nsw i64 %indvars.iv557, 16 + %.not97 = icmp samesign ult i64 %160, %69 + br i1 %.not97, label %.preheader484, label %161 -162: ; preds = %160 +161: ; preds = %159 tail call void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_19RawDecoderExceptionEEEvPKcz(ptr noundef nonnull @.str.6, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK8rawspeed21SamsungV0Decompressor15decompressStripEiNS_10ByteStreamE) #12 unreachable -.preheader484: ; preds = %160, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit - %indvars.iv545 = phi i64 [ %indvars.iv.next546, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit ], [ 0, %160 ] - %.sroa.59215.3518 = phi i32 [ %.sroa.59215.11, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit ], [ %.sroa.59215.2566571, %160 ] - %.sroa.24.4517 = phi i32 [ %.sroa.24.10, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit ], [ %.sroa.24.3565572, %160 ] - %.sroa.0180.4516 = phi i64 [ %.sroa.0180.10, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit ], [ %.sroa.0180.3564573, %160 ] - %163 = lshr i64 %indvars.iv545, 3 - %164 = getelementptr inbounds nuw [4 x i32], ptr %4, i64 0, i64 %163 - %165 = load i32, ptr %164, align 4, !tbaa !16 - %.not.i121 = icmp eq i32 %165, 0 - br i1 %.not.i121, label %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit, label %166 - -166: ; preds = %.preheader484 - %167 = icmp samesign ult i32 %.sroa.24.4517, 65 +.preheader484: ; preds = %159, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit + %indvars.iv545 = phi i64 [ %indvars.iv.next546, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit ], [ 0, %159 ] + %.sroa.59215.3518 = phi i32 [ %.sroa.59215.11, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit ], [ %.sroa.59215.2566571, %159 ] + %.sroa.24.4517 = phi i32 [ %.sroa.24.10, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit ], [ %.sroa.24.3565572, %159 ] + %.sroa.0180.4516 = phi i64 [ %.sroa.0180.10, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit ], [ %.sroa.0180.3564573, %159 ] + %162 = lshr i64 %indvars.iv545, 3 + %163 = getelementptr inbounds nuw [4 x i32], ptr %4, i64 0, i64 %162 + %164 = load i32, ptr %163, align 4, !tbaa !16 + %.not.i121 = icmp eq i32 %164, 0 + br i1 %.not.i121, label %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit, label %165 + +165: ; preds = %.preheader484 + %166 = icmp samesign ult i32 %.sroa.24.4517, 65 tail call void @llvm.assume(i1 %167) %168 = icmp sgt i32 %.sroa.59215.3518, -1 tail call void @llvm.assume(i1 %168) %169 = and i32 %.sroa.59215.3518, 3 %170 = icmp eq i32 %169, 0 tail call void @llvm.assume(i1 %170) - %171 = icmp samesign ult i32 %165, 33 - tail call void @llvm.assume(i1 %171) + %.not.i.i.i122 = icmp samesign ult i32 %164, 33 + tail call void @llvm.assume(i1 %.not.i.i.i122) %.not.i.i.i122 = icmp samesign ult i32 %.sroa.24.4517, %165 br i1 %.not.i.i.i122, label %172, label %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i -172: ; preds = %166 +171: ; preds = %165 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %.sroa.0.i.i.i.i) - %173 = add nuw nsw i32 %.sroa.59215.3518, 4 - %.not.i.i.i.i = icmp samesign ugt i32 %173, %34 - br i1 %.not.i.i.i.i, label %177, label %174, !prof !134 + %172 = add nuw nsw i32 %.sroa.59215.3518, 4 + %.not.i.i.i.i = icmp samesign ugt i32 %172, %34 + br i1 %.not.i.i.i.i, label %176, label %173, !prof !134 -174: ; preds = %172 - %175 = zext nneg i32 %.sroa.59215.3518 to i64 - %176 = getelementptr inbounds nuw i8, ptr %42, i64 %175 +173: ; preds = %171 + %174 = zext nneg i32 %.sroa.59215.3518 to i64 + %175 = getelementptr inbounds nuw i8, ptr %42, i64 %174 br label %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i -177: ; preds = %172 - %178 = icmp samesign ugt i32 %.sroa.59215.3518, %47 - br i1 %178, label %179, label %180, !prof !134 +176: ; preds = %171 + %177 = icmp samesign ugt i32 %.sroa.59215.3518, %47 + br i1 %177, label %178, label %179, !prof !134 -179: ; preds = %177 +178: ; preds = %176 tail call void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_11IOExceptionEEEvPKcz(ptr noundef nonnull @.str.15, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv) #12 unreachable -180: ; preds = %177 +179: ; preds = %176 store i32 0, ptr %.sroa.0.i.i.i.i, align 4 %.sroa.speculated26.i.i.i.i.i = tail call i32 @llvm.umin.i32(i32 %34, i32 %.sroa.59215.3518) - %181 = add nuw nsw i32 %.sroa.speculated26.i.i.i.i.i, 4 - %.sroa.speculated.i.i.i.i.i = tail call i32 @llvm.umin.i32(i32 %34, i32 %181) - %182 = sub nsw i32 %.sroa.speculated.i.i.i.i.i, %.sroa.speculated26.i.i.i.i.i - %183 = icmp ult i32 %182, 5 - tail call void @llvm.assume(i1 %183) - %184 = zext nneg i32 %.sroa.speculated26.i.i.i.i.i to i64 - %185 = getelementptr inbounds nuw i8, ptr %42, i64 %184 - %186 = zext nneg i32 %182 to i64 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %.sroa.0.i.i.i.i, ptr nonnull align 1 %185, i64 %186, i1 false) + %180 = add nuw nsw i32 %.sroa.speculated26.i.i.i.i.i, 4 + %.sroa.speculated.i.i.i.i.i = tail call i32 @llvm.umin.i32(i32 %34, i32 %180) + %181 = sub nsw i32 %.sroa.speculated.i.i.i.i.i, %.sroa.speculated26.i.i.i.i.i + %182 = icmp ult i32 %181, 5 + tail call void @llvm.assume(i1 %182) + %183 = zext nneg i32 %.sroa.speculated26.i.i.i.i.i to i64 + %184 = getelementptr inbounds nuw i8, ptr %42, i64 %183 + %185 = zext nneg i32 %181 to i64 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %.sroa.0.i.i.i.i, ptr nonnull align 1 %184, i64 %185, i1 false) br label %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i -_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i: ; preds = %180, %174 - %.sroa.0.0..sroa.0.0..in.i.i.i.i = phi ptr [ %.sroa.0.i.i.i.i, %180 ], [ %176, %174 ] +_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i: ; preds = %179, %173 + %.sroa.0.0..sroa.0.0..in.i.i.i.i = phi ptr [ %.sroa.0.i.i.i.i, %179 ], [ %175, %173 ] %.sroa.0.0..sroa.0.0..i.i.i.i = load i32, ptr %.sroa.0.0..sroa.0.0..in.i.i.i.i, align 1 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %.sroa.0.i.i.i.i) - %187 = zext i32 %.sroa.0.0..sroa.0.0..i.i.i.i to i64 - %188 = add nuw nsw i32 %.sroa.24.4517, 32 - %189 = sub nuw nsw i32 32, %.sroa.24.4517 - %190 = zext nneg i32 %189 to i64 - %191 = shl nuw i64 %187, %190 - %192 = or i64 %191, %.sroa.0180.4516 + %186 = zext i32 %.sroa.0.0..sroa.0.0..i.i.i.i to i64 + %187 = add nuw nsw i32 %.sroa.24.4517, 32 + %188 = sub nuw nsw i32 32, %.sroa.24.4517 + %189 = zext nneg i32 %188 to i64 + %190 = shl nuw i64 %186, %189 + %191 = or i64 %190, %.sroa.0180.4516 br label %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i -_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i: ; preds = %166, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i - %.sroa.59215.10 = phi i32 [ %173, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i ], [ %.sroa.59215.3518, %166 ] - %193 = phi i64 [ %192, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i ], [ %.sroa.0180.4516, %166 ] - %194 = phi i32 [ %188, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i ], [ %.sroa.24.4517, %166 ] - %195 = sub nuw nsw i32 64, %165 - %196 = zext nneg i32 %195 to i64 - %197 = sub nsw i32 %194, %165 - %198 = zext nneg i32 %165 to i64 - %199 = shl i64 %193, %198 - %200 = ashr i64 %193, %196 - %201 = trunc i64 %200 to i16 +_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i: ; preds = %165, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i + %.sroa.59215.10 = phi i32 [ %172, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i ], [ %.sroa.59215.3518, %165 ] + %192 = phi i64 [ %191, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i ], [ %.sroa.0180.4516, %165 ] + %193 = phi i32 [ %187, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i ], [ %.sroa.24.4517, %165 ] + %194 = sub nuw nsw i32 64, %164 + %195 = zext nneg i32 %194 to i64 + %196 = sub nsw i32 %193, %164 + %197 = zext nneg i32 %164 to i64 + %198 = shl i64 %192, %197 + %199 = ashr i64 %192, %195 + %200 = trunc i64 %199 to i16 br label %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit _ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit: ; preds = %.preheader484, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i - %.sroa.0180.10 = phi i64 [ %.sroa.0180.4516, %.preheader484 ], [ %199, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i ] - %.sroa.24.10 = phi i32 [ %.sroa.24.4517, %.preheader484 ], [ %197, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i ] + %.sroa.0180.10 = phi i64 [ %.sroa.0180.4516, %.preheader484 ], [ %198, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i ] + %.sroa.24.10 = phi i32 [ %.sroa.24.4517, %.preheader484 ], [ %196, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i ] %.sroa.59215.11 = phi i32 [ %.sroa.59215.3518, %.preheader484 ], [ %.sroa.59215.10, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i ] - %.0.i = phi i16 [ 0, %.preheader484 ], [ %201, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i ] - %202 = or disjoint i64 %indvars.iv545, %indvars.iv557 - %203 = icmp samesign ult i64 %202, %69 - tail call void @llvm.assume(i1 %203) + %.0.i = phi i16 [ 0, %.preheader484 ], [ %200, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i ] + %201 = or disjoint i64 %indvars.iv545, %indvars.iv557 + %202 = icmp samesign ult i64 %201, %69 + tail call void @llvm.assume(i1 %202) tail call void @llvm.assume(i1 %49) tail call void @llvm.assume(i1 %52) - %204 = getelementptr inbounds nuw i16, ptr %54, i64 %202 - %205 = load i16, ptr %204, align 2, !tbaa !142 - %206 = add i16 %205, %.0.i + %203 = getelementptr inbounds nuw i16, ptr %54, i64 %201 + %204 = load i16, ptr %203, align 2, !tbaa !142 + %205 = add i16 %204, %.0.i tail call void @llvm.assume(i1 %55) tail call void @llvm.assume(i1 %58) - %207 = getelementptr inbounds nuw i16, ptr %60, i64 %202 - store i16 %206, ptr %207, align 2, !tbaa !142 + %206 = getelementptr inbounds nuw i16, ptr %60, i64 %201 + store i16 %205, ptr %206, align 2, !tbaa !142 %indvars.iv.next546 = add nuw nsw i64 %indvars.iv545, 2 - %208 = icmp samesign ult i64 %indvars.iv545, 14 - br i1 %208, label %.preheader484, label %.preheader, !llvm.loop !151 + %207 = icmp samesign ult i64 %indvars.iv545, 14 + br i1 %207, label %.preheader484, label %.preheader, !llvm.loop !151 .preheader: ; preds = %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit138 %indvars.iv548 = phi i64 [ %indvars.iv.next549, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit138 ], [ 1, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit ] %.sroa.59215.4522 = phi i32 [ %.sroa.59215.13, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit138 ], [ %.sroa.59215.11, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit ] %.sroa.24.5521 = phi i32 [ %.sroa.24.11, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit138 ], [ %.sroa.24.10, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit ] %.sroa.0180.5520 = phi i64 [ %.sroa.0180.11, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit138 ], [ %.sroa.0180.10, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit ] - %209 = lshr i64 %indvars.iv548, 3 - %210 = and i64 %209, 536870909 - %211 = or disjoint i64 %210, 2 - %212 = getelementptr inbounds nuw [4 x i32], ptr %4, i64 0, i64 %211 - %213 = load i32, ptr %212, align 4, !tbaa !16 - %.not.i126 = icmp eq i32 %213, 0 - br i1 %.not.i126, label %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit138, label %214 - -214: ; preds = %.preheader - %215 = icmp samesign ult i32 %.sroa.24.5521, 65 + %208 = lshr i64 %indvars.iv548, 3 + %209 = and i64 %208, 536870909 + %210 = or disjoint i64 %209, 2 + %211 = getelementptr inbounds nuw [4 x i32], ptr %4, i64 0, i64 %210 + %212 = load i32, ptr %211, align 4, !tbaa !16 + %.not.i126 = icmp eq i32 %212, 0 + br i1 %.not.i126, label %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit138, label %213 + +213: ; preds = %.preheader + %214 = icmp samesign ult i32 %.sroa.24.5521, 65 tail call void @llvm.assume(i1 %215) %216 = icmp sgt i32 %.sroa.59215.4522, -1 tail call void @llvm.assume(i1 %216) %217 = and i32 %.sroa.59215.4522, 3 %218 = icmp eq i32 %217, 0 tail call void @llvm.assume(i1 %218) - %219 = icmp samesign ult i32 %213, 33 - tail call void @llvm.assume(i1 %219) + %.not.i.i.i127 = icmp samesign ult i32 %213, 33 + tail call void @llvm.assume(i1 %.not.i.i.i127) %.not.i.i.i127 = icmp samesign ult i32 %.sroa.24.5521, %213 br i1 %.not.i.i.i127, label %220, label %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i130 -220: ; preds = %214 +219: ; preds = %213 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %.sroa.0.i.i.i.i125) - %221 = add nuw nsw i32 %.sroa.59215.4522, 4 - %.not.i.i.i.i132 = icmp samesign ugt i32 %221, %34 - br i1 %.not.i.i.i.i132, label %225, label %222, !prof !134 + %220 = add nuw nsw i32 %.sroa.59215.4522, 4 + %.not.i.i.i.i132 = icmp samesign ugt i32 %220, %34 + br i1 %.not.i.i.i.i132, label %224, label %221, !prof !134 -222: ; preds = %220 - %223 = zext nneg i32 %.sroa.59215.4522 to i64 - %224 = getelementptr inbounds nuw i8, ptr %42, i64 %223 +221: ; preds = %219 + %222 = zext nneg i32 %.sroa.59215.4522 to i64 + %223 = getelementptr inbounds nuw i8, ptr %42, i64 %222 br label %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i133 -225: ; preds = %220 - %226 = icmp samesign ugt i32 %.sroa.59215.4522, %47 - br i1 %226, label %227, label %228, !prof !134 +224: ; preds = %219 + %225 = icmp samesign ugt i32 %.sroa.59215.4522, %47 + br i1 %225, label %226, label %227, !prof !134 -227: ; preds = %225 +226: ; preds = %224 tail call void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_11IOExceptionEEEvPKcz(ptr noundef nonnull @.str.15, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv) #12 unreachable -228: ; preds = %225 +227: ; preds = %224 store i32 0, ptr %.sroa.0.i.i.i.i125, align 4 %.sroa.speculated26.i.i.i.i.i136 = tail call i32 @llvm.umin.i32(i32 %34, i32 %.sroa.59215.4522) - %229 = add nuw nsw i32 %.sroa.speculated26.i.i.i.i.i136, 4 - %.sroa.speculated.i.i.i.i.i137 = tail call i32 @llvm.umin.i32(i32 %34, i32 %229) - %230 = sub nsw i32 %.sroa.speculated.i.i.i.i.i137, %.sroa.speculated26.i.i.i.i.i136 - %231 = icmp ult i32 %230, 5 - tail call void @llvm.assume(i1 %231) - %232 = zext nneg i32 %.sroa.speculated26.i.i.i.i.i136 to i64 - %233 = getelementptr inbounds nuw i8, ptr %42, i64 %232 - %234 = zext nneg i32 %230 to i64 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %.sroa.0.i.i.i.i125, ptr nonnull align 1 %233, i64 %234, i1 false) + %228 = add nuw nsw i32 %.sroa.speculated26.i.i.i.i.i136, 4 + %.sroa.speculated.i.i.i.i.i137 = tail call i32 @llvm.umin.i32(i32 %34, i32 %228) + %229 = sub nsw i32 %.sroa.speculated.i.i.i.i.i137, %.sroa.speculated26.i.i.i.i.i136 + %230 = icmp ult i32 %229, 5 + tail call void @llvm.assume(i1 %230) + %231 = zext nneg i32 %.sroa.speculated26.i.i.i.i.i136 to i64 + %232 = getelementptr inbounds nuw i8, ptr %42, i64 %231 + %233 = zext nneg i32 %229 to i64 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %.sroa.0.i.i.i.i125, ptr nonnull align 1 %232, i64 %233, i1 false) br label %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i133 -_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i133: ; preds = %228, %222 - %.sroa.0.0..sroa.0.0..in.i.i.i.i134 = phi ptr [ %.sroa.0.i.i.i.i125, %228 ], [ %224, %222 ] +_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i133: ; preds = %227, %221 + %.sroa.0.0..sroa.0.0..in.i.i.i.i134 = phi ptr [ %.sroa.0.i.i.i.i125, %227 ], [ %223, %221 ] %.sroa.0.0..sroa.0.0..i.i.i.i135 = load i32, ptr %.sroa.0.0..sroa.0.0..in.i.i.i.i134, align 1 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %.sroa.0.i.i.i.i125) - %235 = zext i32 %.sroa.0.0..sroa.0.0..i.i.i.i135 to i64 - %236 = add nuw nsw i32 %.sroa.24.5521, 32 - %237 = sub nuw nsw i32 32, %.sroa.24.5521 - %238 = zext nneg i32 %237 to i64 - %239 = shl nuw i64 %235, %238 - %240 = or i64 %239, %.sroa.0180.5520 + %234 = zext i32 %.sroa.0.0..sroa.0.0..i.i.i.i135 to i64 + %235 = add nuw nsw i32 %.sroa.24.5521, 32 + %236 = sub nuw nsw i32 32, %.sroa.24.5521 + %237 = zext nneg i32 %236 to i64 + %238 = shl nuw i64 %234, %237 + %239 = or i64 %238, %.sroa.0180.5520 br label %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i130 -_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i130: ; preds = %214, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i133 - %.sroa.59215.12 = phi i32 [ %221, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i133 ], [ %.sroa.59215.4522, %214 ] - %241 = phi i64 [ %240, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i133 ], [ %.sroa.0180.5520, %214 ] - %242 = phi i32 [ %236, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i133 ], [ %.sroa.24.5521, %214 ] - %243 = sub nuw nsw i32 64, %213 - %244 = zext nneg i32 %243 to i64 - %245 = sub nsw i32 %242, %213 - %246 = zext nneg i32 %213 to i64 - %247 = shl i64 %241, %246 - %248 = ashr i64 %241, %244 - %249 = trunc i64 %248 to i16 +_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i130: ; preds = %213, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i133 + %.sroa.59215.12 = phi i32 [ %220, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i133 ], [ %.sroa.59215.4522, %213 ] + %240 = phi i64 [ %239, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i133 ], [ %.sroa.0180.5520, %213 ] + %241 = phi i32 [ %235, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_16BitStreamerMSB32EE8getInputEv.exit.i.i.i133 ], [ %.sroa.24.5521, %213 ] + %242 = sub nuw nsw i32 64, %212 + %243 = zext nneg i32 %242 to i64 + %244 = sub nsw i32 %241, %212 + %245 = zext nneg i32 %212 to i64 + %246 = shl i64 %240, %245 + %247 = ashr i64 %240, %243 + %248 = trunc i64 %247 to i16 br label %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit138 _ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit138: ; preds = %.preheader, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i130 - %.sroa.0180.11 = phi i64 [ %.sroa.0180.5520, %.preheader ], [ %247, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i130 ] - %.sroa.24.11 = phi i32 [ %.sroa.24.5521, %.preheader ], [ %245, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i130 ] + %.sroa.0180.11 = phi i64 [ %.sroa.0180.5520, %.preheader ], [ %246, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i130 ] + %.sroa.24.11 = phi i32 [ %.sroa.24.5521, %.preheader ], [ %244, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i130 ] %.sroa.59215.13 = phi i32 [ %.sroa.59215.4522, %.preheader ], [ %.sroa.59215.12, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i130 ] - %.0.i131 = phi i16 [ 0, %.preheader ], [ %249, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i130 ] - %250 = or disjoint i64 %indvars.iv548, %indvars.iv557 - %251 = icmp samesign ult i64 %250, %69 - tail call void @llvm.assume(i1 %251) + %.0.i131 = phi i16 [ 0, %.preheader ], [ %248, %_ZN8rawspeed11BitStreamerINS_16BitStreamerMSB32ENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit.i130 ] + %249 = or disjoint i64 %indvars.iv548, %indvars.iv557 + %250 = icmp samesign ult i64 %249, %69 + tail call void @llvm.assume(i1 %250) tail call void @llvm.assume(i1 %62) tail call void @llvm.assume(i1 %65) - %252 = getelementptr inbounds nuw i16, ptr %67, i64 %250 - %253 = load i16, ptr %252, align 2, !tbaa !142 - %254 = add i16 %253, %.0.i131 - %255 = getelementptr inbounds nuw i16, ptr %60, i64 %250 - store i16 %254, ptr %255, align 2, !tbaa !142 + %251 = getelementptr inbounds nuw i16, ptr %67, i64 %249 + %252 = load i16, ptr %251, align 2, !tbaa !142 + %253 = add i16 %252, %.0.i131 + %254 = getelementptr inbounds nuw i16, ptr %60, i64 %249 + store i16 %253, ptr %254, align 2, !tbaa !142 %indvars.iv.next549 = add nuw nsw i64 %indvars.iv548, 2 - %256 = icmp samesign ult i64 %indvars.iv548, 14 - br i1 %256, label %.preheader, label %.loopexit, !llvm.loop !152 + %255 = icmp samesign ult i64 %indvars.iv548, 14 + br i1 %255, label %.preheader, label %.loopexit, !llvm.loop !152 -257: ; preds = %107 +256: ; preds = %106 %.not96 = icmp eq i64 %indvars.iv557, 0 - br i1 %.not96, label %263, label %258 + br i1 %.not96, label %263, label %257 -258: ; preds = %257 - %259 = add nsw i64 %indvars.iv557, -2 - %260 = icmp samesign ult i64 %259, %70 +257: ; preds = %256 + %258 = add nsw i64 %indvars.iv557, -2 + %259 = icmp samesign ult i64 %258, %70 tail call void @llvm.assume(i1 %260) tail call void @llvm.assume(i1 %68) tail call void @llvm.assume(i1 %55) tail call void @llvm.assume(i1 %58) - %261 = getelementptr inbounds nuw i16, ptr %60, i64 %259 + %261 = getelementptr inbounds nuw i16, ptr %60, i64 %258 %262 = load i16, ptr %261, align 2, !tbaa !142 br label %263 -263: ; preds = %257, %258 - %264 = phi i16 [ %262, %258 ], [ 128, %257 ] +263: ; preds = %256, %257 + %264 = phi i16 [ %262, %257 ], [ 128, %256 ] br label %266 265: ; preds = %311 @@ -1706,13 +1706,13 @@ _ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit176: ; br label %.loopexit .loopexit: ; preds = %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit138, %.loopexit.loopexit - %indvars.iv.next558.pre-phi = phi i64 [ %.pre560, %.loopexit.loopexit ], [ %161, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit138 ] + %indvars.iv.next558.pre-phi = phi i64 [ %.pre560, %.loopexit.loopexit ], [ %160, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit138 ] %.sroa.0180.6 = phi i64 [ %.sroa.0180.13, %.loopexit.loopexit ], [ %.sroa.0180.11, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit138 ] %.sroa.24.6 = phi i32 [ %.sroa.24.13, %.loopexit.loopexit ], [ %.sroa.24.11, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit138 ] %.sroa.59215.5 = phi i32 [ %.sroa.59215.17, %.loopexit.loopexit ], [ %.sroa.59215.13, %_ZN8rawspeed21SamsungV0Decompressor7calcAdjERNS_16BitStreamerMSB32Ei.exit138 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #22 %366 = icmp samesign ult i64 %indvars.iv.next558.pre-phi, %69 - br i1 %366, label %73, label %72, !llvm.loop !155 + br i1 %366, label %72, label %71, !llvm.loop !155 } ; Function Attrs: mustprogress uwtable diff --git a/bench/darktable/optimized/SamsungV1Decompressor.ll b/bench/darktable/optimized/SamsungV1Decompressor.ll index ab49ac7aefc..122d96530a7 100644 --- a/bench/darktable/optimized/SamsungV1Decompressor.ll +++ b/bench/darktable/optimized/SamsungV1Decompressor.ll @@ -408,160 +408,160 @@ _ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequen %.sroa.066.0213.us = phi i64 [ 0, %.lr.ph217.split.us.preheader ], [ %.sroa.066.2.us, %._crit_edge209.us ] call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %1) #18 store i64 0, ptr %1, align 8 - %65 = icmp samesign ugt i64 %indvars.iv229, 1 - br i1 %65, label %66, label %.lr.ph208.us + %62 = icmp samesign ugt i64 %indvars.iv229, 1 + br i1 %62, label %63, label %.lr.ph208.us -66: ; preds = %.lr.ph217.split.us - %67 = add nsw i64 %indvars.iv229, -2 - %68 = icmp samesign ult i64 %67, %58 - tail call void @llvm.assume(i1 %68) +63: ; preds = %.lr.ph217.split.us + %64 = add nsw i64 %indvars.iv229, -2 + %65 = icmp samesign ult i64 %64, %58 + tail call void @llvm.assume(i1 %65) %69 = mul nuw nsw i64 %67, %59 - %70 = add nuw nsw i64 %69, %60 - %71 = icmp samesign ule i64 %70, %61 - tail call void @llvm.assume(i1 %71) - %72 = getelementptr inbounds nuw i16, ptr %7, i64 %69 - %73 = load i16, ptr %72, align 2, !tbaa !116 - %74 = getelementptr inbounds nuw i8, ptr %72, i64 2 - %75 = zext i16 %73 to i32 - %76 = load i16, ptr %74, align 2, !tbaa !116 - %77 = zext i16 %76 to i32 - store i32 %75, ptr %1, align 8 + %67 = add nuw nsw i64 %69, %60 + %68 = icmp samesign ule i64 %67, %61 + tail call void @llvm.assume(i1 %68) + %70 = getelementptr inbounds nuw i16, ptr %7, i64 %69 + %73 = load i16, ptr %70, align 2, !tbaa !116 + %71 = getelementptr inbounds nuw i8, ptr %72, i64 2 + %72 = zext i16 %73 to i32 + %73 = load i16, ptr %71, align 2, !tbaa !116 + %74 = zext i16 %76 to i32 + store i32 %72, ptr %1, align 8 store i32 %77, ptr %.sroa.5.0..sroa_idx, align 4, !tbaa !15 br label %.lr.ph208.us -.lr.ph208.us: ; preds = %66, %.lr.ph217.split.us - %78 = mul nuw nsw i64 %indvars.iv229, %62 - %79 = add nuw nsw i64 %78, %63 - %80 = icmp samesign ule i64 %79, %64 - %81 = getelementptr inbounds nuw i16, ptr %7, i64 %78 - br label %82 - -82: ; preds = %.lr.ph208.us, %138 - %indvars.iv = phi i64 [ 0, %.lr.ph208.us ], [ %indvars.iv.next, %138 ] - %.sroa.1669.1205.us = phi i32 [ %.sroa.1669.0215.us, %.lr.ph208.us ], [ %.sroa.1669.2.us, %138 ] - %.sroa.8.1204.us = phi i32 [ %.sroa.8.0214.us, %.lr.ph208.us ], [ %.sroa.8.2.us, %138 ] - %.sroa.066.1203.us = phi i64 [ %.sroa.066.0213.us, %.lr.ph208.us ], [ %.sroa.066.2.us, %138 ] - %83 = icmp samesign ult i32 %.sroa.8.1204.us, 65 - tail call void @llvm.assume(i1 %83) +.lr.ph208.us: ; preds = %63, %.lr.ph217.split.us + %77 = mul nuw nsw i64 %indvars.iv229, %62 + %78 = add nuw nsw i64 %77, %63 + %79 = icmp samesign ule i64 %78, %64 + %80 = getelementptr inbounds nuw i16, ptr %7, i64 %77 + br label %81 + +81: ; preds = %.lr.ph208.us, %137 + %indvars.iv = phi i64 [ 0, %.lr.ph208.us ], [ %indvars.iv.next, %137 ] + %.sroa.1669.1205.us = phi i32 [ %.sroa.1669.0215.us, %.lr.ph208.us ], [ %.sroa.1669.2.us, %137 ] + %.sroa.8.1204.us = phi i32 [ %.sroa.8.0214.us, %.lr.ph208.us ], [ %.sroa.8.2.us, %137 ] + %.sroa.066.1203.us = phi i64 [ %.sroa.066.0213.us, %.lr.ph208.us ], [ %.sroa.066.2.us, %137 ] + %82 = icmp samesign ult i32 %.sroa.8.1204.us, 65 + tail call void @llvm.assume(i1 %82) %.not.i.i58.us = icmp samesign ult i32 %.sroa.8.1204.us, 23 - br i1 %.not.i.i58.us, label %84, label %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.us + br i1 %.not.i.i58.us, label %83, label %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.us -84: ; preds = %82 +83: ; preds = %81 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %.sroa.0.i.i.i) - %85 = add nuw nsw i32 %.sroa.1669.1205.us, 4 - %.not.i.i.i59.us = icmp samesign ugt i32 %85, %38 - br i1 %.not.i.i.i59.us, label %89, label %86, !prof !94 + %84 = add nuw nsw i32 %.sroa.1669.1205.us, 4 + %.not.i.i.i59.us = icmp samesign ugt i32 %84, %38 + br i1 %.not.i.i.i59.us, label %88, label %85, !prof !94 -86: ; preds = %84 - %87 = zext nneg i32 %.sroa.1669.1205.us to i64 - %88 = getelementptr inbounds nuw i8, ptr %55, i64 %87 +85: ; preds = %83 + %86 = zext nneg i32 %.sroa.1669.1205.us to i64 + %87 = getelementptr inbounds nuw i8, ptr %55, i64 %86 br label %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.us -89: ; preds = %84 - %90 = icmp samesign ugt i32 %.sroa.1669.1205.us, %57 - br i1 %90, label %.split.us, label %91, !prof !94 +88: ; preds = %83 + %89 = icmp samesign ugt i32 %.sroa.1669.1205.us, %57 + br i1 %89, label %.split.us, label %90, !prof !94 -91: ; preds = %89 +90: ; preds = %88 store i32 0, ptr %.sroa.0.i.i.i, align 4 %.sroa.speculated26.i.i.i.i.us = tail call i32 @llvm.umin.i32(i32 %38, i32 %.sroa.1669.1205.us) - %92 = add nuw nsw i32 %.sroa.speculated26.i.i.i.i.us, 4 - %.sroa.speculated.i.i.i.i.us = tail call i32 @llvm.umin.i32(i32 %38, i32 %92) - %93 = sub nsw i32 %.sroa.speculated.i.i.i.i.us, %.sroa.speculated26.i.i.i.i.us - %94 = icmp ult i32 %93, 5 - tail call void @llvm.assume(i1 %94) - %95 = zext nneg i32 %.sroa.speculated26.i.i.i.i.us to i64 - %96 = getelementptr inbounds nuw i8, ptr %55, i64 %95 - %97 = zext nneg i32 %93 to i64 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %.sroa.0.i.i.i, ptr nonnull align 1 %96, i64 %97, i1 false) + %91 = add nuw nsw i32 %.sroa.speculated26.i.i.i.i.us, 4 + %.sroa.speculated.i.i.i.i.us = tail call i32 @llvm.umin.i32(i32 %38, i32 %91) + %92 = sub nsw i32 %.sroa.speculated.i.i.i.i.us, %.sroa.speculated26.i.i.i.i.us + %93 = icmp ult i32 %92, 5 + tail call void @llvm.assume(i1 %93) + %94 = zext nneg i32 %.sroa.speculated26.i.i.i.i.us to i64 + %95 = getelementptr inbounds nuw i8, ptr %55, i64 %94 + %96 = zext nneg i32 %92 to i64 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %.sroa.0.i.i.i, ptr nonnull align 1 %95, i64 %96, i1 false) br label %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.us -_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.us: ; preds = %91, %86 - %.sroa.0.0..sroa.0.0..in.i.i.i.us = phi ptr [ %.sroa.0.i.i.i, %91 ], [ %88, %86 ] +_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.us: ; preds = %90, %85 + %.sroa.0.0..sroa.0.0..in.i.i.i.us = phi ptr [ %.sroa.0.i.i.i, %90 ], [ %87, %85 ] %.sroa.0.0..sroa.0.0..i.i.i.us = load i32, ptr %.sroa.0.0..sroa.0.0..in.i.i.i.us, align 1 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %.sroa.0.i.i.i) - %98 = tail call i32 @llvm.bswap.i32(i32 %.sroa.0.0..sroa.0.0..i.i.i.us) - %99 = zext i32 %98 to i64 - %100 = or disjoint i32 %.sroa.8.1204.us, 32 - %101 = sub nuw nsw i32 32, %.sroa.8.1204.us - %102 = zext nneg i32 %101 to i64 - %103 = shl nuw i64 %99, %102 - %104 = or i64 %103, %.sroa.066.1203.us + %97 = tail call i32 @llvm.bswap.i32(i32 %.sroa.0.0..sroa.0.0..i.i.i.us) + %98 = zext i32 %97 to i64 + %99 = or disjoint i32 %.sroa.8.1204.us, 32 + %100 = sub nuw nsw i32 32, %.sroa.8.1204.us + %101 = zext nneg i32 %100 to i64 + %102 = shl nuw i64 %98, %101 + %103 = or i64 %102, %.sroa.066.1203.us br label %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.us -_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.us: ; preds = %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.us, %82 - %.sroa.1669.2.us = phi i32 [ %85, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.us ], [ %.sroa.1669.1205.us, %82 ] - %105 = phi i64 [ %104, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.us ], [ %.sroa.066.1203.us, %82 ] - %106 = phi i32 [ %100, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.us ], [ %.sroa.8.1204.us, %82 ] - %107 = lshr i64 %105, 54 - %108 = getelementptr inbounds nuw %"struct.rawspeed::SamsungV1Decompressor::encTableItem", ptr %2, i64 %107 - %109 = load i8, ptr %108, align 1, !tbaa !111 - %110 = zext nneg i8 %109 to i32 - %111 = icmp ult i8 %109, 33 +_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.us: ; preds = %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.us, %81 + %.sroa.1669.2.us = phi i32 [ %84, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.us ], [ %.sroa.1669.1205.us, %81 ] + %104 = phi i64 [ %103, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.us ], [ %.sroa.066.1203.us, %81 ] + %105 = phi i32 [ %99, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i.us ], [ %.sroa.8.1204.us, %81 ] + %106 = lshr i64 %104, 54 + %107 = getelementptr inbounds nuw %"struct.rawspeed::SamsungV1Decompressor::encTableItem", ptr %2, i64 %106 + %108 = load i8, ptr %107, align 1, !tbaa !111 + %109 = zext nneg i8 %108 to i32 + %110 = icmp ult i8 %108, 33 tail call void @llvm.assume(i1 %111) - %112 = icmp samesign uge i32 %106, %110 + %112 = icmp samesign uge i32 %105, %109 tail call void @llvm.assume(i1 %112) - %113 = sub nsw i32 %106, %110 - %114 = zext nneg i8 %109 to i64 - %115 = shl i64 %105, %114 - %116 = getelementptr inbounds nuw i8, ptr %108, i64 1 - %117 = load i8, ptr %116, align 1, !tbaa !113 + %114 = sub nsw i32 %106, %110 + %115 = zext nneg i8 %109 to i64 + %116 = shl i64 %105, %115 + %117 = getelementptr inbounds nuw i8, ptr %108, i64 1 + %117 = load i8, ptr %117, align 1, !tbaa !113 %118 = icmp eq i8 %117, 0 br i1 %118, label %_ZN8rawspeed21SamsungV1Decompressor11samsungDiffERNS_14BitStreamerMSBERKSt6vectorINS0_12encTableItemESaIS4_EE.exit.us, label %119 -119: ; preds = %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.us +119:; preds = %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.us %120 = zext nneg i8 %117 to i32 %121 = icmp samesign ult i32 %113, 65 tail call void @llvm.assume(i1 %121) %122 = icmp ult i8 %117, 33 tail call void @llvm.assume(i1 %122) - %123 = icmp samesign uge i32 %113, %120 + %123 = icmp samesign uge i32 %114, %120 tail call void @llvm.assume(i1 %123) - %124 = sub nuw nsw i32 64, %120 - %125 = zext nneg i32 %124 to i64 - %126 = lshr i64 %115, %125 - %127 = trunc i64 %126 to i32 - %128 = sub nsw i32 %113, %120 - %129 = zext nneg i8 %117 to i64 - %130 = shl i64 %115, %129 + %125 = sub nuw nsw i32 64, %120 + %126 = zext nneg i32 %125 to i64 + %127 = lshr i64 %115, %125 + %128 = trunc i64 %126 to i32 + %129 = sub nsw i32 %114, %120 + %130 = zext nneg i8 %117 to i64 + %notmask.i.i.us = shl i64 %115, %129 %131 = icmp sgt i64 %115, -1 %notmask.i.i.us = shl nsw i32 -1, %120 %.neg.i.i.us = add nuw nsw i32 %notmask.i.i.us, 1 - %132 = select i1 %131, i32 %.neg.i.i.us, i32 0 - %.0.i.i.us = add i32 %132, %127 + %131 = select i1 %131, i32 %.neg.i.i.us, i32 0 + %.0.i.i.us = add i32 %131, %127 br label %_ZN8rawspeed21SamsungV1Decompressor11samsungDiffERNS_14BitStreamerMSBERKSt6vectorINS0_12encTableItemESaIS4_EE.exit.us _ZN8rawspeed21SamsungV1Decompressor11samsungDiffERNS_14BitStreamerMSBERKSt6vectorINS0_12encTableItemESaIS4_EE.exit.us: ; preds = %119, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.us %.sroa.066.2.us = phi i64 [ %115, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.us ], [ %130, %119 ] %.sroa.8.2.us = phi i32 [ %113, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.us ], [ %128, %119 ] %.0.i.us = phi i32 [ 0, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE4fillEi.exit.i.us ], [ %.0.i.i.us, %119 ] - %133 = and i64 %indvars.iv, 1 - %134 = getelementptr inbounds nuw [2 x i32], ptr %1, i64 0, i64 %133 - %135 = load i32, ptr %134, align 4, !tbaa !16 - %136 = add nsw i32 %135, %.0.i.us - store i32 %136, ptr %134, align 4, !tbaa !16 - %137 = icmp ult i32 %136, 4096 - br i1 %137, label %138, label %.split219.us - -138: ; preds = %_ZN8rawspeed21SamsungV1Decompressor11samsungDiffERNS_14BitStreamerMSBERKSt6vectorINS0_12encTableItemESaIS4_EE.exit.us - tail call void @llvm.assume(i1 %80) - %139 = getelementptr inbounds nuw i16, ptr %81, i64 %indvars.iv - %140 = trunc nuw i32 %136 to i16 - store i16 %140, ptr %139, align 2, !tbaa !116 + %132 = and i64 %indvars.iv, 1 + %133 = getelementptr inbounds nuw [2 x i32], ptr %1, i64 0, i64 %132 + %134 = load i32, ptr %133, align 4, !tbaa !16 + %135 = add nsw i32 %134, %.0.i.us + store i32 %135, ptr %133, align 4, !tbaa !16 + %136 = icmp ult i32 %135, 4096 + br i1 %136, label %137, label %.split219.us + +137: ; preds = %_ZN8rawspeed21SamsungV1Decompressor11samsungDiffERNS_14BitStreamerMSBERKSt6vectorINS0_12encTableItemESaIS4_EE.exit.us + tail call void @llvm.assume(i1 %79) + %138 = getelementptr inbounds nuw i16, ptr %80, i64 %indvars.iv + %139 = trunc nuw i32 %135 to i16 + store i16 %139, ptr %138, align 2, !tbaa !116 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond228.not = icmp eq i64 %indvars.iv.next, %63 - br i1 %exitcond228.not, label %._crit_edge209.us, label %82, !llvm.loop !118 + br i1 %exitcond228.not, label %._crit_edge209.us, label %81, !llvm.loop !118 -._crit_edge209.us: ; preds = %138 +._crit_edge209.us: ; preds = %137 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %1) #18 %indvars.iv.next230 = add nuw nsw i64 %indvars.iv229, 1 %exitcond233.not = icmp eq i64 %indvars.iv.next230, %wide.trip.count232 br i1 %exitcond233.not, label %_ZNSt6vectorIN8rawspeed21SamsungV1Decompressor12encTableItemESaIS2_EED2Ev.exit, label %.lr.ph217.split.us, !llvm.loop !119 .invoke: ; preds = %51, %4 - %141 = phi ptr [ @.str.7, %4 ], [ @.str.10, %51 ] - %142 = phi ptr [ @__PRETTY_FUNCTION__._ZNK8rawspeed6Buffer10getSubViewEjj, %4 ], [ @__PRETTY_FUNCTION__._ZN8rawspeed26BitStreamerReplenisherBaseINS_14BitStreamerMSBEEC2ENS_10Array1DRefIKSt4byteEE, %51 ] - invoke void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_11IOExceptionEEEvPKcz(ptr noundef nonnull %141, ptr noundef nonnull %142) #14 - to label %.cont unwind label %143 + %140 = phi ptr [ @.str.7, %4 ], [ @.str.10, %51 ] + %141 = phi ptr [ @__PRETTY_FUNCTION__._ZNK8rawspeed6Buffer10getSubViewEjj, %4 ], [ @__PRETTY_FUNCTION__._ZN8rawspeed26BitStreamerReplenisherBaseINS_14BitStreamerMSBEEC2ENS_10Array1DRefIKSt4byteEE, %51 ] + invoke void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_11IOExceptionEEEvPKcz(ptr noundef nonnull %140, ptr noundef nonnull %141) #14 + to label %.cont unwind label %142 .cont: ; preds = %.invoke unreachable @@ -570,52 +570,52 @@ _ZNSt6vectorIN8rawspeed21SamsungV1Decompressor12encTableItemESaIS2_EED2Ev.exit: tail call void @_ZdlPvm(ptr noundef nonnull %2, i64 noundef 2048) #21 ret void -143: ; preds = %.invoke - %144 = landingpad { ptr, i32 } +142: ; preds = %.invoke + %143 = landingpad { ptr, i32 } cleanup br label %_ZNSt6vectorIN8rawspeed21SamsungV1Decompressor12encTableItemESaIS2_EED2Ev.exit64 .lr.ph217.split: ; preds = %.lr.ph217.split.preheader, %.lr.ph217.split %indvars.iv234 = phi i64 [ 0, %.lr.ph217.split.preheader ], [ %indvars.iv.next235, %.lr.ph217.split ] call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %1) #18 - %145 = icmp samesign ult i64 %indvars.iv234, 2 - tail call void @llvm.assume(i1 %145) + %144 = icmp samesign ult i64 %indvars.iv234, 2 + tail call void @llvm.assume(i1 %144) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %1) #18 %indvars.iv.next235 = add nuw nsw i64 %indvars.iv234, 1 %exitcond238.not = icmp eq i64 %indvars.iv.next235, %wide.trip.count237 br i1 %exitcond238.not, label %_ZNSt6vectorIN8rawspeed21SamsungV1Decompressor12encTableItemESaIS2_EED2Ev.exit, label %.lr.ph217.split, !llvm.loop !119 -.split.us: ; preds = %89 +.split.us: ; preds = %88 invoke void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_11IOExceptionEEEvPKcz(ptr noundef nonnull @.str.11, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv) #14 - to label %.noexc60 unwind label %147 + to label %.noexc60 unwind label %146 .noexc60: ; preds = %.split.us unreachable .split219.us: ; preds = %_ZN8rawspeed21SamsungV1Decompressor11samsungDiffERNS_14BitStreamerMSBERKSt6vectorINS0_12encTableItemESaIS4_EE.exit.us invoke void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_19RawDecoderExceptionEEEvPKcz(ptr noundef nonnull @.str.5, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK8rawspeed21SamsungV1Decompressor10decompressEv) #14 - to label %146 unwind label %149 + to label %145 unwind label %148 -146: ; preds = %.split219.us +145: ; preds = %.split219.us unreachable -147: ; preds = %.split.us - %148 = landingpad { ptr, i32 } +146: ; preds = %.split.us + %147 = landingpad { ptr, i32 } cleanup - br label %151 + br label %150 -149: ; preds = %.split219.us - %150 = landingpad { ptr, i32 } +148: ; preds = %.split219.us + %149 = landingpad { ptr, i32 } cleanup - br label %151 + br label %150 -151: ; preds = %147, %149 - %.pn.pn = phi { ptr, i32 } [ %150, %149 ], [ %148, %147 ] +150: ; preds = %146, %148 + %.pn.pn = phi { ptr, i32 } [ %149, %148 ], [ %147, %146 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %1) #18 br label %_ZNSt6vectorIN8rawspeed21SamsungV1Decompressor12encTableItemESaIS2_EED2Ev.exit64 -_ZNSt6vectorIN8rawspeed21SamsungV1Decompressor12encTableItemESaIS2_EED2Ev.exit64: ; preds = %151, %143 - %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %151 ], [ %144, %143 ] +_ZNSt6vectorIN8rawspeed21SamsungV1Decompressor12encTableItemESaIS2_EED2Ev.exit64: ; preds = %150, %142 + %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %150 ], [ %143, %142 ] tail call void @_ZdlPvm(ptr noundef nonnull %2, i64 noundef 2048) #21 resume { ptr, i32 } %.pn.pn.pn } diff --git a/bench/gromacs/optimized/lmmin.ll b/bench/gromacs/optimized/lmmin.ll index 4e6d7fc7141..dd0413ac9bb 100644 --- a/bench/gromacs/optimized/lmmin.ll +++ b/bench/gromacs/optimized/lmmin.ll @@ -2925,118 +2925,118 @@ define internal fastcc void @_ZL8lm_qrfaciiPdPiS_S_S_(i32 noundef range(i32 0, - .lr.ph.preheader.i: ; preds = %7, %_Z8lm_enormiPKd.exit %indvars.iv = phi i64 [ %indvars.iv.next, %_Z8lm_enormiPKd.exit ], [ 0, %7 ] - %18 = mul nuw nsw i64 %indvars.iv, %wide.trip.count.i - %19 = getelementptr inbounds nuw double, ptr %2, i64 %18 + %17 = mul nuw nsw i64 %indvars.iv, %wide.trip.count.i + %18 = getelementptr inbounds nuw double, ptr %2, i64 %17 br label %.lr.ph.i -.lr.ph.i: ; preds = %48, %.lr.ph.preheader.i - %indvars.iv.i = phi i64 [ 0, %.lr.ph.preheader.i ], [ %indvars.iv.next.i, %48 ] - %.076.i = phi double [ 0.000000e+00, %.lr.ph.preheader.i ], [ %.1.i, %48 ] - %.06075.i = phi double [ 0.000000e+00, %.lr.ph.preheader.i ], [ %.161.i, %48 ] - %.06374.i = phi double [ 0.000000e+00, %.lr.ph.preheader.i ], [ %.164.i, %48 ] - %.06573.i = phi double [ 0.000000e+00, %.lr.ph.preheader.i ], [ %.166.i, %48 ] - %.06772.i = phi double [ 0.000000e+00, %.lr.ph.preheader.i ], [ %.168.i, %48 ] - %20 = getelementptr inbounds nuw double, ptr %19, i64 %indvars.iv.i - %21 = load double, ptr %20, align 8 - %22 = tail call double @llvm.fabs.f64(double %21) - %23 = fcmp ogt double %22, 0x2000000000000000 - br i1 %23, label %24, label %37 - -24: ; preds = %.lr.ph.i - %25 = fcmp olt double %22, %9 - br i1 %25, label %26, label %28 - -26: ; preds = %24 - %27 = tail call double @llvm.fmuladd.f64(double %21, double %21, double %.06573.i) - br label %48 - -28: ; preds = %24 - %29 = fcmp ogt double %22, %.06075.i - br i1 %29, label %30, label %34 - -30: ; preds = %28 - %31 = fdiv double %.06075.i, %22 - %32 = fmul double %.06772.i, %31 - %33 = tail call double @llvm.fmuladd.f64(double %32, double %31, double 1.000000e+00) - br label %48 - -34: ; preds = %28 - %35 = fdiv double %22, %.06075.i - %36 = tail call double @llvm.fmuladd.f64(double %35, double %35, double %.06772.i) - br label %48 - -37: ; preds = %.lr.ph.i - %38 = fcmp ogt double %22, %.076.i - br i1 %38, label %39, label %43 - -39: ; preds = %37 - %40 = fdiv double %.076.i, %22 - %41 = fmul double %.06374.i, %40 - %42 = tail call double @llvm.fmuladd.f64(double %41, double %40, double 1.000000e+00) - br label %48 - -43: ; preds = %37 - %44 = fcmp une double %21, 0.000000e+00 - br i1 %44, label %45, label %48 - -45: ; preds = %43 - %46 = fdiv double %22, %.076.i - %47 = tail call double @llvm.fmuladd.f64(double %46, double %46, double %.06374.i) - br label %48 - -48: ; preds = %45, %43, %39, %34, %30, %26 - %.168.i = phi double [ %.06772.i, %26 ], [ %33, %30 ], [ %36, %34 ], [ %.06772.i, %39 ], [ %.06772.i, %45 ], [ %.06772.i, %43 ] - %.166.i = phi double [ %27, %26 ], [ %.06573.i, %30 ], [ %.06573.i, %34 ], [ %.06573.i, %39 ], [ %.06573.i, %45 ], [ %.06573.i, %43 ] - %.164.i = phi double [ %.06374.i, %26 ], [ %.06374.i, %30 ], [ %.06374.i, %34 ], [ %42, %39 ], [ %47, %45 ], [ %.06374.i, %43 ] - %.161.i = phi double [ %.06075.i, %26 ], [ %22, %30 ], [ %.06075.i, %34 ], [ %.06075.i, %39 ], [ %.06075.i, %45 ], [ %.06075.i, %43 ] - %.1.i = phi double [ %.076.i, %26 ], [ %.076.i, %30 ], [ %.076.i, %34 ], [ %22, %39 ], [ %.076.i, %45 ], [ %.076.i, %43 ] +.lr.ph.i: ; preds = %47, %.lr.ph.preheader.i + %indvars.iv.i = phi i64 [ 0, %.lr.ph.preheader.i ], [ %indvars.iv.next.i, %47 ] + %.076.i = phi double [ 0.000000e+00, %.lr.ph.preheader.i ], [ %.1.i, %47 ] + %.06075.i = phi double [ 0.000000e+00, %.lr.ph.preheader.i ], [ %.161.i, %47 ] + %.06374.i = phi double [ 0.000000e+00, %.lr.ph.preheader.i ], [ %.164.i, %47 ] + %.06573.i = phi double [ 0.000000e+00, %.lr.ph.preheader.i ], [ %.166.i, %47 ] + %.06772.i = phi double [ 0.000000e+00, %.lr.ph.preheader.i ], [ %.168.i, %47 ] + %19 = getelementptr inbounds nuw double, ptr %18, i64 %indvars.iv.i + %20 = load double, ptr %19, align 8 + %21 = tail call double @llvm.fabs.f64(double %20) + %22 = fcmp ogt double %21, 0x2000000000000000 + br i1 %22, label %23, label %36 + +23: ; preds = %.lr.ph.i + %24 = fcmp olt double %21, %9 + br i1 %24, label %25, label %27 + +25: ; preds = %23 + %26 = tail call double @llvm.fmuladd.f64(double %20, double %20, double %.06573.i) + br label %47 + +27: ; preds = %23 + %28 = fcmp ogt double %21, %.06075.i + br i1 %28, label %29, label %33 + +29: ; preds = %27 + %30 = fdiv double %.06075.i, %21 + %31 = fmul double %.06772.i, %30 + %32 = tail call double @llvm.fmuladd.f64(double %31, double %30, double 1.000000e+00) + br label %47 + +33: ; preds = %27 + %34 = fdiv double %21, %.06075.i + %35 = tail call double @llvm.fmuladd.f64(double %34, double %34, double %.06772.i) + br label %47 + +36: ; preds = %.lr.ph.i + %37 = fcmp ogt double %21, %.076.i + br i1 %37, label %38, label %42 + +38: ; preds = %36 + %39 = fdiv double %.076.i, %21 + %40 = fmul double %.06374.i, %39 + %41 = tail call double @llvm.fmuladd.f64(double %40, double %39, double 1.000000e+00) + br label %47 + +42: ; preds = %36 + %43 = fcmp une double %20, 0.000000e+00 + br i1 %43, label %44, label %47 + +44: ; preds = %42 + %45 = fdiv double %21, %.076.i + %46 = tail call double @llvm.fmuladd.f64(double %45, double %45, double %.06374.i) + br label %47 + +47: ; preds = %44, %42, %38, %33, %29, %25 + %.168.i = phi double [ %.06772.i, %25 ], [ %32, %29 ], [ %35, %33 ], [ %.06772.i, %38 ], [ %.06772.i, %44 ], [ %.06772.i, %42 ] + %.166.i = phi double [ %26, %25 ], [ %.06573.i, %29 ], [ %.06573.i, %33 ], [ %.06573.i, %38 ], [ %.06573.i, %44 ], [ %.06573.i, %42 ] + %.164.i = phi double [ %.06374.i, %25 ], [ %.06374.i, %29 ], [ %.06374.i, %33 ], [ %41, %38 ], [ %46, %44 ], [ %.06374.i, %42 ] + %.161.i = phi double [ %.06075.i, %25 ], [ %21, %29 ], [ %.06075.i, %33 ], [ %.06075.i, %38 ], [ %.06075.i, %44 ], [ %.06075.i, %42 ] + %.1.i = phi double [ %.076.i, %25 ], [ %.076.i, %29 ], [ %.076.i, %33 ], [ %21, %38 ], [ %.076.i, %44 ], [ %.076.i, %42 ] %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i br i1 %exitcond.not.i, label %._crit_edge.i, label %.lr.ph.i, !llvm.loop !28 -._crit_edge.i: ; preds = %48 - %49 = fcmp une double %.168.i, 0.000000e+00 - br i1 %49, label %50, label %56 +._crit_edge.i: ; preds = %47 + %48 = fcmp une double %.168.i, 0.000000e+00 + br i1 %48, label %49, label %55 -50: ; preds = %._crit_edge.i - %51 = fdiv double %.166.i, %.161.i - %52 = fdiv double %51, %.161.i - %53 = fadd double %.168.i, %52 - %54 = tail call double @sqrt(double noundef %53) #13 - %55 = fmul double %.161.i, %54 +49: ; preds = %._crit_edge.i + %50 = fdiv double %.166.i, %.161.i + %51 = fdiv double %50, %.161.i + %52 = fadd double %.168.i, %51 + %53 = tail call double @sqrt(double noundef %52) #13 + %54 = fmul double %.161.i, %53 br label %_Z8lm_enormiPKd.exit -56: ; preds = %._crit_edge.i - %57 = fcmp une double %.166.i, 0.000000e+00 - br i1 %57, label %58, label %.thread.i +55: ; preds = %._crit_edge.i + %56 = fcmp une double %.166.i, 0.000000e+00 + br i1 %56, label %57, label %.thread.i -58: ; preds = %56 - %59 = fcmp ult double %.166.i, %.1.i - br i1 %59, label %66, label %60 +57: ; preds = %55 + %58 = fcmp ult double %.166.i, %.1.i + br i1 %58, label %65, label %59 -60: ; preds = %58 - %61 = fdiv double %.1.i, %.166.i - %62 = fmul double %.164.i, %.1.i - %63 = tail call double @llvm.fmuladd.f64(double %61, double %62, double 1.000000e+00) - %64 = fmul double %.166.i, %63 - %65 = tail call double @sqrt(double noundef %64) #13 +59: ; preds = %57 + %60 = fdiv double %.1.i, %.166.i + %61 = fmul double %.164.i, %.1.i + %62 = tail call double @llvm.fmuladd.f64(double %60, double %61, double 1.000000e+00) + %63 = fmul double %.166.i, %62 + %64 = tail call double @sqrt(double noundef %63) #13 br label %_Z8lm_enormiPKd.exit -66: ; preds = %58 - %67 = fdiv double %.166.i, %.1.i - %68 = tail call double @llvm.fmuladd.f64(double %.1.i, double %.164.i, double %67) - %69 = fmul double %.1.i, %68 - %70 = tail call double @sqrt(double noundef %69) #13 +65: ; preds = %57 + %66 = fdiv double %.166.i, %.1.i + %67 = tail call double @llvm.fmuladd.f64(double %.1.i, double %.164.i, double %66) + %68 = fmul double %.1.i, %67 + %69 = tail call double @sqrt(double noundef %68) #13 br label %_Z8lm_enormiPKd.exit -.thread.i: ; preds = %56 - %71 = tail call double @sqrt(double noundef %.164.i) #13 - %72 = fmul double %.1.i, %71 +.thread.i: ; preds = %55 + %70 = tail call double @sqrt(double noundef %.164.i) #13 + %71 = fmul double %.1.i, %70 br label %_Z8lm_enormiPKd.exit -_Z8lm_enormiPKd.exit: ; preds = %50, %60, %66, %.thread.i - %.062.i = phi double [ %55, %50 ], [ %65, %60 ], [ %70, %66 ], [ %72, %.thread.i ] - %73 = getelementptr inbounds nuw double, ptr %5, i64 %indvars.iv +_Z8lm_enormiPKd.exit: ; preds = %49, %59, %65, %.thread.i + %.062.i = phi double [ %54, %49 ], [ %64, %59 ], [ %69, %65 ], [ %71, %.thread.i ] + %72 = getelementptr inbounds nuw double, ptr %5, i64 %indvars.iv store double %.062.i, ptr %73, align 8 %74 = getelementptr inbounds nuw double, ptr %4, i64 %indvars.iv store double %.062.i, ptr %74, align 8 @@ -3049,456 +3049,456 @@ _Z8lm_enormiPKd.exit: ; preds = %50, %60, %66, %.thr %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count254 br i1 %exitcond.not, label %.preheader224, label %.lr.ph.preheader.i, !llvm.loop !62 -78: ; preds = %.preheader224, %279 - %indvars.iv268 = phi i64 [ 0, %.preheader224 ], [ %indvars.iv.next269, %279 ] - %indvars.iv256 = phi i64 [ 1, %.preheader224 ], [ %indvars.iv.next257, %279 ] +77: ; preds = %.preheader224, %278 + %indvars.iv268 = phi i64 [ 0, %.preheader224 ], [ %indvars.iv.next269, %278 ] + %indvars.iv256 = phi i64 [ 1, %.preheader224 ], [ %indvars.iv.next257, %278 ] %indvars290 = trunc i64 %indvars.iv268 to i32 %indvars.iv.next269 = add nuw nsw i64 %indvars.iv268, 1 - %79 = icmp samesign ult i64 %indvars.iv.next269, %16 - br i1 %79, label %.lr.ph, label %._crit_edge - -.lr.ph: ; preds = %78, %.lr.ph - %indvars.iv258 = phi i64 [ %indvars.iv.next259, %.lr.ph ], [ %indvars.iv256, %78 ] - %.0166227 = phi i32 [ %.1, %.lr.ph ], [ %indvars290, %78 ] - %80 = getelementptr inbounds nuw double, ptr %4, i64 %indvars.iv258 - %81 = load double, ptr %80, align 8 - %82 = sext i32 %.0166227 to i64 - %83 = getelementptr inbounds double, ptr %4, i64 %82 - %84 = load double, ptr %83, align 8 - %85 = fcmp ogt double %81, %84 - %86 = trunc nuw nsw i64 %indvars.iv258 to i32 - %.1 = select i1 %85, i32 %86, i32 %.0166227 + %78 = icmp samesign ult i64 %indvars.iv.next269, %16 + br i1 %78, label %.lr.ph, label %._crit_edge + +.lr.ph: ; preds = %77, %.lr.ph + %indvars.iv258 = phi i64 [ %indvars.iv.next259, %.lr.ph ], [ %indvars.iv256, %77 ] + %.0166227 = phi i32 [ %.1, %.lr.ph ], [ %indvars290, %77 ] + %79 = getelementptr inbounds nuw double, ptr %4, i64 %indvars.iv258 + %80 = load double, ptr %79, align 8 + %81 = sext i32 %.0166227 to i64 + %82 = getelementptr inbounds double, ptr %4, i64 %81 + %83 = load double, ptr %82, align 8 + %84 = fcmp ogt double %80, %83 + %85 = trunc nuw nsw i64 %indvars.iv258 to i32 + %.1 = select i1 %84, i32 %85, i32 %.0166227 %indvars.iv.next259 = add nuw nsw i64 %indvars.iv258, 1 %exitcond262.not = icmp eq i64 %indvars.iv.next259, %wide.trip.count254 br i1 %exitcond262.not, label %._crit_edge, label %.lr.ph, !llvm.loop !63 -._crit_edge: ; preds = %.lr.ph, %78 - %.0166.lcssa = phi i32 [ %indvars290, %78 ], [ %.1, %.lr.ph ] - %87 = zext i32 %.0166.lcssa to i64 - %.not = icmp eq i64 %indvars.iv268, %87 - br i1 %.not, label %106, label %88 - -88: ; preds = %._crit_edge - %89 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv268 - %90 = load i32, ptr %89, align 4 - %91 = sext i32 %.0166.lcssa to i64 - %92 = getelementptr inbounds i32, ptr %3, i64 %91 - %93 = load i32, ptr %92, align 4 - store i32 %93, ptr %89, align 4 - store i32 %90, ptr %92, align 4 +._crit_edge: ; preds = %.lr.ph, %77 + %.0166.lcssa = phi i32 [ %indvars290, %77 ], [ %.1, %.lr.ph ] + %86 = zext i32 %.0166.lcssa to i64 + %.not = icmp eq i64 %indvars.iv268, %86 + br i1 %.not, label %105, label %87 + +87: ; preds = %._crit_edge + %88 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv268 + %89 = load i32, ptr %88, align 4 + %90 = sext i32 %.0166.lcssa to i64 + %91 = getelementptr inbounds i32, ptr %3, i64 %90 + %92 = load i32, ptr %91, align 4 + store i32 %92, ptr %88, align 4 + store i32 %89, ptr %91, align 4 br i1 %.not223, label %._crit_edge231, label %.lr.ph230 -.lr.ph230: ; preds = %88 - %94 = mul nuw nsw i64 %indvars.iv268, %15 - %95 = mul nsw i32 %.0166.lcssa, %0 - %96 = sext i32 %95 to i64 - %invariant.gep = getelementptr inbounds nuw double, ptr %2, i64 %94 - %invariant.gep295 = getelementptr double, ptr %2, i64 %96 - br label %97 +.lr.ph230: ; preds = %87 + %93 = mul nuw nsw i64 %indvars.iv268, %15 + %94 = mul nsw i32 %.0166.lcssa, %0 + %95 = sext i32 %94 to i64 + %invariant.gep = getelementptr inbounds nuw double, ptr %2, i64 %93 + %invariant.gep295 = getelementptr double, ptr %2, i64 %95 + br label %96 -97: ; preds = %.lr.ph230, %97 - %indvars.iv263 = phi i64 [ 0, %.lr.ph230 ], [ %indvars.iv.next264, %97 ] +96: ; preds = %.lr.ph230, %96 + %indvars.iv263 = phi i64 [ 0, %.lr.ph230 ], [ %indvars.iv.next264, %96 ] %gep = getelementptr inbounds nuw double, ptr %invariant.gep, i64 %indvars.iv263 - %98 = load double, ptr %gep, align 8 + %97 = load double, ptr %gep, align 8 %gep296 = getelementptr double, ptr %invariant.gep295, i64 %indvars.iv263 - %99 = load double, ptr %gep296, align 8 - store double %99, ptr %gep, align 8 - store double %98, ptr %gep296, align 8 + %98 = load double, ptr %gep296, align 8 + store double %98, ptr %gep, align 8 + store double %97, ptr %gep296, align 8 %indvars.iv.next264 = add nuw nsw i64 %indvars.iv263, 1 %exitcond267.not = icmp eq i64 %indvars.iv.next264, %wide.trip.count.i - br i1 %exitcond267.not, label %._crit_edge231, label %97, !llvm.loop !64 - -._crit_edge231: ; preds = %97, %88 - %100 = getelementptr inbounds nuw double, ptr %4, i64 %indvars.iv268 - %101 = load double, ptr %100, align 8 - %102 = getelementptr inbounds double, ptr %4, i64 %91 - store double %101, ptr %102, align 8 - %103 = getelementptr inbounds nuw double, ptr %6, i64 %indvars.iv268 - %104 = load double, ptr %103, align 8 - %105 = getelementptr inbounds double, ptr %6, i64 %91 - store double %104, ptr %105, align 8 - br label %106 - -106: ; preds = %._crit_edge231, %._crit_edge - %107 = sub nsw i64 %15, %indvars.iv268 - %108 = mul nuw nsw i64 %indvars.iv268, %15 - %109 = mul nuw i32 %17, %indvars290 - %110 = zext nneg i32 %109 to i64 - %111 = getelementptr inbounds nuw double, ptr %2, i64 %110 - %112 = trunc nsw i64 %107 to i32 - %113 = sitofp i32 %112 to double - %114 = fdiv double 0x5FEFFFFFFFFFFFFF, %113 - %115 = icmp sgt i64 %107, 0 - br i1 %115, label %.lr.ph.i184, label %.thread.i178 - -.lr.ph.i184: ; preds = %106, %144 - %indvars.iv.i185 = phi i64 [ %indvars.iv.next.i196, %144 ], [ 0, %106 ] - %.076.i186 = phi double [ %.1.i195, %144 ], [ 0.000000e+00, %106 ] - %.06075.i187 = phi double [ %.161.i194, %144 ], [ 0.000000e+00, %106 ] - %.06374.i188 = phi double [ %.164.i193, %144 ], [ 0.000000e+00, %106 ] - %.06573.i189 = phi double [ %.166.i192, %144 ], [ 0.000000e+00, %106 ] - %.06772.i190 = phi double [ %.168.i191, %144 ], [ 0.000000e+00, %106 ] - %116 = getelementptr inbounds nuw double, ptr %111, i64 %indvars.iv.i185 - %117 = load double, ptr %116, align 8 - %118 = tail call double @llvm.fabs.f64(double %117) - %119 = fcmp ogt double %118, 0x2000000000000000 - br i1 %119, label %120, label %133 - -120: ; preds = %.lr.ph.i184 - %121 = fcmp olt double %118, %114 - br i1 %121, label %122, label %124 - -122: ; preds = %120 - %123 = tail call double @llvm.fmuladd.f64(double %117, double %117, double %.06573.i189) - br label %144 - -124: ; preds = %120 - %125 = fcmp ogt double %118, %.06075.i187 - br i1 %125, label %126, label %130 - -126: ; preds = %124 - %127 = fdiv double %.06075.i187, %118 - %128 = fmul double %.06772.i190, %127 - %129 = tail call double @llvm.fmuladd.f64(double %128, double %127, double 1.000000e+00) - br label %144 - -130: ; preds = %124 - %131 = fdiv double %118, %.06075.i187 - %132 = tail call double @llvm.fmuladd.f64(double %131, double %131, double %.06772.i190) - br label %144 - -133: ; preds = %.lr.ph.i184 - %134 = fcmp ogt double %118, %.076.i186 - br i1 %134, label %135, label %139 - -135: ; preds = %133 - %136 = fdiv double %.076.i186, %118 - %137 = fmul double %.06374.i188, %136 - %138 = tail call double @llvm.fmuladd.f64(double %137, double %136, double 1.000000e+00) - br label %144 - -139: ; preds = %133 - %140 = fcmp une double %117, 0.000000e+00 - br i1 %140, label %141, label %144 - -141: ; preds = %139 - %142 = fdiv double %118, %.076.i186 - %143 = tail call double @llvm.fmuladd.f64(double %142, double %142, double %.06374.i188) - br label %144 - -144: ; preds = %141, %139, %135, %130, %126, %122 - %.168.i191 = phi double [ %.06772.i190, %122 ], [ %129, %126 ], [ %132, %130 ], [ %.06772.i190, %135 ], [ %.06772.i190, %141 ], [ %.06772.i190, %139 ] - %.166.i192 = phi double [ %123, %122 ], [ %.06573.i189, %126 ], [ %.06573.i189, %130 ], [ %.06573.i189, %135 ], [ %.06573.i189, %141 ], [ %.06573.i189, %139 ] - %.164.i193 = phi double [ %.06374.i188, %122 ], [ %.06374.i188, %126 ], [ %.06374.i188, %130 ], [ %138, %135 ], [ %143, %141 ], [ %.06374.i188, %139 ] - %.161.i194 = phi double [ %.06075.i187, %122 ], [ %118, %126 ], [ %.06075.i187, %130 ], [ %.06075.i187, %135 ], [ %.06075.i187, %141 ], [ %.06075.i187, %139 ] - %.1.i195 = phi double [ %.076.i186, %122 ], [ %.076.i186, %126 ], [ %.076.i186, %130 ], [ %118, %135 ], [ %.076.i186, %141 ], [ %.076.i186, %139 ] + br i1 %exitcond267.not, label %._crit_edge231, label %96, !llvm.loop !64 + +._crit_edge231: ; preds = %96, %87 + %99 = getelementptr inbounds nuw double, ptr %4, i64 %indvars.iv268 + %100 = load double, ptr %99, align 8 + %101 = getelementptr inbounds double, ptr %4, i64 %90 + store double %100, ptr %101, align 8 + %102 = getelementptr inbounds nuw double, ptr %6, i64 %indvars.iv268 + %103 = load double, ptr %102, align 8 + %104 = getelementptr inbounds double, ptr %6, i64 %90 + store double %103, ptr %104, align 8 + br label %105 + +105: ; preds = %._crit_edge231, %._crit_edge + %106 = sub nsw i64 %15, %indvars.iv268 + %107 = mul nuw nsw i64 %indvars.iv268, %15 + %108 = mul nuw i32 %17, %indvars290 + %109 = zext nneg i32 %108 to i64 + %110 = getelementptr inbounds nuw double, ptr %2, i64 %109 + %111 = trunc nsw i64 %106 to i32 + %112 = sitofp i32 %111 to double + %113 = fdiv double 0x5FEFFFFFFFFFFFFF, %112 + %114 = icmp sgt i64 %106, 0 + br i1 %114, label %.lr.ph.i184, label %.thread.i178 + +.lr.ph.i184: ; preds = %105, %143 + %indvars.iv.i185 = phi i64 [ %indvars.iv.next.i196, %143 ], [ 0, %105 ] + %.076.i186 = phi double [ %.1.i195, %143 ], [ 0.000000e+00, %105 ] + %.06075.i187 = phi double [ %.161.i194, %143 ], [ 0.000000e+00, %105 ] + %.06374.i188 = phi double [ %.164.i193, %143 ], [ 0.000000e+00, %105 ] + %.06573.i189 = phi double [ %.166.i192, %143 ], [ 0.000000e+00, %105 ] + %.06772.i190 = phi double [ %.168.i191, %143 ], [ 0.000000e+00, %105 ] + %115 = getelementptr inbounds nuw double, ptr %110, i64 %indvars.iv.i185 + %116 = load double, ptr %115, align 8 + %117 = tail call double @llvm.fabs.f64(double %116) + %118 = fcmp ogt double %117, 0x2000000000000000 + br i1 %118, label %119, label %132 + +119: ; preds = %.lr.ph.i184 + %120 = fcmp olt double %117, %113 + br i1 %120, label %121, label %123 + +121: ; preds = %119 + %122 = tail call double @llvm.fmuladd.f64(double %116, double %116, double %.06573.i189) + br label %143 + +123: ; preds = %119 + %124 = fcmp ogt double %117, %.06075.i187 + br i1 %124, label %125, label %129 + +125: ; preds = %123 + %126 = fdiv double %.06075.i187, %117 + %127 = fmul double %.06772.i190, %126 + %128 = tail call double @llvm.fmuladd.f64(double %127, double %126, double 1.000000e+00) + br label %143 + +129: ; preds = %123 + %130 = fdiv double %117, %.06075.i187 + %131 = tail call double @llvm.fmuladd.f64(double %130, double %130, double %.06772.i190) + br label %143 + +132: ; preds = %.lr.ph.i184 + %133 = fcmp ogt double %117, %.076.i186 + br i1 %133, label %134, label %138 + +134: ; preds = %132 + %135 = fdiv double %.076.i186, %117 + %136 = fmul double %.06374.i188, %135 + %137 = tail call double @llvm.fmuladd.f64(double %136, double %135, double 1.000000e+00) + br label %143 + +138: ; preds = %132 + %139 = fcmp une double %116, 0.000000e+00 + br i1 %139, label %140, label %143 + +140: ; preds = %138 + %141 = fdiv double %117, %.076.i186 + %142 = tail call double @llvm.fmuladd.f64(double %141, double %141, double %.06374.i188) + br label %143 + +143: ; preds = %140, %138, %134, %129, %125, %121 + %.168.i191 = phi double [ %.06772.i190, %121 ], [ %128, %125 ], [ %131, %129 ], [ %.06772.i190, %134 ], [ %.06772.i190, %140 ], [ %.06772.i190, %138 ] + %.166.i192 = phi double [ %122, %121 ], [ %.06573.i189, %125 ], [ %.06573.i189, %129 ], [ %.06573.i189, %134 ], [ %.06573.i189, %140 ], [ %.06573.i189, %138 ] + %.164.i193 = phi double [ %.06374.i188, %121 ], [ %.06374.i188, %125 ], [ %.06374.i188, %129 ], [ %137, %134 ], [ %142, %140 ], [ %.06374.i188, %138 ] + %.161.i194 = phi double [ %.06075.i187, %121 ], [ %117, %125 ], [ %.06075.i187, %129 ], [ %.06075.i187, %134 ], [ %.06075.i187, %140 ], [ %.06075.i187, %138 ] + %.1.i195 = phi double [ %.076.i186, %121 ], [ %.076.i186, %125 ], [ %.076.i186, %129 ], [ %117, %134 ], [ %.076.i186, %140 ], [ %.076.i186, %138 ] %indvars.iv.next.i196 = add nuw nsw i64 %indvars.iv.i185, 1 - %exitcond.not.i197 = icmp eq i64 %indvars.iv.next.i196, %107 + %exitcond.not.i197 = icmp eq i64 %indvars.iv.next.i196, %106 br i1 %exitcond.not.i197, label %._crit_edge.i198, label %.lr.ph.i184, !llvm.loop !28 -._crit_edge.i198: ; preds = %144 - %145 = fcmp une double %.168.i191, 0.000000e+00 - br i1 %145, label %146, label %152 +._crit_edge.i198: ; preds = %143 + %144 = fcmp une double %.168.i191, 0.000000e+00 + br i1 %144, label %145, label %151 -146: ; preds = %._crit_edge.i198 - %147 = fdiv double %.166.i192, %.161.i194 - %148 = fdiv double %147, %.161.i194 - %149 = fadd double %.168.i191, %148 - %150 = tail call double @sqrt(double noundef %149) #13 - %151 = fmul double %.161.i194, %150 +145: ; preds = %._crit_edge.i198 + %146 = fdiv double %.166.i192, %.161.i194 + %147 = fdiv double %146, %.161.i194 + %148 = fadd double %.168.i191, %147 + %149 = tail call double @sqrt(double noundef %148) #13 + %150 = fmul double %.161.i194, %149 br label %_Z8lm_enormiPKd.exit199 -152: ; preds = %._crit_edge.i198 - %153 = fcmp une double %.166.i192, 0.000000e+00 - br i1 %153, label %154, label %.thread.i178 +151: ; preds = %._crit_edge.i198 + %152 = fcmp une double %.166.i192, 0.000000e+00 + br i1 %152, label %153, label %.thread.i178 -154: ; preds = %152 - %155 = fcmp ult double %.166.i192, %.1.i195 - br i1 %155, label %162, label %156 +153: ; preds = %151 + %154 = fcmp ult double %.166.i192, %.1.i195 + br i1 %154, label %161, label %155 -156: ; preds = %154 - %157 = fdiv double %.1.i195, %.166.i192 - %158 = fmul double %.164.i193, %.1.i195 - %159 = tail call double @llvm.fmuladd.f64(double %157, double %158, double 1.000000e+00) - %160 = fmul double %.166.i192, %159 - %161 = tail call double @sqrt(double noundef %160) #13 +155: ; preds = %153 + %156 = fdiv double %.1.i195, %.166.i192 + %157 = fmul double %.164.i193, %.1.i195 + %158 = tail call double @llvm.fmuladd.f64(double %156, double %157, double 1.000000e+00) + %159 = fmul double %.166.i192, %158 + %160 = tail call double @sqrt(double noundef %159) #13 br label %_Z8lm_enormiPKd.exit199 -162: ; preds = %154 - %163 = fdiv double %.166.i192, %.1.i195 - %164 = tail call double @llvm.fmuladd.f64(double %.1.i195, double %.164.i193, double %163) - %165 = fmul double %.1.i195, %164 - %166 = tail call double @sqrt(double noundef %165) #13 +161: ; preds = %153 + %162 = fdiv double %.166.i192, %.1.i195 + %163 = tail call double @llvm.fmuladd.f64(double %.1.i195, double %.164.i193, double %162) + %164 = fmul double %.1.i195, %163 + %165 = tail call double @sqrt(double noundef %164) #13 br label %_Z8lm_enormiPKd.exit199 -.thread.i178: ; preds = %152, %106 - %.063.lcssa8894.i179 = phi double [ %.164.i193, %152 ], [ 0.000000e+00, %106 ] - %.0.lcssa8993.i180 = phi double [ %.1.i195, %152 ], [ 0.000000e+00, %106 ] - %167 = tail call double @sqrt(double noundef %.063.lcssa8894.i179) #13 - %168 = fmul double %.0.lcssa8993.i180, %167 +.thread.i178: ; preds = %151, %105 + %.063.lcssa8894.i179 = phi double [ %.164.i193, %151 ], [ 0.000000e+00, %105 ] + %.0.lcssa8993.i180 = phi double [ %.1.i195, %151 ], [ 0.000000e+00, %105 ] + %166 = tail call double @sqrt(double noundef %.063.lcssa8894.i179) #13 + %167 = fmul double %.0.lcssa8993.i180, %166 br label %_Z8lm_enormiPKd.exit199 -_Z8lm_enormiPKd.exit199: ; preds = %146, %156, %162, %.thread.i178 - %.062.i181 = phi double [ %151, %146 ], [ %161, %156 ], [ %166, %162 ], [ %168, %.thread.i178 ] - %169 = fcmp oeq double %.062.i181, 0.000000e+00 - br i1 %169, label %279, label %170 - -170: ; preds = %_Z8lm_enormiPKd.exit199 - %171 = load double, ptr %111, align 8 - %172 = fcmp olt double %171, 0.000000e+00 - %173 = fneg double %.062.i181 - %.0165 = select i1 %172, double %173, double %.062.i181 - %174 = icmp samesign ult i64 %indvars.iv268, %15 - br i1 %174, label %.lr.ph234.preheader, label %._crit_edge235 - -.lr.ph234.preheader: ; preds = %170 - %175 = and i64 %108, 4294967295 - %invariant.gep297 = getelementptr inbounds nuw double, ptr %2, i64 %175 +_Z8lm_enormiPKd.exit199: ; preds = %145, %155, %161, %.thread.i178 + %.062.i181 = phi double [ %150, %145 ], [ %160, %155 ], [ %165, %161 ], [ %167, %.thread.i178 ] + %168 = fcmp oeq double %.062.i181, 0.000000e+00 + br i1 %168, label %278, label %169 + +169: ; preds = %_Z8lm_enormiPKd.exit199 + %170 = load double, ptr %110, align 8 + %171 = fcmp olt double %170, 0.000000e+00 + %172 = fneg double %.062.i181 + %.0165 = select i1 %171, double %172, double %.062.i181 + %173 = icmp samesign ult i64 %indvars.iv268, %15 + br i1 %173, label %.lr.ph234.preheader, label %._crit_edge235 + +.lr.ph234.preheader: ; preds = %169 + %174 = and i64 %107, 4294967295 + %invariant.gep297 = getelementptr inbounds nuw double, ptr %2, i64 %174 br label %.lr.ph234 .lr.ph234: ; preds = %.lr.ph234.preheader, %.lr.ph234 %indvars.iv270 = phi i64 [ %indvars.iv268, %.lr.ph234.preheader ], [ %indvars.iv.next271, %.lr.ph234 ] %gep298 = getelementptr inbounds nuw double, ptr %invariant.gep297, i64 %indvars.iv270 - %176 = load double, ptr %gep298, align 8 - %177 = fdiv double %176, %.0165 - store double %177, ptr %gep298, align 8 + %175 = load double, ptr %gep298, align 8 + %176 = fdiv double %175, %.0165 + store double %176, ptr %gep298, align 8 %indvars.iv.next271 = add nuw nsw i64 %indvars.iv270, 1 %exitcond274.not = icmp eq i64 %indvars.iv.next271, %wide.trip.count.i br i1 %exitcond274.not, label %._crit_edge235.loopexit, label %.lr.ph234, !llvm.loop !65 ._crit_edge235.loopexit: ; preds = %.lr.ph234 - %.pre = load double, ptr %111, align 8 + %.pre = load double, ptr %110, align 8 br label %._crit_edge235 -._crit_edge235: ; preds = %._crit_edge235.loopexit, %170 - %178 = phi double [ %.pre, %._crit_edge235.loopexit ], [ %171, %170 ] - %179 = fadd double %178, 1.000000e+00 - store double %179, ptr %111, align 8 - br i1 %79, label %.preheader.lr.ph, label %._crit_edge246 +._crit_edge235: ; preds = %._crit_edge235.loopexit, %169 + %177 = phi double [ %.pre, %._crit_edge235.loopexit ], [ %170, %169 ] + %178 = fadd double %177, 1.000000e+00 + store double %178, ptr %110, align 8 + br i1 %78, label %.preheader.lr.ph, label %._crit_edge246 .preheader.lr.ph: ; preds = %._crit_edge235 - %180 = add nsw i64 %107, -1 - %181 = trunc nsw i64 %180 to i32 - %182 = sitofp i32 %181 to double - %183 = fdiv double 0x5FEFFFFFFFFFFFFF, %182 - %184 = icmp sgt i64 %107, 1 - %185 = and i64 %108, 4294967295 - %invariant.gep299 = getelementptr inbounds nuw double, ptr %2, i64 %185 - %invariant.gep303 = getelementptr inbounds nuw double, ptr %2, i64 %185 + %179 = add nsw i64 %106, -1 + %180 = trunc nsw i64 %179 to i32 + %181 = sitofp i32 %180 to double + %182 = fdiv double 0x5FEFFFFFFFFFFFFF, %181 + %183 = icmp sgt i64 %106, 1 + %184 = and i64 %107, 4294967295 + %invariant.gep299 = getelementptr inbounds nuw double, ptr %2, i64 %184 + %invariant.gep303 = getelementptr inbounds nuw double, ptr %2, i64 %184 %invariant.gep307 = getelementptr inbounds nuw double, ptr %2, i64 %indvars.iv268 br label %.preheader -.preheader: ; preds = %.preheader.lr.ph, %277 - %indvars.iv285 = phi i64 [ %indvars.iv256, %.preheader.lr.ph ], [ %indvars.iv.next286, %277 ] - br i1 %174, label %.lr.ph238, label %._crit_edge244 +.preheader: ; preds = %.preheader.lr.ph, %276 + %indvars.iv285 = phi i64 [ %indvars.iv256, %.preheader.lr.ph ], [ %indvars.iv.next286, %276 ] + br i1 %173, label %.lr.ph238, label %._crit_edge244 .lr.ph238: ; preds = %.preheader - %186 = mul nuw nsw i64 %indvars.iv285, %wide.trip.count.i - %invariant.gep301 = getelementptr inbounds nuw double, ptr %2, i64 %186 - br label %187 + %185 = mul nuw nsw i64 %indvars.iv285, %wide.trip.count.i + %invariant.gep301 = getelementptr inbounds nuw double, ptr %2, i64 %185 + br label %186 -187: ; preds = %.lr.ph238, %187 - %indvars.iv275 = phi i64 [ %indvars.iv268, %.lr.ph238 ], [ %indvars.iv.next276, %187 ] - %.0164237 = phi double [ 0.000000e+00, %.lr.ph238 ], [ %190, %187 ] +186: ; preds = %.lr.ph238, %186 + %indvars.iv275 = phi i64 [ %indvars.iv268, %.lr.ph238 ], [ %indvars.iv.next276, %186 ] + %.0164237 = phi double [ 0.000000e+00, %.lr.ph238 ], [ %189, %186 ] %gep300 = getelementptr inbounds nuw double, ptr %invariant.gep299, i64 %indvars.iv275 - %188 = load double, ptr %gep300, align 8 + %187 = load double, ptr %gep300, align 8 %gep302 = getelementptr inbounds nuw double, ptr %invariant.gep301, i64 %indvars.iv275 - %189 = load double, ptr %gep302, align 8 - %190 = tail call double @llvm.fmuladd.f64(double %188, double %189, double %.0164237) + %188 = load double, ptr %gep302, align 8 + %189 = tail call double @llvm.fmuladd.f64(double %187, double %188, double %.0164237) %indvars.iv.next276 = add nuw nsw i64 %indvars.iv275, 1 %exitcond279.not = icmp eq i64 %indvars.iv.next276, %wide.trip.count.i - br i1 %exitcond279.not, label %.lr.ph243, label %187, !llvm.loop !66 - -.lr.ph243: ; preds = %187 - %191 = load double, ptr %111, align 8 - %192 = mul nuw nsw i64 %indvars.iv285, %wide.trip.count.i - %193 = fneg double %190 - %194 = fdiv double %193, %191 - %invariant.gep305 = getelementptr inbounds nuw double, ptr %2, i64 %192 - br label %195 - -195: ; preds = %.lr.ph243, %195 - %indvars.iv280 = phi i64 [ %indvars.iv268, %.lr.ph243 ], [ %indvars.iv.next281, %195 ] + br i1 %exitcond279.not, label %.lr.ph243, label %186, !llvm.loop !66 + +.lr.ph243: ; preds = %186 + %190 = load double, ptr %110, align 8 + %191 = mul nuw nsw i64 %indvars.iv285, %wide.trip.count.i + %192 = fneg double %189 + %193 = fdiv double %192, %190 + %invariant.gep305 = getelementptr inbounds nuw double, ptr %2, i64 %191 + br label %194 + +194: ; preds = %.lr.ph243, %194 + %indvars.iv280 = phi i64 [ %indvars.iv268, %.lr.ph243 ], [ %indvars.iv.next281, %194 ] %gep304 = getelementptr inbounds nuw double, ptr %invariant.gep303, i64 %indvars.iv280 - %196 = load double, ptr %gep304, align 8 + %195 = load double, ptr %gep304, align 8 %gep306 = getelementptr inbounds nuw double, ptr %invariant.gep305, i64 %indvars.iv280 - %197 = load double, ptr %gep306, align 8 - %198 = tail call double @llvm.fmuladd.f64(double %194, double %196, double %197) - store double %198, ptr %gep306, align 8 + %196 = load double, ptr %gep306, align 8 + %197 = tail call double @llvm.fmuladd.f64(double %193, double %195, double %196) + store double %197, ptr %gep306, align 8 %indvars.iv.next281 = add nuw nsw i64 %indvars.iv280, 1 %exitcond284.not = icmp eq i64 %indvars.iv.next281, %wide.trip.count.i - br i1 %exitcond284.not, label %._crit_edge244, label %195, !llvm.loop !67 - -._crit_edge244: ; preds = %195, %.preheader - %199 = getelementptr inbounds nuw double, ptr %4, i64 %indvars.iv285 - %200 = load double, ptr %199, align 8 - %201 = fcmp une double %200, 0.000000e+00 - br i1 %201, label %202, label %277 - -202: ; preds = %._crit_edge244 - %203 = mul nuw nsw i64 %indvars.iv285, %wide.trip.count.i - %gep308 = getelementptr inbounds nuw double, ptr %invariant.gep307, i64 %203 - %204 = load double, ptr %gep308, align 8 - %205 = fdiv double %204, %200 - %206 = tail call double @llvm.fabs.f64(double %205) - %207 = fcmp olt double %206, 1.000000e+00 - br i1 %207, label %208, label %.thread - -208: ; preds = %202 - %209 = fneg double %205 - %210 = tail call double @llvm.fmuladd.f64(double %209, double %205, double 1.000000e+00) - %211 = tail call double @sqrt(double noundef %210) #13 - %212 = load double, ptr %199, align 8 - %213 = fmul double %211, %212 - store double %213, ptr %199, align 8 - %214 = getelementptr inbounds nuw double, ptr %6, i64 %indvars.iv285 - %215 = load double, ptr %214, align 8 - %216 = fdiv double %213, %215 - %217 = fcmp oeq double %216, 0.000000e+00 - br i1 %217, label %.thread, label %218 - -218: ; preds = %208 - %219 = fmul double %216, 5.000000e-02 - %220 = fmul double %216, %219 - %221 = fcmp ugt double %220, 0x3CB0000000000000 - br i1 %221, label %277, label %.thread - -.thread: ; preds = %202, %218, %208 - %222 = getelementptr inbounds nuw i8, ptr %gep308, i64 8 - br i1 %184, label %.lr.ph.i206, label %.thread.i200 - -.lr.ph.i206: ; preds = %.thread, %251 - %indvars.iv.i207 = phi i64 [ %indvars.iv.next.i218, %251 ], [ 0, %.thread ] - %.076.i208 = phi double [ %.1.i217, %251 ], [ 0.000000e+00, %.thread ] - %.06075.i209 = phi double [ %.161.i216, %251 ], [ 0.000000e+00, %.thread ] - %.06374.i210 = phi double [ %.164.i215, %251 ], [ 0.000000e+00, %.thread ] - %.06573.i211 = phi double [ %.166.i214, %251 ], [ 0.000000e+00, %.thread ] - %.06772.i212 = phi double [ %.168.i213, %251 ], [ 0.000000e+00, %.thread ] - %223 = getelementptr inbounds nuw double, ptr %222, i64 %indvars.iv.i207 - %224 = load double, ptr %223, align 8 - %225 = tail call double @llvm.fabs.f64(double %224) - %226 = fcmp ogt double %225, 0x2000000000000000 - br i1 %226, label %227, label %240 - -227: ; preds = %.lr.ph.i206 - %228 = fcmp olt double %225, %183 - br i1 %228, label %229, label %231 - -229: ; preds = %227 - %230 = tail call double @llvm.fmuladd.f64(double %224, double %224, double %.06573.i211) - br label %251 - -231: ; preds = %227 - %232 = fcmp ogt double %225, %.06075.i209 - br i1 %232, label %233, label %237 - -233: ; preds = %231 - %234 = fdiv double %.06075.i209, %225 - %235 = fmul double %.06772.i212, %234 - %236 = tail call double @llvm.fmuladd.f64(double %235, double %234, double 1.000000e+00) - br label %251 - -237: ; preds = %231 - %238 = fdiv double %225, %.06075.i209 - %239 = tail call double @llvm.fmuladd.f64(double %238, double %238, double %.06772.i212) - br label %251 - -240: ; preds = %.lr.ph.i206 - %241 = fcmp ogt double %225, %.076.i208 - br i1 %241, label %242, label %246 - -242: ; preds = %240 - %243 = fdiv double %.076.i208, %225 - %244 = fmul double %.06374.i210, %243 - %245 = tail call double @llvm.fmuladd.f64(double %244, double %243, double 1.000000e+00) - br label %251 - -246: ; preds = %240 - %247 = fcmp une double %224, 0.000000e+00 - br i1 %247, label %248, label %251 - -248: ; preds = %246 - %249 = fdiv double %225, %.076.i208 - %250 = tail call double @llvm.fmuladd.f64(double %249, double %249, double %.06374.i210) - br label %251 - -251: ; preds = %248, %246, %242, %237, %233, %229 - %.168.i213 = phi double [ %.06772.i212, %229 ], [ %236, %233 ], [ %239, %237 ], [ %.06772.i212, %242 ], [ %.06772.i212, %248 ], [ %.06772.i212, %246 ] - %.166.i214 = phi double [ %230, %229 ], [ %.06573.i211, %233 ], [ %.06573.i211, %237 ], [ %.06573.i211, %242 ], [ %.06573.i211, %248 ], [ %.06573.i211, %246 ] - %.164.i215 = phi double [ %.06374.i210, %229 ], [ %.06374.i210, %233 ], [ %.06374.i210, %237 ], [ %245, %242 ], [ %250, %248 ], [ %.06374.i210, %246 ] - %.161.i216 = phi double [ %.06075.i209, %229 ], [ %225, %233 ], [ %.06075.i209, %237 ], [ %.06075.i209, %242 ], [ %.06075.i209, %248 ], [ %.06075.i209, %246 ] - %.1.i217 = phi double [ %.076.i208, %229 ], [ %.076.i208, %233 ], [ %.076.i208, %237 ], [ %225, %242 ], [ %.076.i208, %248 ], [ %.076.i208, %246 ] + br i1 %exitcond284.not, label %._crit_edge244, label %194, !llvm.loop !67 + +._crit_edge244: ; preds = %194, %.preheader + %198 = getelementptr inbounds nuw double, ptr %4, i64 %indvars.iv285 + %199 = load double, ptr %198, align 8 + %200 = fcmp une double %199, 0.000000e+00 + br i1 %200, label %201, label %276 + +201: ; preds = %._crit_edge244 + %202 = mul nuw nsw i64 %indvars.iv285, %wide.trip.count.i + %gep308 = getelementptr inbounds nuw double, ptr %invariant.gep307, i64 %202 + %203 = load double, ptr %gep308, align 8 + %204 = fdiv double %203, %199 + %205 = tail call double @llvm.fabs.f64(double %204) + %206 = fcmp olt double %205, 1.000000e+00 + br i1 %206, label %207, label %.thread + +207: ; preds = %201 + %208 = fneg double %204 + %209 = tail call double @llvm.fmuladd.f64(double %208, double %204, double 1.000000e+00) + %210 = tail call double @sqrt(double noundef %209) #13 + %211 = load double, ptr %198, align 8 + %212 = fmul double %210, %211 + store double %212, ptr %198, align 8 + %213 = getelementptr inbounds nuw double, ptr %6, i64 %indvars.iv285 + %214 = load double, ptr %213, align 8 + %215 = fdiv double %212, %214 + %216 = fcmp oeq double %215, 0.000000e+00 + br i1 %216, label %.thread, label %217 + +217: ; preds = %207 + %218 = fmul double %215, 5.000000e-02 + %219 = fmul double %215, %218 + %220 = fcmp ugt double %219, 0x3CB0000000000000 + br i1 %220, label %276, label %.thread + +.thread: ; preds = %201, %217, %207 + %221 = getelementptr inbounds nuw i8, ptr %gep308, i64 8 + br i1 %183, label %.lr.ph.i206, label %.thread.i200 + +.lr.ph.i206: ; preds = %.thread, %250 + %indvars.iv.i207 = phi i64 [ %indvars.iv.next.i218, %250 ], [ 0, %.thread ] + %.076.i208 = phi double [ %.1.i217, %250 ], [ 0.000000e+00, %.thread ] + %.06075.i209 = phi double [ %.161.i216, %250 ], [ 0.000000e+00, %.thread ] + %.06374.i210 = phi double [ %.164.i215, %250 ], [ 0.000000e+00, %.thread ] + %.06573.i211 = phi double [ %.166.i214, %250 ], [ 0.000000e+00, %.thread ] + %.06772.i212 = phi double [ %.168.i213, %250 ], [ 0.000000e+00, %.thread ] + %222 = getelementptr inbounds nuw double, ptr %221, i64 %indvars.iv.i207 + %223 = load double, ptr %222, align 8 + %224 = tail call double @llvm.fabs.f64(double %223) + %225 = fcmp ogt double %224, 0x2000000000000000 + br i1 %225, label %226, label %239 + +226: ; preds = %.lr.ph.i206 + %227 = fcmp olt double %224, %182 + br i1 %227, label %228, label %230 + +228: ; preds = %226 + %229 = tail call double @llvm.fmuladd.f64(double %223, double %223, double %.06573.i211) + br label %250 + +230: ; preds = %226 + %231 = fcmp ogt double %224, %.06075.i209 + br i1 %231, label %232, label %236 + +232: ; preds = %230 + %233 = fdiv double %.06075.i209, %224 + %234 = fmul double %.06772.i212, %233 + %235 = tail call double @llvm.fmuladd.f64(double %234, double %233, double 1.000000e+00) + br label %250 + +236: ; preds = %230 + %237 = fdiv double %224, %.06075.i209 + %238 = tail call double @llvm.fmuladd.f64(double %237, double %237, double %.06772.i212) + br label %250 + +239: ; preds = %.lr.ph.i206 + %240 = fcmp ogt double %224, %.076.i208 + br i1 %240, label %241, label %245 + +241: ; preds = %239 + %242 = fdiv double %.076.i208, %224 + %243 = fmul double %.06374.i210, %242 + %244 = tail call double @llvm.fmuladd.f64(double %243, double %242, double 1.000000e+00) + br label %250 + +245: ; preds = %239 + %246 = fcmp une double %223, 0.000000e+00 + br i1 %246, label %247, label %250 + +247: ; preds = %245 + %248 = fdiv double %224, %.076.i208 + %249 = tail call double @llvm.fmuladd.f64(double %248, double %248, double %.06374.i210) + br label %250 + +250: ; preds = %247, %245, %241, %236, %232, %228 + %.168.i213 = phi double [ %.06772.i212, %228 ], [ %235, %232 ], [ %238, %236 ], [ %.06772.i212, %241 ], [ %.06772.i212, %247 ], [ %.06772.i212, %245 ] + %.166.i214 = phi double [ %229, %228 ], [ %.06573.i211, %232 ], [ %.06573.i211, %236 ], [ %.06573.i211, %241 ], [ %.06573.i211, %247 ], [ %.06573.i211, %245 ] + %.164.i215 = phi double [ %.06374.i210, %228 ], [ %.06374.i210, %232 ], [ %.06374.i210, %236 ], [ %244, %241 ], [ %249, %247 ], [ %.06374.i210, %245 ] + %.161.i216 = phi double [ %.06075.i209, %228 ], [ %224, %232 ], [ %.06075.i209, %236 ], [ %.06075.i209, %241 ], [ %.06075.i209, %247 ], [ %.06075.i209, %245 ] + %.1.i217 = phi double [ %.076.i208, %228 ], [ %.076.i208, %232 ], [ %.076.i208, %236 ], [ %224, %241 ], [ %.076.i208, %247 ], [ %.076.i208, %245 ] %indvars.iv.next.i218 = add nuw nsw i64 %indvars.iv.i207, 1 - %exitcond.not.i219 = icmp eq i64 %indvars.iv.next.i218, %180 + %exitcond.not.i219 = icmp eq i64 %indvars.iv.next.i218, %179 br i1 %exitcond.not.i219, label %._crit_edge.i220, label %.lr.ph.i206, !llvm.loop !28 -._crit_edge.i220: ; preds = %251 - %252 = fcmp une double %.168.i213, 0.000000e+00 - br i1 %252, label %253, label %259 +._crit_edge.i220: ; preds = %250 + %251 = fcmp une double %.168.i213, 0.000000e+00 + br i1 %251, label %252, label %258 -253: ; preds = %._crit_edge.i220 - %254 = fdiv double %.166.i214, %.161.i216 - %255 = fdiv double %254, %.161.i216 - %256 = fadd double %.168.i213, %255 - %257 = tail call double @sqrt(double noundef %256) #13 - %258 = fmul double %.161.i216, %257 +252: ; preds = %._crit_edge.i220 + %253 = fdiv double %.166.i214, %.161.i216 + %254 = fdiv double %253, %.161.i216 + %255 = fadd double %.168.i213, %254 + %256 = tail call double @sqrt(double noundef %255) #13 + %257 = fmul double %.161.i216, %256 br label %_Z8lm_enormiPKd.exit221 -259: ; preds = %._crit_edge.i220 - %260 = fcmp une double %.166.i214, 0.000000e+00 - br i1 %260, label %261, label %.thread.i200 +258: ; preds = %._crit_edge.i220 + %259 = fcmp une double %.166.i214, 0.000000e+00 + br i1 %259, label %260, label %.thread.i200 -261: ; preds = %259 - %262 = fcmp ult double %.166.i214, %.1.i217 - br i1 %262, label %269, label %263 +260: ; preds = %258 + %261 = fcmp ult double %.166.i214, %.1.i217 + br i1 %261, label %268, label %262 -263: ; preds = %261 - %264 = fdiv double %.1.i217, %.166.i214 - %265 = fmul double %.164.i215, %.1.i217 - %266 = tail call double @llvm.fmuladd.f64(double %264, double %265, double 1.000000e+00) - %267 = fmul double %.166.i214, %266 - %268 = tail call double @sqrt(double noundef %267) #13 +262: ; preds = %260 + %263 = fdiv double %.1.i217, %.166.i214 + %264 = fmul double %.164.i215, %.1.i217 + %265 = tail call double @llvm.fmuladd.f64(double %263, double %264, double 1.000000e+00) + %266 = fmul double %.166.i214, %265 + %267 = tail call double @sqrt(double noundef %266) #13 br label %_Z8lm_enormiPKd.exit221 -269: ; preds = %261 - %270 = fdiv double %.166.i214, %.1.i217 - %271 = tail call double @llvm.fmuladd.f64(double %.1.i217, double %.164.i215, double %270) - %272 = fmul double %.1.i217, %271 - %273 = tail call double @sqrt(double noundef %272) #13 +268: ; preds = %260 + %269 = fdiv double %.166.i214, %.1.i217 + %270 = tail call double @llvm.fmuladd.f64(double %.1.i217, double %.164.i215, double %269) + %271 = fmul double %.1.i217, %270 + %272 = tail call double @sqrt(double noundef %271) #13 br label %_Z8lm_enormiPKd.exit221 -.thread.i200: ; preds = %259, %.thread - %.063.lcssa8894.i201 = phi double [ %.164.i215, %259 ], [ 0.000000e+00, %.thread ] - %.0.lcssa8993.i202 = phi double [ %.1.i217, %259 ], [ 0.000000e+00, %.thread ] - %274 = tail call double @sqrt(double noundef %.063.lcssa8894.i201) #13 - %275 = fmul double %.0.lcssa8993.i202, %274 +.thread.i200: ; preds = %258, %.thread + %.063.lcssa8894.i201 = phi double [ %.164.i215, %258 ], [ 0.000000e+00, %.thread ] + %.0.lcssa8993.i202 = phi double [ %.1.i217, %258 ], [ 0.000000e+00, %.thread ] + %273 = tail call double @sqrt(double noundef %.063.lcssa8894.i201) #13 + %274 = fmul double %.0.lcssa8993.i202, %273 br label %_Z8lm_enormiPKd.exit221 -_Z8lm_enormiPKd.exit221: ; preds = %253, %263, %269, %.thread.i200 - %.062.i203 = phi double [ %258, %253 ], [ %268, %263 ], [ %273, %269 ], [ %275, %.thread.i200 ] - store double %.062.i203, ptr %199, align 8 - %276 = getelementptr inbounds nuw double, ptr %6, i64 %indvars.iv285 - store double %.062.i203, ptr %276, align 8 - br label %277 +_Z8lm_enormiPKd.exit221: ; preds = %252, %262, %268, %.thread.i200 + %.062.i203 = phi double [ %257, %252 ], [ %267, %262 ], [ %272, %268 ], [ %274, %.thread.i200 ] + store double %.062.i203, ptr %198, align 8 + %275 = getelementptr inbounds nuw double, ptr %6, i64 %indvars.iv285 + store double %.062.i203, ptr %275, align 8 + br label %276 -277: ; preds = %._crit_edge244, %_Z8lm_enormiPKd.exit221, %218 +276: ; preds = %._crit_edge244, %_Z8lm_enormiPKd.exit221, %217 %indvars.iv.next286 = add nuw nsw i64 %indvars.iv285, 1 %exitcond289.not = icmp eq i64 %indvars.iv.next286, %wide.trip.count254 br i1 %exitcond289.not, label %._crit_edge246, label %.preheader, !llvm.loop !68 -._crit_edge246: ; preds = %277, %._crit_edge235 - %278 = fneg double %.0165 - br label %279 +._crit_edge246: ; preds = %276, %._crit_edge235 + %277 = fneg double %.0165 + br label %278 -279: ; preds = %_Z8lm_enormiPKd.exit199, %._crit_edge246 - %.sink = phi double [ %278, %._crit_edge246 ], [ 0.000000e+00, %_Z8lm_enormiPKd.exit199 ] - %280 = getelementptr inbounds nuw double, ptr %4, i64 %indvars.iv268 - store double %.sink, ptr %280, align 8 +278: ; preds = %_Z8lm_enormiPKd.exit199, %._crit_edge246 + %.sink = phi double [ %277, %._crit_edge246 ], [ 0.000000e+00, %_Z8lm_enormiPKd.exit199 ] + %279 = getelementptr inbounds nuw double, ptr %4, i64 %indvars.iv268 + store double %.sink, ptr %279, align 8 %indvars.iv.next257 = add nuw nsw i64 %indvars.iv256, 1 %exitcond292.not = icmp eq i64 %indvars.iv.next269, %wide.trip.count254 - br i1 %exitcond292.not, label %281, label %78, !llvm.loop !69 + br i1 %exitcond292.not, label %280, label %77, !llvm.loop !69 -281: ; preds = %279 +280: ; preds = %278 ret void } diff --git a/bench/icu/optimized/rematch.ll b/bench/icu/optimized/rematch.ll index e84c62bd71d..569e9dafdf9 100644 --- a/bench/icu/optimized/rematch.ll +++ b/bench/icu/optimized/rematch.ll @@ -16431,7 +16431,7 @@ if.end74.lr.ph: ; preds = %if.end7 br label %if.end74 if.then10: ; preds = %for.inc271, %if.end7 - %9 = phi i64 [ %1, %if.end7 ], [ %77, %for.inc271 ] + %9 = phi i64 [ %1, %if.end7 ], [ %78, %for.inc271 ] %nextOutputStringStart.0.lcssa = phi i64 [ 0, %if.end7 ], [ %35, %for.inc271 ] %cmp13 = icmp sgt i64 %9, %nextOutputStringStart.0.lcssa br i1 %cmp13, label %if.then14, label %for.end273 @@ -16688,29 +16688,29 @@ if.end8.i: ; preds = %if.end6.i if.end13.i: ; preds = %if.end8.i %46 = add nsw i64 %indvars.iv, -1 - %cmp5.i.i = icmp samesign ult i64 %46, %45 + %47 = icmp samesign ult i64 %46, %45 br i1 %cmp5.i.i, label %cond.true.i.i196, label %if.end8.i188 if.end8.i188: ; preds = %if.end13.i - %47 = load ptr, ptr %fFrame.i, align 8 - %fExtra.i = getelementptr inbounds nuw i8, ptr %47, i64 16 + %48 = load ptr, ptr %fFrame.i, align 8 + %fExtra.i = getelementptr inbounds nuw i8, ptr %48, i64 16 br label %if.end.i203 cond.true.i.i196: ; preds = %if.end13.i %elements.i.i = getelementptr inbounds nuw i8, ptr %43, i64 24 - %48 = load ptr, ptr %elements.i.i, align 8 - %arrayidx.i.i = getelementptr inbounds nuw i32, ptr %48, i64 %46 - %49 = load i32, ptr %arrayidx.i.i, align 4 - %50 = sext i32 %49 to i64 - %51 = load ptr, ptr %fFrame.i, align 8 - %fExtra.i297 = getelementptr inbounds nuw i8, ptr %51, i64 16 - %arrayidx.i298 = getelementptr inbounds [1 x i64], ptr %fExtra.i297, i64 0, i64 %50 + %49 = load ptr, ptr %elements.i.i, align 8 + %arrayidx.i.i = getelementptr inbounds nuw i32, ptr %49, i64 %46 + %50 = load i32, ptr %arrayidx.i.i, align 4 + %51 = sext i32 %50 to i64 + %52 = load ptr, ptr %fFrame.i, align 8 + %fExtra.i297 = getelementptr inbounds nuw i8, ptr %52, i64 16 + %arrayidx.i298 = getelementptr inbounds [1 x i64], ptr %fExtra.i297, i64 0, i64 %51 %elements.i.i197 = getelementptr inbounds nuw i8, ptr %43, i64 24 - %52 = load ptr, ptr %elements.i.i197, align 8 - %arrayidx.i.i199 = getelementptr inbounds nuw i32, ptr %52, i64 %46 - %53 = load i32, ptr %arrayidx.i.i199, align 4 - %54 = add nsw i32 %53, 1 - %55 = sext i32 %54 to i64 + %53 = load ptr, ptr %elements.i.i197, align 8 + %arrayidx.i.i199 = getelementptr inbounds nuw i32, ptr %53, i64 %46 + %54 = load i32, ptr %arrayidx.i.i199, align 4 + %55 = add nsw i32 %54, 1 + %56 = sext i32 %55 to i64 br label %if.end.i203 _ZNK6icu_7512RegexMatcher5end64EiR10UErrorCode.exit.thread218.sink.split: ; preds = %if.end8.i, %if.end6.i, %if.end.i177 @@ -16724,11 +16724,11 @@ _ZNK6icu_7512RegexMatcher5end64EiR10UErrorCode.exit.thread218: ; preds = %_ZNK6i if.end.i203: ; preds = %cond.true.i.i196, %if.end8.i188 %s.0.i302.in = phi ptr [ %arrayidx.i298, %cond.true.i.i196 ], [ %fExtra.i, %if.end8.i188 ] - %56 = phi ptr [ %51, %cond.true.i.i196 ], [ %47, %if.end8.i188 ] - %cond.i.i192 = phi i64 [ %55, %cond.true.i.i196 ], [ 1, %if.end8.i188 ] - %57 = getelementptr inbounds nuw i8, ptr %56, i64 16 + %57 = phi ptr [ %52, %cond.true.i.i196 ], [ %48, %if.end8.i188 ] + %cond.i.i192 = phi i64 [ %56, %cond.true.i.i196 ], [ 1, %if.end8.i188 ] + %58 = getelementptr inbounds nuw i8, ptr %57, i64 16 %s.0.i302 = load i64, ptr %s.0.i302.in, align 8 - %arrayidx.i195 = getelementptr inbounds [1 x i64], ptr %57, i64 0, i64 %cond.i.i192 + %arrayidx.i195 = getelementptr inbounds [1 x i64], ptr %58, i64 0, i64 %cond.i.i192 %e.0.i = load i64, ptr %arrayidx.i195, align 8 call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %buffer.i) %cmp.i204 = icmp eq i64 %s.0.i302, %e.0.i @@ -16749,9 +16749,9 @@ if.else.i: ; preds = %if.then1.i if.end7.i: ; preds = %if.end.i203 %call8.i = call i32 @utext_extract_75(ptr noundef %37, i64 noundef %s.0.i302, i64 noundef %e.0.i, ptr noundef null, i32 noundef 0, ptr noundef nonnull %status) - %58 = load i32, ptr %status, align 4 - %cmp9.not.i = icmp eq i32 %58, 15 - %cmp.i36.i = icmp slt i32 %58, 1 + %59 = load i32, ptr %status, align 4 + %cmp9.not.i = icmp eq i32 %59, 15 + %cmp.i36.i = icmp slt i32 %59, 1 %or.cond.i = or i1 %cmp9.not.i, %cmp.i36.i br i1 %or.cond.i, label %if.end13.i205, label %_ZN6icu_75L21utext_extract_replaceEP5UTextS1_llP10UErrorCode.exit @@ -16765,8 +16765,8 @@ if.end13.i205: ; preds = %if.end7.i br i1 %cmp15.not.i, label %if.end22.i, label %if.then16.i if.then16.i: ; preds = %if.end13.i205 - %59 = shl nuw i32 %.pre65.i, 1 - %mul.i.i = zext i32 %59 to i64 + %60 = shl nuw i32 %.pre65.i, 1 + %mul.i.i = zext i32 %60 to i64 %call.i40.i = invoke noalias ptr @uprv_malloc_75(i64 noundef %mul.i.i) #19 to label %call.i.noexc.i unwind label %lpad.i @@ -16775,13 +16775,13 @@ call.i.noexc.i: ; preds = %if.then16.i br i1 %cmp2.not.i.i, label %if.then20.i, label %if.then3.i.i if.then3.i.i: ; preds = %call.i.noexc.i - %60 = load i8, ptr %needToRelease.i.i, align 4 - %tobool.not.i.i.i = icmp eq i8 %60, 0 + %61 = load i8, ptr %needToRelease.i.i, align 4 + %tobool.not.i.i.i = icmp eq i8 %61, 0 br i1 %tobool.not.i.i.i, label %invoke.cont17.i, label %if.then.i.i.i if.then.i.i.i: ; preds = %if.then3.i.i - %61 = load ptr, ptr %buffer.i, align 8 - invoke void @uprv_free_75(ptr noundef %61) + %62 = load ptr, ptr %buffer.i, align 8 + invoke void @uprv_free_75(ptr noundef %62) to label %invoke.cont17.i unwind label %lpad.i invoke.cont17.i: ; preds = %if.then.i.i.i, %if.then3.i.i @@ -16796,14 +16796,14 @@ if.then20.i: ; preds = %call.i.noexc.i br label %if.end22.i lpad.i: ; preds = %if.then51.i, %if.end46.i, %if.else3.i.i, %invoke.cont30.i, %if.then29.i, %if.end22.i, %if.then.i.i.i, %if.then16.i - %62 = landingpad { ptr, i32 } + %63 = landingpad { ptr, i32 } cleanup call void @_ZN6icu_7515MaybeStackArrayIDsLi40EED2Ev(ptr noundef nonnull align 8 dereferenceable(94) %buffer.i) #18 - resume { ptr, i32 } %62 + resume { ptr, i32 } %63 if.end22.i: ; preds = %if.then20.i, %invoke.cont17.i, %if.end13.i205 - %63 = phi ptr [ %call.i40.i, %invoke.cont17.i ], [ %.pre.i, %if.then20.i ], [ %stackArray.i.i, %if.end13.i205 ] - %call27.i = invoke i32 @utext_extract_75(ptr noundef %37, i64 noundef %s.0.i302, i64 noundef %e.0.i, ptr noundef %63, i32 noundef %.pre65.i, ptr noundef nonnull %status) + %64 = phi ptr [ %call.i40.i, %invoke.cont17.i ], [ %.pre.i, %if.then20.i ], [ %stackArray.i.i, %if.end13.i205 ] + %call27.i = invoke i32 @utext_extract_75(ptr noundef %37, i64 noundef %s.0.i302, i64 noundef %e.0.i, ptr noundef %64, i32 noundef %.pre65.i, ptr noundef nonnull %status) to label %invoke.cont26.i unwind label %lpad.i invoke.cont26.i: ; preds = %if.end22.i @@ -16815,18 +16815,18 @@ if.then29.i: ; preds = %invoke.cont26.i to label %invoke.cont30.i unwind label %lpad.i invoke.cont30.i: ; preds = %if.then29.i - %64 = load ptr, ptr %buffer.i, align 8 - %call35.i = invoke i32 @utext_replace_75(ptr noundef nonnull %38, i64 noundef 0, i64 noundef %call31.i, ptr noundef %64, i32 noundef %call8.i, ptr noundef nonnull %status) + %65 = load ptr, ptr %buffer.i, align 8 + %call35.i = invoke i32 @utext_replace_75(ptr noundef nonnull %38, i64 noundef 0, i64 noundef %call31.i, ptr noundef %65, i32 noundef %call8.i, ptr noundef nonnull %status) to label %cleanup.i unwind label %lpad.i if.end36.i: ; preds = %invoke.cont26.i - %65 = load i32, ptr %status, align 4 - %cmp.i41.i = icmp slt i32 %65, 1 + %66 = load i32, ptr %status, align 4 + %cmp.i41.i = icmp slt i32 %66, 1 br i1 %cmp.i41.i, label %if.end40.i, label %cleanup.i if.end40.i: ; preds = %if.end36.i - %66 = load i8, ptr %needToRelease.i.i, align 4 - %tobool.not.i.i = icmp eq i8 %66, 0 + %67 = load i8, ptr %needToRelease.i.i, align 4 + %tobool.not.i.i = icmp eq i8 %67, 0 br i1 %tobool.not.i.i, label %if.else.i.i, label %invoke.cont42.i if.else.i.i: ; preds = %if.end40.i @@ -16834,8 +16834,8 @@ if.else.i.i: ; preds = %if.end40.i br i1 %cmp.i46.i, label %if.then45.i, label %if.else3.i.i if.else3.i.i: ; preds = %if.else.i.i - %67 = load i32, ptr %capacity.i.i, align 8 - %spec.select.i.i = call i32 @llvm.smin.i32(i32 %.pre65.i, i32 %67) + %68 = load i32, ptr %capacity.i.i, align 8 + %spec.select.i.i = call i32 @llvm.smin.i32(i32 %.pre65.i, i32 %68) %conv.i48.i = sext i32 %spec.select.i.i to i64 %mul.i49.i = shl nsw i64 %conv.i48.i, 1 %call.i51.i = invoke noalias ptr @uprv_malloc_75(i64 noundef %mul.i49.i) #19 @@ -16846,19 +16846,19 @@ call.i.noexc50.i: ; preds = %if.else3.i.i br i1 %cmp7.i.i, label %if.then45.i, label %invoke.cont42.thread61.i invoke.cont42.thread61.i: ; preds = %call.i.noexc50.i - %68 = load ptr, ptr %buffer.i, align 8 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 2 %call.i51.i, ptr align 2 %68, i64 %mul.i49.i, i1 false) + %69 = load ptr, ptr %buffer.i, align 8 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 2 %call.i51.i, ptr align 2 %69, i64 %mul.i49.i, i1 false) store ptr %stackArray.i.i, ptr %buffer.i, align 8 store i32 40, ptr %capacity.i.i, align 8 store i8 0, ptr %needToRelease.i.i, align 4 br label %if.end46.i invoke.cont42.i: ; preds = %if.end40.i - %69 = load ptr, ptr %buffer.i, align 8 + %70 = load ptr, ptr %buffer.i, align 8 store ptr %stackArray.i.i, ptr %buffer.i, align 8 store i32 40, ptr %capacity.i.i, align 8 store i8 0, ptr %needToRelease.i.i, align 4 - %cmp44.i = icmp eq ptr %69, null + %cmp44.i = icmp eq ptr %70, null br i1 %cmp44.i, label %if.then45.i, label %if.end46.i if.then45.i: ; preds = %invoke.cont42.i, %call.i.noexc50.i, %if.else.i.i @@ -16866,14 +16866,14 @@ if.then45.i: ; preds = %invoke.cont42.i, %c br label %cleanup.i if.end46.i: ; preds = %invoke.cont42.i, %invoke.cont42.thread61.i - %p.0.i64.i = phi ptr [ %call.i51.i, %invoke.cont42.thread61.i ], [ %69, %invoke.cont42.i ] + %p.0.i64.i = phi ptr [ %call.i51.i, %invoke.cont42.thread61.i ], [ %70, %invoke.cont42.i ] %conv.i206 = sext i32 %call8.i to i64 %call48.i = invoke ptr @utext_openUChars_75(ptr noundef null, ptr noundef nonnull %p.0.i64.i, i64 noundef %conv.i206, ptr noundef nonnull %status) to label %invoke.cont47.i unwind label %lpad.i invoke.cont47.i: ; preds = %if.end46.i - %70 = load i32, ptr %status, align 4 - %cmp.i52.i = icmp slt i32 %70, 1 + %71 = load i32, ptr %status, align 4 + %cmp.i52.i = icmp slt i32 %71, 1 br i1 %cmp.i52.i, label %if.end53.i, label %if.then51.i if.then51.i: ; preds = %invoke.cont47.i @@ -16882,27 +16882,27 @@ if.then51.i: ; preds = %invoke.cont47.i if.end53.i: ; preds = %invoke.cont47.i %providerProperties.i = getelementptr inbounds nuw i8, ptr %call48.i, i64 8 - %71 = load i32, ptr %providerProperties.i, align 8 - %or.i = or i32 %71, 32 + %72 = load i32, ptr %providerProperties.i, align 8 + %or.i = or i32 %72, 32 store i32 %or.i, ptr %providerProperties.i, align 8 br label %cleanup.i cleanup.i: ; preds = %if.end53.i, %if.then51.i, %if.then45.i, %if.end36.i, %invoke.cont30.i %retval.1.i = phi ptr [ null, %if.then45.i ], [ %call48.i, %if.end53.i ], [ %38, %invoke.cont30.i ], [ null, %if.end36.i ], [ null, %if.then51.i ] - %72 = load i8, ptr %needToRelease.i.i, align 4 - %tobool.not.i.i55.i = icmp eq i8 %72, 0 + %73 = load i8, ptr %needToRelease.i.i, align 4 + %tobool.not.i.i55.i = icmp eq i8 %73, 0 br i1 %tobool.not.i.i55.i, label %_ZN6icu_75L21utext_extract_replaceEP5UTextS1_llP10UErrorCode.exit, label %if.then.i.i56.i if.then.i.i56.i: ; preds = %cleanup.i - %73 = load ptr, ptr %buffer.i, align 8 - invoke void @uprv_free_75(ptr noundef %73) + %74 = load ptr, ptr %buffer.i, align 8 + invoke void @uprv_free_75(ptr noundef %74) to label %_ZN6icu_75L21utext_extract_replaceEP5UTextS1_llP10UErrorCode.exit unwind label %terminate.lpad.i.i terminate.lpad.i.i: ; preds = %if.then.i.i56.i - %74 = landingpad { ptr, i32 } + %75 = landingpad { ptr, i32 } catch ptr null - %75 = extractvalue { ptr, i32 } %74, 0 - call void @__clang_call_terminate(ptr %75) #20 + %76 = extractvalue { ptr, i32 } %75, 0 + call void @__clang_call_terminate(ptr %76) #20 unreachable _ZN6icu_75L21utext_extract_replaceEP5UTextS1_llP10UErrorCode.exit: ; preds = %_ZNK6icu_7512RegexMatcher5end64EiR10UErrorCode.exit.thread218, %if.then3.i, %if.else.i, %if.end7.i, %cleanup.i, %if.then.i.i56.i @@ -16916,13 +16916,13 @@ _ZN6icu_75L21utext_extract_replaceEP5UTextS1_llP10UErrorCode.exit: ; preds = %_Z br i1 %or.cond, label %if.end157, label %for.end.loopexit, !llvm.loop !42 for.end.loopexit: ; preds = %_ZN6icu_75L21utext_extract_replaceEP5UTextS1_llP10UErrorCode.exit - %76 = trunc nsw i64 %indvars.iv.next292 to i32 + %77 = trunc nsw i64 %indvars.iv.next292 to i32 br label %for.end for.end: ; preds = %for.end.loopexit, %if.end151 - %i.2.lcssa = phi i32 [ %i.0261, %if.end151 ], [ %76, %for.end.loopexit ] - %77 = load i64, ptr %fActiveLimit, align 8 - %cmp167 = icmp eq i64 %35, %77 + %i.2.lcssa = phi i32 [ %i.0261, %if.end151 ], [ %77, %for.end.loopexit ] + %78 = load i64, ptr %fActiveLimit, align 8 + %cmp167 = icmp eq i64 %35, %78 br i1 %cmp167, label %if.then168, label %if.end266 if.then168: ; preds = %for.end @@ -16933,8 +16933,8 @@ if.then168: ; preds = %for.end if.then171: ; preds = %if.then168 %idxprom173 = sext i32 %add169 to i64 %arrayidx174 = getelementptr inbounds ptr, ptr %dest, i64 %idxprom173 - %78 = load ptr, ptr %arrayidx174, align 8 - %cmp175 = icmp eq ptr %78, null + %79 = load ptr, ptr %arrayidx174, align 8 + %cmp175 = icmp eq ptr %79, null br i1 %cmp175, label %if.then176, label %if.else180 if.then176: ; preds = %if.then171 @@ -16943,53 +16943,53 @@ if.then176: ; preds = %if.then171 br label %for.end273 if.else180: ; preds = %if.then171 - %call185 = call i64 @utext_nativeLength_75(ptr noundef nonnull %78) - %call186 = call i32 @utext_replace_75(ptr noundef nonnull %78, i64 noundef 0, i64 noundef %call185, ptr noundef nonnull @_ZZN6icu_7512RegexMatcher5splitEP5UTextPS2_iR10UErrorCodeE11emptyString, i32 noundef 0, ptr noundef nonnull %status) + %call185 = call i64 @utext_nativeLength_75(ptr noundef nonnull %79) + %call186 = call i32 @utext_replace_75(ptr noundef nonnull %79, i64 noundef 0, i64 noundef %call185, ptr noundef nonnull @_ZZN6icu_7512RegexMatcher5splitEP5UTextPS2_iR10UErrorCodeE11emptyString, i32 noundef 0, ptr noundef nonnull %status) br label %for.end273 if.else190: ; preds = %_ZN6icu_7512RegexMatcher4findEv.exit, %_ZN6icu_7512RegexMatcher4findEv.exit.thread - %79 = load i64, ptr %chunkNativeStart78, align 8 - %cmp192 = icmp eq i64 %79, 0 + %80 = load i64, ptr %chunkNativeStart78, align 8 + %cmp192 = icmp eq i64 %80, 0 br i1 %cmp192, label %land.lhs.true193, label %if.else230 land.lhs.true193: ; preds = %if.else190 - %80 = load i64, ptr %fInputLength81, align 8 - %81 = load i64, ptr %chunkNativeLimit82, align 8 - %cmp196 = icmp eq i64 %80, %81 + %81 = load i64, ptr %fInputLength81, align 8 + %82 = load i64, ptr %chunkNativeLimit82, align 8 + %cmp196 = icmp eq i64 %81, %82 br i1 %cmp196, label %land.lhs.true197, label %if.else230 land.lhs.true197: ; preds = %land.lhs.true193 - %82 = load i32, ptr %nativeIndexingLimit86, align 4 - %conv200 = sext i32 %82 to i64 - %cmp201 = icmp eq i64 %80, %conv200 + %83 = load i32, ptr %nativeIndexingLimit86, align 4 + %conv200 = sext i32 %83 to i64 + %cmp201 = icmp eq i64 %81, %conv200 br i1 %cmp201, label %if.then202, label %if.else230 if.then202: ; preds = %land.lhs.true197 %idxprom203 = sext i32 %i.0261 to i64 %arrayidx204 = getelementptr inbounds ptr, ptr %dest, i64 %idxprom203 - %83 = load ptr, ptr %arrayidx204, align 8 - %tobool205.not = icmp eq ptr %83, null + %84 = load ptr, ptr %arrayidx204, align 8 + %tobool205.not = icmp eq ptr %84, null br i1 %tobool205.not, label %if.else218, label %if.then206 if.then206: ; preds = %if.then202 - %call211 = call i64 @utext_nativeLength_75(ptr noundef nonnull %83) - %84 = load ptr, ptr %chunkContents99, align 8 - %add.ptr213 = getelementptr inbounds i16, ptr %84, i64 %nextOutputStringStart.0262 - %85 = load i64, ptr %fActiveLimit, align 8 - %sub215 = sub nsw i64 %85, %nextOutputStringStart.0262 + %call211 = call i64 @utext_nativeLength_75(ptr noundef nonnull %84) + %85 = load ptr, ptr %chunkContents99, align 8 + %add.ptr213 = getelementptr inbounds i16, ptr %85, i64 %nextOutputStringStart.0262 + %86 = load i64, ptr %fActiveLimit, align 8 + %sub215 = sub nsw i64 %86, %nextOutputStringStart.0262 %conv216 = trunc i64 %sub215 to i32 - %call217 = call i32 @utext_replace_75(ptr noundef nonnull %83, i64 noundef 0, i64 noundef %call211, ptr noundef %add.ptr213, i32 noundef %conv216, ptr noundef nonnull %status) + %call217 = call i32 @utext_replace_75(ptr noundef nonnull %84, i64 noundef 0, i64 noundef %call211, ptr noundef %add.ptr213, i32 noundef %conv216, ptr noundef nonnull %status) br label %for.end273 if.else218: ; preds = %if.then202 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(144) %remainingText219, i8 0, i64 144, i1 false) store i32 878368812, ptr %remainingText219, align 8 - %86 = getelementptr inbounds nuw i8, ptr %remainingText219, i64 12 - store i32 144, ptr %86, align 4 - %87 = load ptr, ptr %chunkContents99, align 8 - %add.ptr221 = getelementptr inbounds i16, ptr %87, i64 %nextOutputStringStart.0262 - %88 = load i64, ptr %fActiveLimit, align 8 - %sub223 = sub nsw i64 %88, %nextOutputStringStart.0262 + %87 = getelementptr inbounds nuw i8, ptr %remainingText219, i64 12 + store i32 144, ptr %87, align 4 + %88 = load ptr, ptr %chunkContents99, align 8 + %add.ptr221 = getelementptr inbounds i16, ptr %88, i64 %nextOutputStringStart.0262 + %89 = load i64, ptr %fActiveLimit, align 8 + %sub223 = sub nsw i64 %89, %nextOutputStringStart.0262 %call224 = call ptr @utext_openUChars_75(ptr noundef nonnull %remainingText219, ptr noundef %add.ptr221, i64 noundef %sub223, ptr noundef nonnull %status) %call225 = call ptr @utext_clone_75(ptr noundef null, ptr noundef nonnull %remainingText219, i8 noundef signext 1, i8 noundef signext 0, ptr noundef nonnull %status) store ptr %call225, ptr %arrayidx204, align 8 @@ -16998,8 +16998,8 @@ if.else218: ; preds = %if.then202 if.else230: ; preds = %land.lhs.true197, %land.lhs.true193, %if.else190 store i32 0, ptr %lengthStatus231, align 4 - %89 = load i64, ptr %fActiveLimit, align 8 - %call234 = call i32 @utext_extract_75(ptr noundef nonnull %input, i64 noundef %nextOutputStringStart.0262, i64 noundef %89, ptr noundef null, i32 noundef 0, ptr noundef nonnull %lengthStatus231) + %90 = load i64, ptr %fActiveLimit, align 8 + %call234 = call i32 @utext_extract_75(ptr noundef nonnull %input, i64 noundef %nextOutputStringStart.0262, i64 noundef %90, ptr noundef null, i32 noundef 0, ptr noundef nonnull %lengthStatus231) %add236 = add nsw i32 %call234, 1 %conv237 = sext i32 %add236 to i64 %mul238 = shl nsw i64 %conv237, 1 @@ -17012,24 +17012,24 @@ if.then241: ; preds = %if.else230 br label %for.end273 if.end242: ; preds = %if.else230 - %90 = load i64, ptr %fActiveLimit, align 8 - %call245 = call i32 @utext_extract_75(ptr noundef nonnull %input, i64 noundef %nextOutputStringStart.0262, i64 noundef %90, ptr noundef nonnull %call239, i32 noundef %add236, ptr noundef nonnull %status) + %91 = load i64, ptr %fActiveLimit, align 8 + %call245 = call i32 @utext_extract_75(ptr noundef nonnull %input, i64 noundef %nextOutputStringStart.0262, i64 noundef %91, ptr noundef nonnull %call239, i32 noundef %add236, ptr noundef nonnull %status) %idxprom246 = sext i32 %i.0261 to i64 %arrayidx247 = getelementptr inbounds ptr, ptr %dest, i64 %idxprom246 - %91 = load ptr, ptr %arrayidx247, align 8 - %tobool248.not = icmp eq ptr %91, null + %92 = load ptr, ptr %arrayidx247, align 8 + %tobool248.not = icmp eq ptr %92, null br i1 %tobool248.not, label %if.else256, label %if.then249 if.then249: ; preds = %if.end242 - %call254 = call i64 @utext_nativeLength_75(ptr noundef nonnull %91) - %call255 = call i32 @utext_replace_75(ptr noundef nonnull %91, i64 noundef 0, i64 noundef %call254, ptr noundef nonnull %call239, i32 noundef %call234, ptr noundef nonnull %status) + %call254 = call i64 @utext_nativeLength_75(ptr noundef nonnull %92) + %call255 = call i32 @utext_replace_75(ptr noundef nonnull %92, i64 noundef 0, i64 noundef %call254, ptr noundef nonnull %call239, i32 noundef %call234, ptr noundef nonnull %status) br label %if.end264 if.else256: ; preds = %if.end242 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(144) %remainingText257, i8 0, i64 144, i1 false) store i32 878368812, ptr %remainingText257, align 8 - %92 = getelementptr inbounds nuw i8, ptr %remainingText257, i64 12 - store i32 144, ptr %92, align 4 + %93 = getelementptr inbounds nuw i8, ptr %remainingText257, i64 12 + store i32 144, ptr %93, align 4 %conv258 = sext i32 %call234 to i64 %call259 = call ptr @utext_openUChars_75(ptr noundef nonnull %remainingText257, ptr noundef nonnull %call239, i64 noundef %conv258, ptr noundef nonnull %status) %call260 = call ptr @utext_clone_75(ptr noundef null, ptr noundef nonnull %remainingText257, i8 noundef signext 1, i8 noundef signext 0, ptr noundef nonnull %status) @@ -17042,8 +17042,8 @@ if.end264: ; preds = %if.else256, %if.the br label %for.end273 if.end266: ; preds = %for.end - %93 = load i32, ptr %status, align 4 - %cmp.i207 = icmp slt i32 %93, 1 + %94 = load i32, ptr %status, align 4 + %cmp.i207 = icmp slt i32 %94, 1 br i1 %cmp.i207, label %for.inc271, label %for.end273 for.inc271: ; preds = %if.end266 diff --git a/bench/llvm/optimized/TargetLoweringBase.ll b/bench/llvm/optimized/TargetLoweringBase.ll index 194ba3cbfba..b728f2a5706 100644 --- a/bench/llvm/optimized/TargetLoweringBase.ll +++ b/bench/llvm/optimized/TargetLoweringBase.ll @@ -6101,19 +6101,19 @@ _ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit128: ; preds = %_ZNK4llv %154 = getelementptr inbounds nuw i8, ptr %3, i64 8 br label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit130 -.preheader: ; preds = %343 +.preheader: ; preds = %341 %155 = getelementptr inbounds nuw i8, ptr %0, i64 2912 %156 = getelementptr inbounds nuw i8, ptr %0, i64 4784 - br label %345 + br label %343 -_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit130: ; preds = %151, %343 - %indvars.iv354 = phi i64 [ 17, %151 ], [ %indvars.iv.next355, %343 ] - %indvars.iv346 = phi i64 [ 18, %151 ], [ %indvars.iv.next347, %343 ] +_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit130: ; preds = %151, %341 + %indvars.iv354 = phi i64 [ 17, %151 ], [ %indvars.iv.next355, %341 ] + %indvars.iv346 = phi i64 [ 18, %151 ], [ %indvars.iv.next347, %341 ] %157 = trunc i64 %indvars.iv354 to i16 %158 = getelementptr inbounds nuw [234 x ptr], ptr %10, i64 0, i64 %indvars.iv354 %159 = load ptr, ptr %158, align 8, !tbaa !134 %.not286 = icmp eq ptr %159, null - br i1 %.not286, label %160, label %343 + br i1 %.not286, label %160, label %341 160: ; preds = %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit130 %161 = add nsw i64 %indvars.iv354, -1 @@ -6136,164 +6136,164 @@ _ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit130: ; preds = %151, %34 .preheader304: ; preds = %160 %171 = select i1 %spec.select.i.i, i32 169, i32 87 - %172 = zext nneg i32 %171 to i64 + %.not110318.not = zext nneg i32 %171 to i64 %.not110318.not = icmp samesign ult i64 %indvars.iv354, %172 br i1 %.not110318.not, label %.lr.ph320, label %.loopexit .lr.ph320: ; preds = %.preheader304 - %173 = zext i16 %163 to i64 - %174 = add nsw i64 %173, -1 - %175 = getelementptr inbounds [241 x %"class.llvm::TypeSize"], ptr @_ZZNK4llvm3MVT13getSizeInBitsEvE9SizeTable, i64 0, i64 %174 - %.sroa.0.0.copyload.i.i131 = load i64, ptr %175, align 16 + %172 = zext i16 %163 to i64 + %173 = add nsw i64 %172, -1 + %174 = getelementptr inbounds [241 x %"class.llvm::TypeSize"], ptr @_ZZNK4llvm3MVT13getSizeInBitsEvE9SizeTable, i64 0, i64 %173 + %.sroa.0.0.copyload.i.i131 = load i64, ptr %174, align 16 %176 = zext nneg i32 %171 to i64 br label %177 177: ; preds = %.lr.ph320, %.critedge %indvars.iv348 = phi i64 [ %indvars.iv346, %.lr.ph320 ], [ %indvars.iv.next349, %.critedge ] - %178 = trunc i64 %indvars.iv348 to i16 - %179 = add i16 %178, -17 - %spec.select.i.i.i = icmp ult i16 %179, 174 - br i1 %spec.select.i.i.i, label %180, label %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit - -180: ; preds = %177 - %181 = add nsw i64 %indvars.iv348, -1 - %182 = getelementptr inbounds [241 x i16], ptr @_ZZNK4llvm3MVT20getVectorElementTypeEvE10EltTyTable, i64 0, i64 %181 - %183 = load i16, ptr %182, align 2, !tbaa !138 + %176 = trunc i64 %indvars.iv348 to i16 + %177 = add i16 %176, -17 + %spec.select.i.i.i = icmp ult i16 %177, 174 + br i1 %spec.select.i.i.i, label %178, label %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit + +178: ; preds = %177 + %179 = add nsw i64 %indvars.iv348, -1 + %180 = getelementptr inbounds [241 x i16], ptr @_ZZNK4llvm3MVT20getVectorElementTypeEvE10EltTyTable, i64 0, i64 %179 + %181 = load i16, ptr %180, align 2, !tbaa !138 br label %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit -_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit: ; preds = %177, %180 - %.sroa.0.0.i.i = phi i16 [ %183, %180 ], [ %178, %177 ] - %184 = zext i16 %.sroa.0.0.i.i to i64 - %185 = add nsw i64 %184, -1 - %186 = getelementptr inbounds [241 x %"class.llvm::TypeSize"], ptr @_ZZNK4llvm3MVT13getSizeInBitsEvE9SizeTable, i64 0, i64 %185 - %.sroa.0.0.copyload.i.i = load i64, ptr %186, align 16 - %187 = icmp ugt i64 %.sroa.0.0.copyload.i.i, %.sroa.0.0.copyload.i.i131 - br i1 %187, label %188, label %.critedge - -188: ; preds = %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit - %189 = add nsw i64 %indvars.iv348, -1 - %190 = getelementptr inbounds [241 x i16], ptr @_ZZNK4llvm3MVT23getVectorMinNumElementsEvE10NElemTable, i64 0, i64 %189 - %191 = load i16, ptr %190, align 2, !tbaa !137 - %192 = add i16 %178, -138 - %spec.select.i.i132 = icmp ult i16 %192, 53 - %193 = icmp ne i16 %191, %165 - %194 = xor i1 %spec.select.i.i, %spec.select.i.i132 - %.not291 = select i1 %193, i1 true, i1 %194 - %.not.i136 = icmp eq i16 %178, 0 +_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit: ; preds = %177, %178 + %.sroa.0.0.i.i = phi i16 [ %181, %178 ], [ %176, %177 ] + %182 = zext i16 %.sroa.0.0.i.i to i64 + %183 = add nsw i64 %182, -1 + %184 = getelementptr inbounds [241 x %"class.llvm::TypeSize"], ptr @_ZZNK4llvm3MVT13getSizeInBitsEvE9SizeTable, i64 0, i64 %183 + %.sroa.0.0.copyload.i.i = load i64, ptr %184, align 16 + %185 = icmp ugt i64 %.sroa.0.0.copyload.i.i, %.sroa.0.0.copyload.i.i131 + br i1 %185, label %186, label %.critedge + +186: ; preds = %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit + %187 = add nsw i64 %indvars.iv348, -1 + %188 = getelementptr inbounds [241 x i16], ptr @_ZZNK4llvm3MVT23getVectorMinNumElementsEvE10NElemTable, i64 0, i64 %187 + %189 = load i16, ptr %188, align 2, !tbaa !137 + %190 = add i16 %176, -138 + %spec.select.i.i132 = icmp ult i16 %190, 53 + %191 = icmp ne i16 %189, %165 + %192 = xor i1 %spec.select.i.i, %spec.select.i.i132 + %.not291 = select i1 %191, i1 true, i1 %192 + %.not.i136 = icmp eq i16 %176, 0 %or.cond = or i1 %.not.i136, %.not291 br i1 %or.cond, label %.critedge, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit137 -_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit137: ; preds = %188 - %195 = getelementptr inbounds nuw [234 x ptr], ptr %10, i64 0, i64 %indvars.iv348 - %196 = load ptr, ptr %195, align 8, !tbaa !134 - %.not292 = icmp eq ptr %196, null +_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit137: ; preds = %186 + %193 = getelementptr inbounds nuw [234 x ptr], ptr %10, i64 0, i64 %indvars.iv348 + %194 = load ptr, ptr %193, align 8, !tbaa !134 + %.not292 = icmp eq ptr %194, null br i1 %.not292, label %.critedge, label %.thread260 .thread260: ; preds = %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit137 - %197 = getelementptr inbounds nuw [234 x %"class.llvm::MVT"], ptr %6, i64 0, i64 %indvars.iv354 - store i16 %178, ptr %197, align 2, !tbaa !138 - %198 = getelementptr inbounds nuw [234 x %"class.llvm::MVT"], ptr %7, i64 0, i64 %indvars.iv354 - store i16 %178, ptr %198, align 2, !tbaa !138 - %199 = getelementptr inbounds nuw [234 x i16], ptr %5, i64 0, i64 %indvars.iv354 - store i16 1, ptr %199, align 2, !tbaa !137 - %200 = getelementptr inbounds nuw [234 x i8], ptr %152, i64 0, i64 %indvars.iv354 - store i8 1, ptr %200, align 1, !tbaa !84 - br label %343 - -.critedge: ; preds = %188, %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit137 + %195 = getelementptr inbounds nuw [234 x %"class.llvm::MVT"], ptr %6, i64 0, i64 %indvars.iv354 + store i16 %176, ptr %195, align 2, !tbaa !138 + %196 = getelementptr inbounds nuw [234 x %"class.llvm::MVT"], ptr %7, i64 0, i64 %indvars.iv354 + store i16 %176, ptr %196, align 2, !tbaa !138 + %197 = getelementptr inbounds nuw [234 x i16], ptr %5, i64 0, i64 %indvars.iv354 + store i16 1, ptr %197, align 2, !tbaa !137 + %198 = getelementptr inbounds nuw [234 x i8], ptr %152, i64 0, i64 %indvars.iv354 + store i8 1, ptr %198, align 1, !tbaa !84 + br label %341 + +.critedge: ; preds = %186, %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit137 %indvars.iv.next349 = add nuw nsw i64 %indvars.iv348, 1 %.not110.not = icmp samesign ult i64 %indvars.iv348, %176 br i1 %.not110.not, label %177, label %.loopexit, !llvm.loop !392 .loopexit: ; preds = %.critedge, %.preheader304, %160 - %201 = call range(i16 0, 17) i16 @llvm.ctpop.i16(i16 %165) - %or.cond277 = icmp eq i16 %201, 1 + %199 = call range(i16 0, 17) i16 @llvm.ctpop.i16(i16 %165) + %or.cond277 = icmp eq i16 %199, 1 br i1 %or.cond277, label %.preheader303, label %_ZN4llvm13isPowerOf2_32Ej.exit.thread .preheader303: ; preds = %.loopexit - %202 = icmp samesign ult i64 %indvars.iv354, 190 - br i1 %202, label %.lr.ph324, label %.thread271 + %200 = icmp samesign ult i64 %indvars.iv354, 190 + br i1 %200, label %.lr.ph324, label %.thread271 .lr.ph324: ; preds = %.preheader303, %.critedge3 %indvars.iv356 = phi i64 [ %indvars.iv.next357, %.critedge3 ], [ %indvars.iv354, %.preheader303 ] %indvars.iv.next357 = add nuw nsw i64 %indvars.iv356, 1 - %203 = getelementptr inbounds nuw [241 x i16], ptr @_ZZNK4llvm3MVT20getVectorElementTypeEvE10EltTyTable, i64 0, i64 %indvars.iv356 - %204 = load i16, ptr %203, align 2, !tbaa !138 - %205 = icmp eq i16 %204, %163 - br i1 %205, label %206, label %.critedge3 - -206: ; preds = %.lr.ph324 - %207 = trunc i64 %indvars.iv356 to i16 - %208 = add i16 %207, -137 - %spec.select.i138 = icmp ult i16 %208, 53 - %209 = xor i1 %spec.select.i.i, %spec.select.i138 - br i1 %209, label %.critedge3, label %210 - -210: ; preds = %206 - %211 = getelementptr inbounds nuw [241 x i16], ptr @_ZZNK4llvm3MVT23getVectorMinNumElementsEvE10NElemTable, i64 0, i64 %indvars.iv356 - %212 = load i16, ptr %211, align 2, !tbaa !137 - %213 = icmp ugt i16 %212, %165 - br i1 %213, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit144, label %.critedge3 - -_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit144: ; preds = %210 - %214 = getelementptr inbounds nuw [234 x ptr], ptr %10, i64 0, i64 %indvars.iv.next357 - %215 = load ptr, ptr %214, align 8, !tbaa !134 - %.not296 = icmp eq ptr %215, null + %201 = getelementptr inbounds nuw [241 x i16], ptr @_ZZNK4llvm3MVT20getVectorElementTypeEvE10EltTyTable, i64 0, i64 %indvars.iv356 + %202 = load i16, ptr %201, align 2, !tbaa !138 + %203 = icmp eq i16 %202, %163 + br i1 %203, label %204, label %.critedge3 + +204: ; preds = %.lr.ph324 + %205 = trunc i64 %indvars.iv356 to i16 + %206 = add i16 %205, -137 + %spec.select.i138 = icmp ult i16 %206, 53 + %207 = xor i1 %spec.select.i.i, %spec.select.i138 + br i1 %207, label %.critedge3, label %208 + +208: ; preds = %204 + %209 = getelementptr inbounds nuw [241 x i16], ptr @_ZZNK4llvm3MVT23getVectorMinNumElementsEvE10NElemTable, i64 0, i64 %indvars.iv356 + %210 = load i16, ptr %209, align 2, !tbaa !137 + %211 = icmp ugt i16 %210, %165 + br i1 %211, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit144, label %.critedge3 + +_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit144: ; preds = %208 + %212 = getelementptr inbounds nuw [234 x ptr], ptr %10, i64 0, i64 %indvars.iv.next357 + %213 = load ptr, ptr %212, align 8, !tbaa !134 + %.not296 = icmp eq ptr %213, null br i1 %.not296, label %.critedge3, label %.thread264 .thread264: ; preds = %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit144 - %216 = trunc nuw nsw i64 %indvars.iv.next357 to i16 - %217 = getelementptr inbounds nuw [234 x %"class.llvm::MVT"], ptr %6, i64 0, i64 %indvars.iv354 - store i16 %216, ptr %217, align 2, !tbaa !138 - %218 = getelementptr inbounds nuw [234 x %"class.llvm::MVT"], ptr %7, i64 0, i64 %indvars.iv354 - store i16 %216, ptr %218, align 2, !tbaa !138 - %219 = getelementptr inbounds nuw [234 x i16], ptr %5, i64 0, i64 %indvars.iv354 - store i16 1, ptr %219, align 2, !tbaa !137 - %220 = getelementptr inbounds nuw [234 x i8], ptr %152, i64 0, i64 %indvars.iv354 - store i8 7, ptr %220, align 1, !tbaa !84 - br label %343 - -.critedge3: ; preds = %210, %206, %.lr.ph324, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit144 + %214 = trunc nuw nsw i64 %indvars.iv.next357 to i16 + %215 = getelementptr inbounds nuw [234 x %"class.llvm::MVT"], ptr %6, i64 0, i64 %indvars.iv354 + store i16 %214, ptr %215, align 2, !tbaa !138 + %216 = getelementptr inbounds nuw [234 x %"class.llvm::MVT"], ptr %7, i64 0, i64 %indvars.iv354 + store i16 %214, ptr %216, align 2, !tbaa !138 + %217 = getelementptr inbounds nuw [234 x i16], ptr %5, i64 0, i64 %indvars.iv354 + store i16 1, ptr %217, align 2, !tbaa !137 + %218 = getelementptr inbounds nuw [234 x i8], ptr %152, i64 0, i64 %indvars.iv354 + store i8 7, ptr %218, align 1, !tbaa !84 + br label %341 + +.critedge3: ; preds = %208, %204, %.lr.ph324, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit144 %exitcond360.not = icmp eq i64 %indvars.iv.next357, 190 br i1 %exitcond360.not, label %.thread271, label %.lr.ph324, !llvm.loop !393 _ZN4llvm13isPowerOf2_32Ej.exit.thread: ; preds = %.loopexit %.not.i.i145 = icmp eq i16 %165, 0 - br i1 %.not.i.i145, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit148, label %221 + br i1 %.not.i.i145, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit148, label %219 -221: ; preds = %_ZN4llvm13isPowerOf2_32Ej.exit.thread - %222 = add nsw i16 %157, -191 - %spec.select.i.i.i146 = icmp ult i16 %222, -53 +219: ; preds = %_ZN4llvm13isPowerOf2_32Ej.exit.thread + %220 = add nsw i16 %157, -191 + %spec.select.i.i.i146 = icmp ult i16 %220, -53 %.sroa.0.sroa.0.0.extract.trunc.i = zext i16 %165 to i32 - %223 = add nsw i32 %.sroa.0.sroa.0.0.extract.trunc.i, -1 - %224 = call noundef range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %223, i1 false) - %225 = sub nuw nsw i32 32, %224 - %226 = shl nuw nsw i32 1, %225 - br i1 %spec.select.i.i.i146, label %229, label %227 - -227: ; preds = %221 - %228 = call i16 @_ZN4llvm3MVT19getScalableVectorVTES0_j(i16 %163, i32 noundef %226) + %221 = add nsw i32 %.sroa.0.sroa.0.0.extract.trunc.i, -1 + %222 = call noundef range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %221, i1 false) + %223 = sub nuw nsw i32 32, %222 + %224 = shl nuw nsw i32 1, %223 + br i1 %spec.select.i.i.i146, label %227, label %225 + +225: ; preds = %219 + %226 = call i16 @_ZN4llvm3MVT19getScalableVectorVTES0_j(i16 %163, i32 noundef %224) br label %_ZNK4llvm3MVT17getPow2VectorTypeEv.exit -229: ; preds = %221 - %230 = call i16 @_ZN4llvm3MVT11getVectorVTES0_j(i16 %163, i32 noundef %226) +227: ; preds = %219 + %228 = call i16 @_ZN4llvm3MVT11getVectorVTES0_j(i16 %163, i32 noundef %224) br label %_ZNK4llvm3MVT17getPow2VectorTypeEv.exit -_ZNK4llvm3MVT17getPow2VectorTypeEv.exit: ; preds = %227, %229 - %.sroa.03.0.i = phi i16 [ %228, %227 ], [ %230, %229 ] +_ZNK4llvm3MVT17getPow2VectorTypeEv.exit: ; preds = %225, %227 + %.sroa.03.0.i = phi i16 [ %226, %225 ], [ %228, %227 ] %.not.i147 = icmp eq i16 %.sroa.03.0.i, 0 br i1 %.not.i147, label %.thread271, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit148 _ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit148: ; preds = %_ZN4llvm13isPowerOf2_32Ej.exit.thread, %_ZNK4llvm3MVT17getPow2VectorTypeEv.exit %.sroa.03.0.i268 = phi i16 [ %.sroa.03.0.i, %_ZNK4llvm3MVT17getPow2VectorTypeEv.exit ], [ %157, %_ZN4llvm13isPowerOf2_32Ej.exit.thread ] - %231 = zext i16 %.sroa.03.0.i268 to i64 - %232 = getelementptr inbounds nuw [234 x ptr], ptr %10, i64 0, i64 %231 - %233 = load ptr, ptr %232, align 8, !tbaa !134 - %.not293 = icmp eq ptr %233, null - br i1 %.not293, label %.thread271, label %234 - -234: ; preds = %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit148 - %235 = getelementptr inbounds nuw [234 x %"class.llvm::MVT"], ptr %6, i64 0, i64 %indvars.iv354 + %229 = zext i16 %.sroa.03.0.i268 to i64 + %230 = getelementptr inbounds nuw [234 x ptr], ptr %10, i64 0, i64 %229 + %231 = load ptr, ptr %230, align 8, !tbaa !134 + %.not293 = icmp eq ptr %231, null + br i1 %.not293, label %.thread271, label %232 + +232: ; preds = %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit148 + %233 = getelementptr inbounds nuw [234 x %"class.llvm::MVT"], ptr %6, i64 0, i64 %indvars.iv354 store i16 %.sroa.03.0.i268, ptr %235, align 2, !tbaa !138 %236 = getelementptr inbounds nuw [234 x i8], ptr %152, i64 0, i64 %indvars.iv354 store i8 7, ptr %236, align 1, !tbaa !84 @@ -6304,80 +6304,80 @@ _ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit148: ; preds = %_ZN4llvm br label %343 .thread271: ; preds = %.critedge3, %.preheader303, %_ZNK4llvm3MVT17getPow2VectorTypeEv.exit, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit148, %160, %160 - %239 = add nsw i16 %157, -191 - %spec.select.i.i.i149 = icmp ult i16 %239, -53 + %237 = add nsw i16 %157, -191 + %spec.select.i.i.i149 = icmp ult i16 %237, -53 %.sroa.052.sroa.0.0.extract.trunc.i = zext i16 %165 to i32 br i1 %spec.select.i.i.i149, label %._crit_edge.i, label %_ZN4llvm13isPowerOf2_32Ej.exit.i ._crit_edge.i: ; preds = %.thread271 %.pre.i = call range(i32 1, 17) i32 @llvm.ctpop.i32(i32 %.sroa.052.sroa.0.0.extract.trunc.i) - %240 = icmp samesign ugt i32 %.pre.i, 1 - br label %243 + %238 = icmp samesign ugt i32 %.pre.i, 1 + br label %241 _ZN4llvm13isPowerOf2_32Ej.exit.i: ; preds = %.thread271 %.not.i.i.i = icmp ne i16 %165, 0 call void @llvm.assume(i1 %.not.i.i.i) - %241 = call range(i32 1, 17) i32 @llvm.ctpop.i32(i32 %.sroa.052.sroa.0.0.extract.trunc.i) - %242 = icmp samesign ult i32 %241, 2 - call void @llvm.assume(i1 %242) - br label %243 + %239 = call range(i32 1, 17) i32 @llvm.ctpop.i32(i32 %.sroa.052.sroa.0.0.extract.trunc.i) + %240 = icmp samesign ult i32 %239, 2 + call void @llvm.assume(i1 %240) + br label %241 -243: ; preds = %_ZN4llvm13isPowerOf2_32Ej.exit.i, %._crit_edge.i - %.pre-phi.i = phi i1 [ %240, %._crit_edge.i ], [ false, %_ZN4llvm13isPowerOf2_32Ej.exit.i ] +241: ; preds = %_ZN4llvm13isPowerOf2_32Ej.exit.i, %._crit_edge.i + %.pre-phi.i = phi i1 [ %238, %._crit_edge.i ], [ false, %_ZN4llvm13isPowerOf2_32Ej.exit.i ] %.not.i.i26.i = icmp eq i16 %165, 0 %or.cond.not87.i = select i1 %.not.i.i26.i, i1 true, i1 %.pre-phi.i %.sroa.052.sroa.0.0.i = select i1 %or.cond.not87.i, i32 1, i32 %.sroa.052.sroa.0.0.extract.trunc.i %narrow.not.i = or i1 %spec.select.i.i.i149, %or.cond.not87.i %.025.i = select i1 %or.cond.not87.i, i16 %165, i16 1 - %244 = icmp samesign ugt i32 %.sroa.052.sroa.0.0.i, 1 - br i1 %244, label %.lr.ph.i, label %.critedge.i + %242 = icmp samesign ugt i32 %.sroa.052.sroa.0.0.i, 1 + br i1 %242, label %.lr.ph.i, label %.critedge.i -.lr.ph.i: ; preds = %243 +.lr.ph.i: ; preds = %241 br i1 %narrow.not.i, label %_ZN4llvm3MVT11getVectorVTES0_NS_12ElementCountE.exit.us.i, label %_ZN4llvm3MVT11getVectorVTES0_NS_12ElementCountE.exit.i _ZN4llvm3MVT11getVectorVTES0_NS_12ElementCountE.exit.us.i: ; preds = %.lr.ph.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.us.i - %.189.us.i = phi i16 [ %250, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.us.i ], [ %.025.i, %.lr.ph.i ] - %.sroa.052.sroa.0.188.us.i = phi i32 [ %249, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.us.i ], [ %.sroa.052.sroa.0.0.extract.trunc.i, %.lr.ph.i ] - %245 = call i16 @_ZN4llvm3MVT11getVectorVTES0_j(i16 %163, i32 noundef %.sroa.052.sroa.0.188.us.i) - %.not.i28.us.i = icmp eq i16 %245, 0 + %.189.us.i = phi i16 [ %248, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.us.i ], [ %.025.i, %.lr.ph.i ] + %.sroa.052.sroa.0.188.us.i = phi i32 [ %247, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.us.i ], [ %.sroa.052.sroa.0.0.extract.trunc.i, %.lr.ph.i ] + %243 = call i16 @_ZN4llvm3MVT11getVectorVTES0_j(i16 %163, i32 noundef %.sroa.052.sroa.0.188.us.i) + %.not.i28.us.i = icmp eq i16 %243, 0 br i1 %.not.i28.us.i, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.us.i, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.us.i _ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.us.i: ; preds = %_ZN4llvm3MVT11getVectorVTES0_NS_12ElementCountE.exit.us.i - %246 = zext i16 %245 to i64 - %247 = getelementptr inbounds nuw [234 x ptr], ptr %10, i64 0, i64 %246 - %248 = load ptr, ptr %247, align 8, !tbaa !134 - %.not.us.i = icmp eq ptr %248, null + %244 = zext i16 %243 to i64 + %245 = getelementptr inbounds nuw [234 x ptr], ptr %10, i64 0, i64 %244 + %246 = load ptr, ptr %245, align 8, !tbaa !134 + %.not.us.i = icmp eq ptr %246, null br i1 %.not.us.i, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.us.i, label %.critedge.i _ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.us.i: ; preds = %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.us.i, %_ZN4llvm3MVT11getVectorVTES0_NS_12ElementCountE.exit.us.i - %249 = lshr i32 %.sroa.052.sroa.0.188.us.i, 1 - %250 = shl i16 %.189.us.i, 1 - %251 = icmp samesign ugt i32 %.sroa.052.sroa.0.188.us.i, 3 - br i1 %251, label %_ZN4llvm3MVT11getVectorVTES0_NS_12ElementCountE.exit.us.i, label %.critedge.i, !llvm.loop !394 + %247 = lshr i32 %.sroa.052.sroa.0.188.us.i, 1 + %248 = shl i16 %.189.us.i, 1 + %249 = icmp samesign ugt i32 %.sroa.052.sroa.0.188.us.i, 3 + br i1 %249, label %_ZN4llvm3MVT11getVectorVTES0_NS_12ElementCountE.exit.us.i, label %.critedge.i, !llvm.loop !394 _ZN4llvm3MVT11getVectorVTES0_NS_12ElementCountE.exit.i: ; preds = %.lr.ph.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.i - %.189.i = phi i16 [ %257, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.i ], [ %.025.i, %.lr.ph.i ] - %.sroa.052.sroa.0.188.i = phi i32 [ %256, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.i ], [ %.sroa.052.sroa.0.0.extract.trunc.i, %.lr.ph.i ] - %252 = call i16 @_ZN4llvm3MVT19getScalableVectorVTES0_j(i16 %163, i32 noundef %.sroa.052.sroa.0.188.i) - %.not.i28.i = icmp eq i16 %252, 0 + %.189.i = phi i16 [ %255, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.i ], [ %.025.i, %.lr.ph.i ] + %.sroa.052.sroa.0.188.i = phi i32 [ %254, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.i ], [ %.sroa.052.sroa.0.0.extract.trunc.i, %.lr.ph.i ] + %250 = call i16 @_ZN4llvm3MVT19getScalableVectorVTES0_j(i16 %163, i32 noundef %.sroa.052.sroa.0.188.i) + %.not.i28.i = icmp eq i16 %250, 0 br i1 %.not.i28.i, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.i, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.i _ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.i: ; preds = %_ZN4llvm3MVT11getVectorVTES0_NS_12ElementCountE.exit.i - %253 = zext i16 %252 to i64 - %254 = getelementptr inbounds nuw [234 x ptr], ptr %10, i64 0, i64 %253 - %255 = load ptr, ptr %254, align 8, !tbaa !134 - %.not.i150 = icmp eq ptr %255, null + %251 = zext i16 %250 to i64 + %252 = getelementptr inbounds nuw [234 x ptr], ptr %10, i64 0, i64 %251 + %253 = load ptr, ptr %252, align 8, !tbaa !134 + %.not.i150 = icmp eq ptr %253, null br i1 %.not.i150, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.i, label %.critedge.i _ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.i: ; preds = %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.i, %_ZN4llvm3MVT11getVectorVTES0_NS_12ElementCountE.exit.i - %256 = lshr i32 %.sroa.052.sroa.0.188.i, 1 - %257 = shl i16 %.189.i, 1 - %258 = icmp samesign ugt i32 %.sroa.052.sroa.0.188.i, 3 - br i1 %258, label %_ZN4llvm3MVT11getVectorVTES0_NS_12ElementCountE.exit.i, label %.critedge.i, !llvm.loop !394 - -.critedge.i: ; preds = %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.us.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.us.i, %243 - %.sroa.052.sroa.0.1.lcssa.i = phi i32 [ %.sroa.052.sroa.0.0.i, %243 ], [ %.sroa.052.sroa.0.188.us.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.us.i ], [ %249, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.us.i ], [ %.sroa.052.sroa.0.188.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.i ], [ %256, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.i ] - %.1.lcssa.i = phi i16 [ %.025.i, %243 ], [ %.189.us.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.us.i ], [ %250, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.us.i ], [ %.189.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.i ], [ %257, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.i ] + %254 = lshr i32 %.sroa.052.sroa.0.188.i, 1 + %255 = shl i16 %.189.i, 1 + %256 = icmp samesign ugt i32 %.sroa.052.sroa.0.188.i, 3 + br i1 %256, label %_ZN4llvm3MVT11getVectorVTES0_NS_12ElementCountE.exit.i, label %.critedge.i, !llvm.loop !394 + +.critedge.i: ; preds = %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.us.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.us.i, %241 + %.sroa.052.sroa.0.1.lcssa.i = phi i32 [ %.sroa.052.sroa.0.0.i, %241 ], [ %.sroa.052.sroa.0.188.us.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.us.i ], [ %247, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.us.i ], [ %.sroa.052.sroa.0.188.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.i ], [ %254, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.i ] + %.1.lcssa.i = phi i16 [ %.025.i, %241 ], [ %.189.us.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.us.i ], [ %248, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.us.i ], [ %.189.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.i ], [ %255, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread.i ] br i1 %narrow.not.i, label %261, label %259 259: ; preds = %.critedge.i @@ -6394,51 +6394,51 @@ _ZN4llvm3MVT11getVectorVTES0_NS_12ElementCountE.exit35.i: ; preds = %261, %259 br i1 %.not.i36.i, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit37.thread.i, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit37.i _ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit37.i: ; preds = %_ZN4llvm3MVT11getVectorVTES0_NS_12ElementCountE.exit35.i - %263 = zext i16 %.sroa.04.0.i34.i to i64 - %264 = getelementptr inbounds nuw [234 x ptr], ptr %10, i64 0, i64 %263 - %265 = load ptr, ptr %264, align 8, !tbaa !134 - %.not85.i = icmp eq ptr %265, null - br i1 %.not85.i, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit37.thread.i, label %266 + %261 = zext i16 %.sroa.04.0.i34.i to i64 + %262 = getelementptr inbounds nuw [234 x ptr], ptr %10, i64 0, i64 %261 + %263 = load ptr, ptr %262, align 8, !tbaa !134 + %.not85.i = icmp eq ptr %263, null + br i1 %.not85.i, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit37.thread.i, label %264 _ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit37.thread.i: ; preds = %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit37.i, %_ZN4llvm3MVT11getVectorVTES0_NS_12ElementCountE.exit35.i - br label %266 + br label %264 -266: ; preds = %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit37.thread.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit37.i +264: ; preds = %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit37.thread.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit37.i %.sroa.046.0.i = phi i16 [ %.sroa.04.0.i34.i, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit37.i ], [ %163, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit37.thread.i ] - %267 = add i16 %.sroa.046.0.i, -17 - %spec.select.i.i.i.i = icmp ult i16 %267, 174 - br i1 %spec.select.i.i.i.i, label %268, label %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit.i - -268: ; preds = %266 - %269 = zext nneg i16 %.sroa.046.0.i to i64 - %270 = add nsw i64 %269, -1 - %271 = getelementptr inbounds [241 x i16], ptr @_ZZNK4llvm3MVT20getVectorElementTypeEvE10EltTyTable, i64 0, i64 %270 - %272 = load i16, ptr %271, align 2, !tbaa !138 + %265 = add i16 %.sroa.046.0.i, -17 + %spec.select.i.i.i.i = icmp ult i16 %265, 174 + br i1 %spec.select.i.i.i.i, label %266, label %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit.i + +266: ; preds = %264 + %267 = zext nneg i16 %.sroa.046.0.i to i64 + %268 = add nsw i64 %267, -1 + %269 = getelementptr inbounds [241 x i16], ptr @_ZZNK4llvm3MVT20getVectorElementTypeEvE10EltTyTable, i64 0, i64 %268 + %270 = load i16, ptr %269, align 2, !tbaa !138 br label %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit.i -_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit.i: ; preds = %268, %266 - %.sroa.0.0.i.i.i = phi i16 [ %272, %268 ], [ %.sroa.046.0.i, %266 ] - %273 = zext i16 %.sroa.0.0.i.i.i to i64 - %274 = add nsw i64 %273, -1 - %275 = getelementptr inbounds [241 x %"class.llvm::TypeSize"], ptr @_ZZNK4llvm3MVT13getSizeInBitsEvE9SizeTable, i64 0, i64 %274 - %.sroa.0.0.copyload.i.i.i = load i64, ptr %275, align 16 - %276 = trunc i64 %.sroa.0.0.copyload.i.i.i to i32 - %277 = icmp ult i32 %276, 2 - br i1 %277, label %_ZN4llvm8bit_ceilIjEET_S1_.exit.i, label %278 - -278: ; preds = %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit.i - %279 = add i32 %276, -1 - %280 = call noundef range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %279, i1 false) - %281 = sub nuw nsw i32 32, %280 - %282 = shl nuw i32 1, %281 - %283 = zext i32 %282 to i64 +_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit.i: ; preds = %266, %264 + %.sroa.0.0.i.i.i = phi i16 [ %270, %266 ], [ %.sroa.046.0.i, %264 ] + %271 = zext i16 %.sroa.0.0.i.i.i to i64 + %272 = add nsw i64 %271, -1 + %273 = getelementptr inbounds [241 x %"class.llvm::TypeSize"], ptr @_ZZNK4llvm3MVT13getSizeInBitsEvE9SizeTable, i64 0, i64 %272 + %.sroa.0.0.copyload.i.i.i = load i64, ptr %273, align 16 + %274 = trunc i64 %.sroa.0.0.copyload.i.i.i to i32 + %275 = icmp ult i32 %274, 2 + br i1 %275, label %_ZN4llvm8bit_ceilIjEET_S1_.exit.i, label %276 + +276: ; preds = %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit.i + %277 = add i32 %274, -1 + %278 = call noundef range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %277, i1 false) + %279 = sub nuw nsw i32 32, %278 + %280 = shl nuw i32 1, %279 + %281 = zext i32 %280 to i64 br label %_ZN4llvm8bit_ceilIjEET_S1_.exit.i -_ZN4llvm8bit_ceilIjEET_S1_.exit.i: ; preds = %278, %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit.i - %.0.i.i = phi i64 [ %283, %278 ], [ 1, %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit.i ] - %284 = zext i16 %.sroa.046.0.i to i64 - %285 = getelementptr inbounds nuw [234 x %"class.llvm::MVT"], ptr %7, i64 0, i64 %284 - %.sroa.01.0.copyload.i.i = load i16, ptr %285, align 2, !tbaa !138 +_ZN4llvm8bit_ceilIjEET_S1_.exit.i: ; preds = %276, %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit.i + %.0.i.i = phi i64 [ %281, %276 ], [ 1, %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit.i ] + %282 = zext i16 %.sroa.046.0.i to i64 + %283 = getelementptr inbounds nuw [234 x %"class.llvm::MVT"], ptr %7, i64 0, i64 %282 + %.sroa.01.0.copyload.i.i = load i16, ptr %283, align 2, !tbaa !138 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #27 store i16 %.sroa.01.0.copyload.i.i, ptr %4, align 8, !tbaa !138 store ptr null, ptr %153, align 8, !tbaa !151 @@ -6454,122 +6454,122 @@ _ZNK4llvm3EVTeqES0_.exit.thread11.i.i: ; preds = %_ZN4llvm8bit_ceilIj store i16 %.sroa.046.0.i, ptr %3, align 8 store ptr null, ptr %154, align 8 %.not.i.i8.i.i = icmp eq i16 %.sroa.01.0.copyload.i.i, 0 - br i1 %.not.i.i8.i.i, label %290, label %286 - -286: ; preds = %_ZNK4llvm3EVTeqES0_.exit.thread11.i.i - %287 = zext i16 %.sroa.01.0.copyload.i.i to i64 - %288 = add nsw i64 %287, -1 - %289 = getelementptr inbounds [241 x %"class.llvm::TypeSize"], ptr @_ZZNK4llvm3MVT13getSizeInBitsEvE9SizeTable, i64 0, i64 %288 - %.sroa.0.0.copyload.i.i.i.i.i = load i64, ptr %289, align 16 - %.sroa.2.0..sroa_idx.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %289, i64 8 + br i1 %.not.i.i8.i.i, label %288, label %284 + +284: ; preds = %_ZNK4llvm3EVTeqES0_.exit.thread11.i.i + %285 = zext i16 %.sroa.01.0.copyload.i.i to i64 + %286 = add nsw i64 %285, -1 + %287 = getelementptr inbounds [241 x %"class.llvm::TypeSize"], ptr @_ZZNK4llvm3MVT13getSizeInBitsEvE9SizeTable, i64 0, i64 %286 + %.sroa.0.0.copyload.i.i.i.i.i = load i64, ptr %287, align 16 + %.sroa.2.0..sroa_idx.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %287, i64 8 %.sroa.2.0.copyload.i.i.i.i.i = load i8, ptr %.sroa.2.0..sroa_idx.i.i.i.i.i, align 8 %.fca.0.insert.i.i.i.i.i = insertvalue { i64, i8 } poison, i64 %.sroa.0.0.copyload.i.i.i.i.i, 0 %.fca.1.insert.i.i.i.i.i = insertvalue { i64, i8 } %.fca.0.insert.i.i.i.i.i, i8 %.sroa.2.0.copyload.i.i.i.i.i, 1 br label %_ZNK4llvm3EVT13getSizeInBitsEv.exit.i.i.i -290: ; preds = %_ZNK4llvm3EVTeqES0_.exit.thread11.i.i - %291 = call { i64, i8 } @_ZNK4llvm3EVT21getExtendedSizeInBitsEv(ptr noundef nonnull align 8 dereferenceable(16) %4) #28 +288: ; preds = %_ZNK4llvm3EVTeqES0_.exit.thread11.i.i + %289 = call { i64, i8 } @_ZNK4llvm3EVT21getExtendedSizeInBitsEv(ptr noundef nonnull align 8 dereferenceable(16) %4) #28 br label %_ZNK4llvm3EVT13getSizeInBitsEv.exit.i.i.i -_ZNK4llvm3EVT13getSizeInBitsEv.exit.i.i.i: ; preds = %290, %286 - %.pn.i.i.i.i = phi { i64, i8 } [ %.fca.1.insert.i.i.i.i.i, %286 ], [ %291, %290 ] +_ZNK4llvm3EVT13getSizeInBitsEv.exit.i.i.i: ; preds = %288, %284 + %.pn.i.i.i.i = phi { i64, i8 } [ %.fca.1.insert.i.i.i.i.i, %284 ], [ %289, %288 ] %.fca.0.extract1.i.i.i = extractvalue { i64, i8 } %.pn.i.i.i.i, 0 %.fca.1.extract2.i.i.i = extractvalue { i64, i8 } %.pn.i.i.i.i, 1 %.not.i5.i.i.i = icmp eq i16 %.sroa.046.0.i, 0 - br i1 %.not.i5.i.i.i, label %295, label %292 + br i1 %.not.i5.i.i.i, label %293, label %290 -292: ; preds = %_ZNK4llvm3EVT13getSizeInBitsEv.exit.i.i.i - %293 = add nsw i64 %284, -1 - %294 = getelementptr inbounds [241 x %"class.llvm::TypeSize"], ptr @_ZZNK4llvm3MVT13getSizeInBitsEvE9SizeTable, i64 0, i64 %293 - %.sroa.0.0.copyload.i.i6.i.i.i = load i64, ptr %294, align 16 - %.sroa.2.0..sroa_idx.i.i7.i.i.i = getelementptr inbounds nuw i8, ptr %294, i64 8 +290: ; preds = %_ZNK4llvm3EVT13getSizeInBitsEv.exit.i.i.i + %291 = add nsw i64 %282, -1 + %292 = getelementptr inbounds [241 x %"class.llvm::TypeSize"], ptr @_ZZNK4llvm3MVT13getSizeInBitsEvE9SizeTable, i64 0, i64 %291 + %.sroa.0.0.copyload.i.i6.i.i.i = load i64, ptr %292, align 16 + %.sroa.2.0..sroa_idx.i.i7.i.i.i = getelementptr inbounds nuw i8, ptr %292, i64 8 %.sroa.2.0.copyload.i.i8.i.i.i = load i8, ptr %.sroa.2.0..sroa_idx.i.i7.i.i.i, align 8 %.fca.0.insert.i.i9.i.i.i = insertvalue { i64, i8 } poison, i64 %.sroa.0.0.copyload.i.i6.i.i.i, 0 %.fca.1.insert.i.i10.i.i.i = insertvalue { i64, i8 } %.fca.0.insert.i.i9.i.i.i, i8 %.sroa.2.0.copyload.i.i8.i.i.i, 1 br label %_ZNK4llvm3EVT13getSizeInBitsEv.exit12.i.i.i -295: ; preds = %_ZNK4llvm3EVT13getSizeInBitsEv.exit.i.i.i - %296 = call { i64, i8 } @_ZNK4llvm3EVT21getExtendedSizeInBitsEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #28 +293: ; preds = %_ZNK4llvm3EVT13getSizeInBitsEv.exit.i.i.i + %294 = call { i64, i8 } @_ZNK4llvm3EVT21getExtendedSizeInBitsEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #28 br label %_ZNK4llvm3EVT13getSizeInBitsEv.exit12.i.i.i -_ZNK4llvm3EVT13getSizeInBitsEv.exit12.i.i.i: ; preds = %295, %292 - %.pn.i11.i.i.i = phi { i64, i8 } [ %.fca.1.insert.i.i10.i.i.i, %292 ], [ %296, %295 ] +_ZNK4llvm3EVT13getSizeInBitsEv.exit12.i.i.i: ; preds = %293, %290 + %.pn.i11.i.i.i = phi { i64, i8 } [ %.fca.1.insert.i.i10.i.i.i, %290 ], [ %294, %293 ] %.fca.0.extract.i.i.i = extractvalue { i64, i8 } %.pn.i11.i.i.i, 0 - %297 = trunc nuw i8 %.fca.1.extract2.i.i.i to i1 - br i1 %297, label %298, label %_ZNK4llvm3EVT6bitsLTES0_.exit.i + %295 = trunc nuw i8 %.fca.1.extract2.i.i.i to i1 + br i1 %295, label %296, label %_ZNK4llvm3EVT6bitsLTES0_.exit.i -298: ; preds = %_ZNK4llvm3EVT13getSizeInBitsEv.exit12.i.i.i +296: ; preds = %_ZNK4llvm3EVT13getSizeInBitsEv.exit12.i.i.i %.fca.1.extract.i.i.i = extractvalue { i64, i8 } %.pn.i11.i.i.i, 1 - %299 = trunc nuw i8 %.fca.1.extract.i.i.i to i1 - br i1 %299, label %_ZNK4llvm3EVT6bitsLTES0_.exit.i, label %_ZNK4llvm3EVT6bitsLTES0_.exit.thread82.i + %297 = trunc nuw i8 %.fca.1.extract.i.i.i to i1 + br i1 %297, label %_ZNK4llvm3EVT6bitsLTES0_.exit.i, label %_ZNK4llvm3EVT6bitsLTES0_.exit.thread82.i -_ZNK4llvm3EVT6bitsLTES0_.exit.thread82.i: ; preds = %298 +_ZNK4llvm3EVT6bitsLTES0_.exit.thread82.i: ; preds = %296 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #27 br label %_ZL25getVectorTypeBreakdownMVTN4llvm3MVTERS0_RjS1_PNS_18TargetLoweringBaseE.exit -_ZNK4llvm3EVT6bitsLTES0_.exit.i: ; preds = %298, %_ZNK4llvm3EVT13getSizeInBitsEv.exit12.i.i.i - %300 = icmp ult i64 %.fca.0.extract1.i.i.i, %.fca.0.extract.i.i.i +_ZNK4llvm3EVT6bitsLTES0_.exit.i: ; preds = %296, %_ZNK4llvm3EVT13getSizeInBitsEv.exit12.i.i.i + %298 = icmp ult i64 %.fca.0.extract1.i.i.i, %.fca.0.extract.i.i.i call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #27 - br i1 %300, label %301, label %_ZL25getVectorTypeBreakdownMVTN4llvm3MVTERS0_RjS1_PNS_18TargetLoweringBaseE.exit - -301: ; preds = %_ZNK4llvm3EVT6bitsLTES0_.exit.i - %302 = add i16 %.sroa.01.0.copyload.i.i, -17 - %spec.select.i.i.i39.i = icmp ult i16 %302, 174 - br i1 %spec.select.i.i.i39.i, label %303, label %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit42.i - -303: ; preds = %301 - %304 = zext nneg i16 %.sroa.01.0.copyload.i.i to i64 - %305 = add nsw i64 %304, -1 - %306 = getelementptr inbounds [241 x i16], ptr @_ZZNK4llvm3MVT20getVectorElementTypeEvE10EltTyTable, i64 0, i64 %305 - %307 = load i16, ptr %306, align 2, !tbaa !138 + br i1 %298, label %299, label %_ZL25getVectorTypeBreakdownMVTN4llvm3MVTERS0_RjS1_PNS_18TargetLoweringBaseE.exit + +299: ; preds = %_ZNK4llvm3EVT6bitsLTES0_.exit.i + %300 = add i16 %.sroa.01.0.copyload.i.i, -17 + %spec.select.i.i.i39.i = icmp ult i16 %300, 174 + br i1 %spec.select.i.i.i39.i, label %301, label %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit42.i + +301: ; preds = %299 + %302 = zext nneg i16 %.sroa.01.0.copyload.i.i to i64 + %303 = add nsw i64 %302, -1 + %304 = getelementptr inbounds [241 x i16], ptr @_ZZNK4llvm3MVT20getVectorElementTypeEvE10EltTyTable, i64 0, i64 %303 + %305 = load i16, ptr %304, align 2, !tbaa !138 br label %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit42.i -_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit42.i: ; preds = %303, %301 - %.sroa.0.0.i.i40.i = phi i16 [ %307, %303 ], [ %.sroa.01.0.copyload.i.i, %301 ] - %308 = zext i16 %.sroa.0.0.i.i40.i to i64 - %309 = add nsw i64 %308, -1 - %310 = getelementptr inbounds [241 x %"class.llvm::TypeSize"], ptr @_ZZNK4llvm3MVT13getSizeInBitsEvE9SizeTable, i64 0, i64 %309 - %.sroa.0.0.copyload.i.i41.i = load i64, ptr %310, align 16 - %311 = udiv i64 %.0.i.i, %.sroa.0.0.copyload.i.i41.i - %312 = trunc i64 %311 to i16 - %313 = mul i16 %.1.lcssa.i, %312 +_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit42.i: ; preds = %301, %299 + %.sroa.0.0.i.i40.i = phi i16 [ %305, %301 ], [ %.sroa.01.0.copyload.i.i, %299 ] + %306 = zext i16 %.sroa.0.0.i.i40.i to i64 + %307 = add nsw i64 %306, -1 + %308 = getelementptr inbounds [241 x %"class.llvm::TypeSize"], ptr @_ZZNK4llvm3MVT13getSizeInBitsEvE9SizeTable, i64 0, i64 %307 + %.sroa.0.0.copyload.i.i41.i = load i64, ptr %308, align 16 + %309 = udiv i64 %.0.i.i, %.sroa.0.0.copyload.i.i41.i + %310 = trunc i64 %309 to i16 + %311 = mul i16 %.1.lcssa.i, %310 br label %_ZL25getVectorTypeBreakdownMVTN4llvm3MVTERS0_RjS1_PNS_18TargetLoweringBaseE.exit _ZL25getVectorTypeBreakdownMVTN4llvm3MVTERS0_RjS1_PNS_18TargetLoweringBaseE.exit: ; preds = %_ZNK4llvm3EVT6bitsLTES0_.exit.thread.i, %_ZNK4llvm3EVT6bitsLTES0_.exit.thread82.i, %_ZNK4llvm3EVT6bitsLTES0_.exit.i, %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit42.i - %.0.i = phi i16 [ %313, %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit42.i ], [ %.1.lcssa.i, %_ZNK4llvm3EVT6bitsLTES0_.exit.i ], [ %.1.lcssa.i, %_ZNK4llvm3EVT6bitsLTES0_.exit.thread.i ], [ %.1.lcssa.i, %_ZNK4llvm3EVT6bitsLTES0_.exit.thread82.i ] - %314 = getelementptr inbounds nuw [234 x i16], ptr %5, i64 0, i64 %indvars.iv354 - store i16 %.0.i, ptr %314, align 2, !tbaa !137 - %315 = getelementptr inbounds nuw [234 x %"class.llvm::MVT"], ptr %7, i64 0, i64 %indvars.iv354 - store i16 %.sroa.01.0.copyload.i.i, ptr %315, align 2, !tbaa !138 - %316 = call range(i16 0, 17) i16 @llvm.ctpop.i16(i16 %165) - %.not.i.i151 = icmp samesign ult i16 %316, 2 - br i1 %.not.i.i151, label %_ZNK4llvm3MVT17getPow2VectorTypeEv.exit156.thread, label %317 - -317: ; preds = %_ZL25getVectorTypeBreakdownMVTN4llvm3MVTERS0_RjS1_PNS_18TargetLoweringBaseE.exit - %318 = add nsw i32 %.sroa.052.sroa.0.0.extract.trunc.i, -1 - %319 = call noundef range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %318, i1 false) - %320 = sub nuw nsw i32 32, %319 - %321 = shl nuw nsw i32 1, %320 - br i1 %spec.select.i.i.i149, label %324, label %322 - -322: ; preds = %317 - %323 = call i16 @_ZN4llvm3MVT19getScalableVectorVTES0_j(i16 %163, i32 noundef %321) + %.0.i = phi i16 [ %311, %_ZNK4llvm3MVT19getScalarSizeInBitsEv.exit42.i ], [ %.1.lcssa.i, %_ZNK4llvm3EVT6bitsLTES0_.exit.i ], [ %.1.lcssa.i, %_ZNK4llvm3EVT6bitsLTES0_.exit.thread.i ], [ %.1.lcssa.i, %_ZNK4llvm3EVT6bitsLTES0_.exit.thread82.i ] + %312 = getelementptr inbounds nuw [234 x i16], ptr %5, i64 0, i64 %indvars.iv354 + store i16 %.0.i, ptr %312, align 2, !tbaa !137 + %313 = getelementptr inbounds nuw [234 x %"class.llvm::MVT"], ptr %7, i64 0, i64 %indvars.iv354 + store i16 %.sroa.01.0.copyload.i.i, ptr %313, align 2, !tbaa !138 + %314 = call range(i16 0, 17) i16 @llvm.ctpop.i16(i16 %165) + %.not.i.i151 = icmp samesign ult i16 %314, 2 + br i1 %.not.i.i151, label %_ZNK4llvm3MVT17getPow2VectorTypeEv.exit156.thread, label %315 + +315: ; preds = %_ZL25getVectorTypeBreakdownMVTN4llvm3MVTERS0_RjS1_PNS_18TargetLoweringBaseE.exit + %316 = add nsw i32 %.sroa.052.sroa.0.0.extract.trunc.i, -1 + %317 = call noundef range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %316, i1 false) + %318 = sub nuw nsw i32 32, %317 + %319 = shl nuw nsw i32 1, %318 + br i1 %spec.select.i.i.i149, label %322, label %320 + +320: ; preds = %315 + %321 = call i16 @_ZN4llvm3MVT19getScalableVectorVTES0_j(i16 %163, i32 noundef %319) br label %_ZNK4llvm3MVT17getPow2VectorTypeEv.exit156 -324: ; preds = %317 - %325 = call i16 @_ZN4llvm3MVT11getVectorVTES0_j(i16 %163, i32 noundef %321) +322: ; preds = %315 + %323 = call i16 @_ZN4llvm3MVT11getVectorVTES0_j(i16 %163, i32 noundef %319) br label %_ZNK4llvm3MVT17getPow2VectorTypeEv.exit156 -_ZNK4llvm3MVT17getPow2VectorTypeEv.exit156: ; preds = %322, %324 - %.sroa.03.0.i155 = phi i16 [ %323, %322 ], [ %325, %324 ] - %326 = icmp eq i16 %.sroa.03.0.i155, %157 - br i1 %326, label %_ZNK4llvm3MVT17getPow2VectorTypeEv.exit156.thread, label %339 +_ZNK4llvm3MVT17getPow2VectorTypeEv.exit156: ; preds = %320, %322 + %.sroa.03.0.i155 = phi i16 [ %321, %320 ], [ %323, %322 ] + %324 = icmp eq i16 %.sroa.03.0.i155, %157 + br i1 %324, label %_ZNK4llvm3MVT17getPow2VectorTypeEv.exit156.thread, label %339 _ZNK4llvm3MVT17getPow2VectorTypeEv.exit156.thread: ; preds = %_ZL25getVectorTypeBreakdownMVTN4llvm3MVTERS0_RjS1_PNS_18TargetLoweringBaseE.exit, %_ZNK4llvm3MVT17getPow2VectorTypeEv.exit156 - %327 = getelementptr inbounds nuw [234 x %"class.llvm::MVT"], ptr %6, i64 0, i64 %indvars.iv354 - store i16 1, ptr %327, align 2, !tbaa !138 + %325 = getelementptr inbounds nuw [234 x %"class.llvm::MVT"], ptr %6, i64 0, i64 %indvars.iv354 + store i16 1, ptr %325, align 2, !tbaa !138 switch i8 %170, label %332 [ i8 5, label %328 i8 6, label %330 @@ -6578,14 +6578,14 @@ _ZNK4llvm3MVT17getPow2VectorTypeEv.exit156.thread: ; preds = %_ZL25getVectorType 328: ; preds = %_ZNK4llvm3MVT17getPow2VectorTypeEv.exit156.thread %329 = getelementptr inbounds nuw [234 x i8], ptr %152, i64 0, i64 %indvars.iv354 store i8 5, ptr %329, align 1, !tbaa !84 - br label %343 + br label %341 330: ; preds = %_ZNK4llvm3MVT17getPow2VectorTypeEv.exit156.thread %331 = getelementptr inbounds nuw [234 x i8], ptr %152, i64 0, i64 %indvars.iv354 store i8 6, ptr %331, align 1, !tbaa !84 br label %343 -332: ; preds = %_ZNK4llvm3MVT17getPow2VectorTypeEv.exit156.thread +332: ; preds = %_ZNK4llvm3MVT17getPow2VectorTypeEv.exit156.thread %333 = icmp ugt i16 %165, 1 br i1 %333, label %334, label %336 @@ -6600,7 +6600,7 @@ _ZNK4llvm3MVT17getPow2VectorTypeEv.exit156.thread: ; preds = %_ZL25getVectorType store i8 %337, ptr %338, align 1, !tbaa !84 br label %343 -339: ; preds = %_ZNK4llvm3MVT17getPow2VectorTypeEv.exit156 +339:; preds = %_ZNK4llvm3MVT17getPow2VectorTypeEv.exit156 %340 = getelementptr inbounds nuw [234 x %"class.llvm::MVT"], ptr %6, i64 0, i64 %indvars.iv354 store i16 %.sroa.03.0.i155, ptr %340, align 2, !tbaa !138 %341 = getelementptr inbounds nuw [234 x i8], ptr %152, i64 0, i64 %indvars.iv354 @@ -6610,31 +6610,31 @@ _ZNK4llvm3MVT17getPow2VectorTypeEv.exit156.thread: ; preds = %_ZL25getVectorType 342: ; preds = %160 unreachable -343: ; preds = %.thread260, %.thread264, %234, %328, %334, %336, %330, %339, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit130 +341: ; preds = %.thread260, %.thread264, %232, %328, %334, %336, %330, %339, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit130 %indvars.iv.next355 = add nuw nsw i64 %indvars.iv354, 1 %indvars.iv.next347 = add nuw nsw i64 %indvars.iv346, 1 %exitcond363.not = icmp eq i64 %indvars.iv.next355, 191 br i1 %exitcond363.not, label %.preheader, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit130, !llvm.loop !395 -344: ; preds = %345 +342: ; preds = %343 ret void -345: ; preds = %.preheader, %345 - %indvars.iv364 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next365, %345 ] - %346 = trunc i64 %indvars.iv364 to i16 - %347 = load ptr, ptr %0, align 8, !tbaa !3 - %348 = getelementptr inbounds nuw i8, ptr %347, i64 1264 - %349 = load ptr, ptr %348, align 8 - %350 = call { ptr, i8 } %349(ptr noundef nonnull align 8 dereferenceable(412423) %0, ptr noundef %1, i16 %346) #27 - %.fca.0.extract = extractvalue { ptr, i8 } %350, 0 - %.fca.1.extract = extractvalue { ptr, i8 } %350, 1 - %351 = getelementptr inbounds nuw [234 x ptr], ptr %155, i64 0, i64 %indvars.iv364 - store ptr %.fca.0.extract, ptr %351, align 8, !tbaa !134 - %352 = getelementptr inbounds nuw [234 x i8], ptr %156, i64 0, i64 %indvars.iv364 - store i8 %.fca.1.extract, ptr %352, align 1, !tbaa !136 +343: ; preds = %.preheader, %343 + %indvars.iv364 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next365, %343 ] + %344 = trunc i64 %indvars.iv364 to i16 + %345 = load ptr, ptr %0, align 8, !tbaa !3 + %346 = getelementptr inbounds nuw i8, ptr %345, i64 1264 + %347 = load ptr, ptr %346, align 8 + %348 = call { ptr, i8 } %349(ptr noundef nonnull align 8 dereferenceable(412423) %0, ptr noundef %1, i16 %344) #27 + %.fca.0.extract = extractvalue { ptr, i8 } %348, 0 + %.fca.1.extract = extractvalue { ptr, i8 } %348, 1 + %349 = getelementptr inbounds nuw [234 x ptr], ptr %155, i64 0, i64 %indvars.iv364 + store ptr %.fca.0.extract, ptr %349, align 8, !tbaa !134 + %350 = getelementptr inbounds nuw [234 x i8], ptr %156, i64 0, i64 %indvars.iv364 + store i8 %.fca.1.extract, ptr %350, align 1, !tbaa !136 %indvars.iv.next365 = add nuw nsw i64 %indvars.iv364, 1 %.not109 = icmp eq i64 %indvars.iv.next365, 234 - br i1 %.not109, label %344, label %345, !llvm.loop !396 + br i1 %.not109, label %342, label %343, !llvm.loop !396 } ; Function Attrs: mustprogress nounwind uwtable diff --git a/bench/luajit/optimized/minilua.ll b/bench/luajit/optimized/minilua.ll index 8eeab66a723..b0cf9b0b447 100644 --- a/bench/luajit/optimized/minilua.ll +++ b/bench/luajit/optimized/minilua.ll @@ -35169,9 +35169,9 @@ sw.default.i.i: ; preds = %if.else9.i.i %69 = load ptr, ptr %68, align 8 %70 = add nsw i64 %indvars.iv, -10001 %nupvalues.i.i = getelementptr inbounds nuw i8, ptr %69, i64 11 - %71 = load i8, ptr %nupvalues.i.i, align 1 - %72 = zext i8 %71 to i64 - %cmp21.not.i.i = icmp samesign ugt i64 %70, %72 + %70 = load i8, ptr %nupvalues.i.i, align 1 + %conv.i.i145 = zext i8 %70 to i64 + %71 = icmp samesign ugt i64 %70, %conv.i.i145 %upvalue.i.i = getelementptr inbounds nuw i8, ptr %69, i64 40 %73 = add nsw i64 %indvars.iv, -10002 %arrayidx.i.i = getelementptr inbounds nuw [1 x %struct.lua_TValue], ptr %upvalue.i.i, i64 0, i64 %73 @@ -43371,9 +43371,9 @@ sw.default.i.i: ; preds = %if.else9.i.i %50 = load ptr, ptr %49, align 8 %51 = add nsw i64 %indvars.iv, -10001 %nupvalues.i.i = getelementptr inbounds nuw i8, ptr %50, i64 11 - %52 = load i8, ptr %nupvalues.i.i, align 1 - %53 = zext i8 %52 to i64 - %cmp21.not.i.i = icmp samesign ugt i64 %51, %53 + %51 = load i8, ptr %nupvalues.i.i, align 1 + %conv.i.i53 = zext i8 %51 to i64 + %52 = icmp samesign ugt i64 %51, %conv.i.i53 %upvalue.i.i = getelementptr inbounds nuw i8, ptr %50, i64 40 %54 = add nsw i64 %indvars.iv, -10002 %arrayidx.i.i = getelementptr inbounds nuw [1 x %struct.lua_TValue], ptr %upvalue.i.i, i64 0, i64 %54 diff --git a/bench/miniaudio/optimized/unity.ll b/bench/miniaudio/optimized/unity.ll index 5fab35de64f..faf42fd5424 100644 --- a/bench/miniaudio/optimized/unity.ll +++ b/bench/miniaudio/optimized/unity.ll @@ -107501,43 +107501,43 @@ for.end: ; preds = %ma_dr_mp3d_DCT_II.e for.body3: ; preds = %for.end, %ma_dr_mp3d_synth.exit %indvars.iv45 = phi i64 [ 0, %for.end ], [ %indvars.iv.next46, %ma_dr_mp3d_synth.exit ] %add.ptr5 = getelementptr inbounds nuw float, ptr %grbuf, i64 %indvars.iv45 - %46 = mul nsw i64 %indvars.iv45, %idx.ext23.i - %add.ptr9 = getelementptr inbounds i16, ptr %pcm, i64 %46 + %45 = mul nsw i64 %indvars.iv45, %idx.ext23.i + %add.ptr9 = getelementptr inbounds i16, ptr %pcm, i64 %45 %add.ptr12.idx = shl nsw i64 %indvars.iv45, 8 %add.ptr12 = getelementptr inbounds nuw i8, ptr %lins, i64 %add.ptr12.idx %add.ptr.i24 = getelementptr inbounds float, ptr %add.ptr5, i64 %idx.ext.i %add.ptr3.i = getelementptr inbounds i16, ptr %add.ptr9, i64 %idx.ext2.i %add.ptr4.i = getelementptr inbounds nuw i8, ptr %add.ptr12, i64 3840 %arrayidx.i = getelementptr inbounds nuw i8, ptr %add.ptr5, i64 1152 - %47 = load float, ptr %arrayidx.i, align 4 + %46 = load float, ptr %arrayidx.i, align 4 %arrayidx5.i = getelementptr inbounds nuw i8, ptr %add.ptr12, i64 4080 - store float %47, ptr %arrayidx5.i, align 4 + store float %46, ptr %arrayidx5.i, align 4 %arrayidx6.i = getelementptr inbounds nuw i8, ptr %add.ptr.i24, i64 1152 - %48 = load float, ptr %arrayidx6.i, align 4 + %47 = load float, ptr %arrayidx6.i, align 4 %arrayidx7.i = getelementptr inbounds nuw i8, ptr %add.ptr12, i64 4084 - store float %48, ptr %arrayidx7.i, align 4 - %49 = load float, ptr %add.ptr5, align 4 + store float %47, ptr %arrayidx7.i, align 4 + %48 = load float, ptr %add.ptr5, align 4 %arrayidx9.i = getelementptr inbounds nuw i8, ptr %add.ptr12, i64 4088 - store float %49, ptr %arrayidx9.i, align 4 - %50 = load float, ptr %add.ptr.i24, align 4 + store float %48, ptr %arrayidx9.i, align 4 + %49 = load float, ptr %add.ptr.i24, align 4 %arrayidx11.i = getelementptr inbounds nuw i8, ptr %add.ptr12, i64 4092 - store float %50, ptr %arrayidx11.i, align 4 + store float %49, ptr %arrayidx11.i, align 4 %arrayidx12.i25 = getelementptr inbounds nuw i8, ptr %add.ptr5, i64 1156 - %51 = load float, ptr %arrayidx12.i25, align 4 + %50 = load float, ptr %arrayidx12.i25, align 4 %arrayidx13.i = getelementptr inbounds nuw i8, ptr %add.ptr12, i64 4336 - store float %51, ptr %arrayidx13.i, align 4 + store float %50, ptr %arrayidx13.i, align 4 %arrayidx14.i = getelementptr inbounds nuw i8, ptr %add.ptr.i24, i64 1156 - %52 = load float, ptr %arrayidx14.i, align 4 + %51 = load float, ptr %arrayidx14.i, align 4 %arrayidx15.i = getelementptr inbounds nuw i8, ptr %add.ptr12, i64 4340 - store float %52, ptr %arrayidx15.i, align 4 + store float %51, ptr %arrayidx15.i, align 4 %arrayidx16.i = getelementptr inbounds nuw i8, ptr %add.ptr5, i64 4 - %53 = load float, ptr %arrayidx16.i, align 4 + %52 = load float, ptr %arrayidx16.i, align 4 %arrayidx17.i26 = getelementptr inbounds nuw i8, ptr %add.ptr12, i64 4344 - store float %53, ptr %arrayidx17.i26, align 4 + store float %52, ptr %arrayidx17.i26, align 4 %arrayidx18.i = getelementptr inbounds nuw i8, ptr %add.ptr.i24, i64 4 - %54 = load float, ptr %arrayidx18.i, align 4 + %53 = load float, ptr %arrayidx18.i, align 4 %arrayidx19.i = getelementptr inbounds nuw i8, ptr %add.ptr12, i64 4348 - store float %54, ptr %arrayidx19.i, align 4 + store float %53, ptr %arrayidx19.i, align 4 %add.ptr20.i = getelementptr inbounds nuw i8, ptr %add.ptr12, i64 240 %add.ptr21.i = getelementptr inbounds nuw i8, ptr %add.ptr12, i64 244 tail call fastcc void @ma_dr_mp3d_synth_pair(ptr noundef %add.ptr3.i, i32 noundef %nch, ptr noundef %add.ptr21.i) @@ -107554,244 +107554,244 @@ for.body3: ; preds = %for.end, %ma_dr_mp3 for.body.i27: ; preds = %for.body.i27, %for.body3 %indvars.iv.i28 = phi i64 [ 14, %for.body3 ], [ %indvars.iv.next.i38, %for.body.i27 ] %w.0234.i = phi ptr [ @ma_dr_mp3d_synth.g_win, %for.body3 ], [ %incdec.ptr281.i, %for.body.i27 ] - %55 = sub nuw nsw i64 31, %indvars.iv.i28 - %56 = mul nuw nsw i64 %55, 18 - %arrayidx36.i = getelementptr inbounds nuw float, ptr %add.ptr5, i64 %56 - %57 = load float, ptr %arrayidx36.i, align 4 - %58 = shl nsw i64 %indvars.iv.i28, 2 - %arrayidx39.i = getelementptr inbounds nuw float, ptr %add.ptr4.i, i64 %58 - store float %57, ptr %arrayidx39.i, align 4 - %arrayidx43.i = getelementptr inbounds nuw float, ptr %add.ptr.i24, i64 %56 - %59 = load float, ptr %arrayidx43.i, align 4 - %60 = or disjoint i64 %58, 1 - %arrayidx46.i29 = getelementptr inbounds nuw float, ptr %add.ptr4.i, i64 %60 - store float %59, ptr %arrayidx46.i29, align 4 - %61 = or disjoint i64 %56, 1 - %arrayidx51.i = getelementptr inbounds nuw float, ptr %add.ptr5, i64 %61 - %62 = load float, ptr %arrayidx51.i, align 4 - %63 = or disjoint i64 %58, 2 - %arrayidx55.i = getelementptr inbounds nuw float, ptr %add.ptr4.i, i64 %63 - store float %62, ptr %arrayidx55.i, align 4 - %arrayidx60.i = getelementptr inbounds nuw float, ptr %add.ptr.i24, i64 %61 - %64 = load float, ptr %arrayidx60.i, align 4 - %65 = or disjoint i64 %58, 3 - %arrayidx64.i = getelementptr inbounds nuw float, ptr %add.ptr4.i, i64 %65 - store float %64, ptr %arrayidx64.i, align 4 - %66 = mul nuw nsw i64 %indvars.iv.i28, 18 - %67 = add nuw nsw i64 %66, 18 - %68 = add nuw nsw i64 %66, 19 - %arrayidx69.i30 = getelementptr inbounds nuw float, ptr %add.ptr5, i64 %68 - %69 = load float, ptr %arrayidx69.i30, align 4 - %gep.i = getelementptr inbounds nuw float, ptr %invariant.gep.i, i64 %58 - store float %69, ptr %gep.i, align 4 - %arrayidx78.i = getelementptr inbounds nuw float, ptr %add.ptr.i24, i64 %68 - %70 = load float, ptr %arrayidx78.i, align 4 + %54 = sub nuw nsw i64 31, %indvars.iv.i28 + %55 = mul nuw nsw i64 %54, 18 + %arrayidx36.i = getelementptr inbounds nuw float, ptr %add.ptr5, i64 %55 + %56 = load float, ptr %arrayidx36.i, align 4 + %57 = shl nsw i64 %indvars.iv.i28, 2 + %arrayidx39.i = getelementptr inbounds nuw float, ptr %add.ptr4.i, i64 %57 + store float %56, ptr %arrayidx39.i, align 4 + %arrayidx43.i = getelementptr inbounds nuw float, ptr %add.ptr.i24, i64 %55 + %58 = load float, ptr %arrayidx43.i, align 4 + %59 = or disjoint i64 %57, 1 + %arrayidx46.i29 = getelementptr inbounds nuw float, ptr %add.ptr4.i, i64 %59 + store float %58, ptr %arrayidx46.i29, align 4 + %60 = or disjoint i64 %55, 1 + %arrayidx51.i = getelementptr inbounds nuw float, ptr %add.ptr5, i64 %60 + %61 = load float, ptr %arrayidx51.i, align 4 + %62 = or disjoint i64 %57, 2 + %arrayidx55.i = getelementptr inbounds nuw float, ptr %add.ptr4.i, i64 %62 + store float %61, ptr %arrayidx55.i, align 4 + %arrayidx60.i = getelementptr inbounds nuw float, ptr %add.ptr.i24, i64 %60 + %63 = load float, ptr %arrayidx60.i, align 4 + %64 = or disjoint i64 %57, 3 + %arrayidx64.i = getelementptr inbounds nuw float, ptr %add.ptr4.i, i64 %64 + store float %63, ptr %arrayidx64.i, align 4 + %65 = mul nuw nsw i64 %indvars.iv.i28, 18 + %66 = add nuw nsw i64 %65, 18 + %67 = add nuw nsw i64 %65, 19 + %arrayidx69.i30 = getelementptr inbounds nuw float, ptr %add.ptr5, i64 %67 + %68 = load float, ptr %arrayidx69.i30, align 4 + %gep.i = getelementptr inbounds nuw float, ptr %invariant.gep.i, i64 %57 + store float %68, ptr %gep.i, align 4 + %arrayidx78.i = getelementptr inbounds nuw float, ptr %add.ptr.i24, i64 %67 + %69 = load float, ptr %arrayidx78.i, align 4 %arrayidx83.i = getelementptr inbounds nuw i8, ptr %arrayidx39.i, i64 260 - store float %70, ptr %arrayidx83.i, align 4 - %arrayidx87.i = getelementptr inbounds nuw float, ptr %add.ptr5, i64 %67 - %71 = load float, ptr %arrayidx87.i, align 4 + store float %69, ptr %arrayidx83.i, align 4 + %arrayidx87.i = getelementptr inbounds nuw float, ptr %add.ptr5, i64 %66 + %70 = load float, ptr %arrayidx87.i, align 4 %arrayidx92.i = getelementptr i8, ptr %arrayidx39.i, i64 -248 - store float %71, ptr %arrayidx92.i, align 4 - %arrayidx96.i = getelementptr inbounds nuw float, ptr %add.ptr.i24, i64 %67 - %72 = load float, ptr %arrayidx96.i, align 4 + store float %70, ptr %arrayidx92.i, align 4 + %arrayidx96.i = getelementptr inbounds nuw float, ptr %add.ptr.i24, i64 %66 + %71 = load float, ptr %arrayidx96.i, align 4 %arrayidx101.i = getelementptr i8, ptr %arrayidx39.i, i64 -244 - store float %72, ptr %arrayidx101.i, align 4 + store float %71, ptr %arrayidx101.i, align 4 %incdec.ptr.i31 = getelementptr inbounds nuw i8, ptr %w.0234.i, i64 4 - %73 = load float, ptr %w.0234.i, align 4 - %vecinit.i443.i = insertelement <4 x float> poison, float %73, i64 0 + %72 = load float, ptr %w.0234.i, align 4 + %vecinit.i443.i = insertelement <4 x float> poison, float %72, i64 0 %vecinit3.i446.i = shufflevector <4 x float> %vecinit.i443.i, <4 x float> poison, <4 x i32> zeroinitializer %incdec.ptr103.i = getelementptr inbounds nuw i8, ptr %w.0234.i, i64 8 - %74 = load float, ptr %incdec.ptr.i31, align 4 - %vecinit.i437.i = insertelement <4 x float> poison, float %74, i64 0 + %73 = load float, ptr %incdec.ptr.i31, align 4 + %vecinit.i437.i = insertelement <4 x float> poison, float %73, i64 0 %vecinit3.i440.i = shufflevector <4 x float> %vecinit.i437.i, <4 x float> poison, <4 x i32> zeroinitializer - %75 = load <4 x float>, ptr %arrayidx39.i, align 1 + %74 = load <4 x float>, ptr %arrayidx39.i, align 1 %arrayidx113.i = getelementptr i8, ptr %arrayidx39.i, i64 -3840 - %76 = load <4 x float>, ptr %arrayidx113.i, align 1 - %mul.i539.i = fmul <4 x float> %75, %vecinit3.i440.i - %mul.i536.i = fmul <4 x float> %vecinit3.i446.i, %76 + %75 = load <4 x float>, ptr %arrayidx113.i, align 1 + %mul.i539.i = fmul <4 x float> %74, %vecinit3.i440.i + %mul.i536.i = fmul <4 x float> %vecinit3.i446.i, %75 %add.i631.i = fadd <4 x float> %mul.i539.i, %mul.i536.i - %mul.i533.i = fmul <4 x float> %75, %vecinit3.i446.i - %mul.i530.i = fmul <4 x float> %76, %vecinit3.i440.i + %mul.i533.i = fmul <4 x float> %74, %vecinit3.i446.i + %mul.i530.i = fmul <4 x float> %75, %vecinit3.i440.i %sub.i654.i = fsub <4 x float> %mul.i533.i, %mul.i530.i %incdec.ptr122.i = getelementptr inbounds nuw i8, ptr %w.0234.i, i64 12 - %77 = load float, ptr %incdec.ptr103.i, align 4 - %vecinit.i431.i = insertelement <4 x float> poison, float %77, i64 0 + %76 = load float, ptr %incdec.ptr103.i, align 4 + %vecinit.i431.i = insertelement <4 x float> poison, float %76, i64 0 %vecinit3.i434.i = shufflevector <4 x float> %vecinit.i431.i, <4 x float> poison, <4 x i32> zeroinitializer %incdec.ptr125.i = getelementptr inbounds nuw i8, ptr %w.0234.i, i64 16 - %78 = load float, ptr %incdec.ptr122.i, align 4 - %vecinit.i425.i = insertelement <4 x float> poison, float %78, i64 0 + %77 = load float, ptr %incdec.ptr122.i, align 4 + %vecinit.i425.i = insertelement <4 x float> poison, float %77, i64 0 %vecinit3.i428.i = shufflevector <4 x float> %vecinit.i425.i, <4 x float> poison, <4 x i32> zeroinitializer %arrayidx131.i = getelementptr i8, ptr %arrayidx39.i, i64 -256 - %79 = load <4 x float>, ptr %arrayidx131.i, align 1 + %78 = load <4 x float>, ptr %arrayidx131.i, align 1 %arrayidx137.i = getelementptr i8, ptr %arrayidx39.i, i64 -3584 - %80 = load <4 x float>, ptr %arrayidx137.i, align 1 - %mul.i527.i = fmul <4 x float> %79, %vecinit3.i428.i - %mul.i524.i = fmul <4 x float> %vecinit3.i434.i, %80 + %79 = load <4 x float>, ptr %arrayidx137.i, align 1 + %mul.i527.i = fmul <4 x float> %78, %vecinit3.i428.i + %mul.i524.i = fmul <4 x float> %vecinit3.i434.i, %79 %add.i628.i = fadd <4 x float> %mul.i527.i, %mul.i524.i %add.i625.i = fadd <4 x float> %add.i631.i, %add.i628.i - %mul.i521.i = fmul <4 x float> %80, %vecinit3.i428.i - %mul.i518.i = fmul <4 x float> %79, %vecinit3.i434.i + %mul.i521.i = fmul <4 x float> %79, %vecinit3.i428.i + %mul.i518.i = fmul <4 x float> %78, %vecinit3.i434.i %sub.i651.i = fsub <4 x float> %mul.i521.i, %mul.i518.i %add.i622.i = fadd <4 x float> %sub.i654.i, %sub.i651.i %incdec.ptr148.i = getelementptr inbounds nuw i8, ptr %w.0234.i, i64 20 - %81 = load float, ptr %incdec.ptr125.i, align 4 - %vecinit.i419.i = insertelement <4 x float> poison, float %81, i64 0 + %80 = load float, ptr %incdec.ptr125.i, align 4 + %vecinit.i419.i = insertelement <4 x float> poison, float %80, i64 0 %vecinit3.i422.i = shufflevector <4 x float> %vecinit.i419.i, <4 x float> poison, <4 x i32> zeroinitializer %incdec.ptr151.i = getelementptr inbounds nuw i8, ptr %w.0234.i, i64 24 - %82 = load float, ptr %incdec.ptr148.i, align 4 - %vecinit.i413.i = insertelement <4 x float> poison, float %82, i64 0 + %81 = load float, ptr %incdec.ptr148.i, align 4 + %vecinit.i413.i = insertelement <4 x float> poison, float %81, i64 0 %vecinit3.i416.i = shufflevector <4 x float> %vecinit.i413.i, <4 x float> poison, <4 x i32> zeroinitializer %arrayidx157.i = getelementptr i8, ptr %arrayidx39.i, i64 -512 - %83 = load <4 x float>, ptr %arrayidx157.i, align 1 + %82 = load <4 x float>, ptr %arrayidx157.i, align 1 %arrayidx163.i = getelementptr i8, ptr %arrayidx39.i, i64 -3328 - %84 = load <4 x float>, ptr %arrayidx163.i, align 1 - %mul.i515.i = fmul <4 x float> %83, %vecinit3.i416.i - %mul.i512.i = fmul <4 x float> %vecinit3.i422.i, %84 + %83 = load <4 x float>, ptr %arrayidx163.i, align 1 + %mul.i515.i = fmul <4 x float> %82, %vecinit3.i416.i + %mul.i512.i = fmul <4 x float> %vecinit3.i422.i, %83 %add.i619.i = fadd <4 x float> %mul.i515.i, %mul.i512.i %add.i616.i = fadd <4 x float> %add.i625.i, %add.i619.i - %mul.i509.i = fmul <4 x float> %83, %vecinit3.i422.i - %mul.i506.i = fmul <4 x float> %84, %vecinit3.i416.i + %mul.i509.i = fmul <4 x float> %82, %vecinit3.i422.i + %mul.i506.i = fmul <4 x float> %83, %vecinit3.i416.i %sub.i648.i = fsub <4 x float> %mul.i509.i, %mul.i506.i %add.i613.i = fadd <4 x float> %add.i622.i, %sub.i648.i %incdec.ptr174.i = getelementptr inbounds nuw i8, ptr %w.0234.i, i64 28 - %85 = load float, ptr %incdec.ptr151.i, align 4 - %vecinit.i407.i = insertelement <4 x float> poison, float %85, i64 0 + %84 = load float, ptr %incdec.ptr151.i, align 4 + %vecinit.i407.i = insertelement <4 x float> poison, float %84, i64 0 %vecinit3.i410.i = shufflevector <4 x float> %vecinit.i407.i, <4 x float> poison, <4 x i32> zeroinitializer %incdec.ptr177.i = getelementptr inbounds nuw i8, ptr %w.0234.i, i64 32 - %86 = load float, ptr %incdec.ptr174.i, align 4 - %vecinit.i401.i = insertelement <4 x float> poison, float %86, i64 0 + %85 = load float, ptr %incdec.ptr174.i, align 4 + %vecinit.i401.i = insertelement <4 x float> poison, float %85, i64 0 %vecinit3.i404.i = shufflevector <4 x float> %vecinit.i401.i, <4 x float> poison, <4 x i32> zeroinitializer %arrayidx183.i = getelementptr i8, ptr %arrayidx39.i, i64 -768 - %87 = load <4 x float>, ptr %arrayidx183.i, align 1 + %86 = load <4 x float>, ptr %arrayidx183.i, align 1 %arrayidx189.i = getelementptr i8, ptr %arrayidx39.i, i64 -3072 - %88 = load <4 x float>, ptr %arrayidx189.i, align 1 - %mul.i503.i = fmul <4 x float> %87, %vecinit3.i404.i - %mul.i500.i = fmul <4 x float> %vecinit3.i410.i, %88 + %87 = load <4 x float>, ptr %arrayidx189.i, align 1 + %mul.i503.i = fmul <4 x float> %86, %vecinit3.i404.i + %mul.i500.i = fmul <4 x float> %vecinit3.i410.i, %87 %add.i610.i = fadd <4 x float> %mul.i503.i, %mul.i500.i %add.i607.i = fadd <4 x float> %add.i616.i, %add.i610.i - %mul.i497.i = fmul <4 x float> %88, %vecinit3.i404.i - %mul.i494.i = fmul <4 x float> %87, %vecinit3.i410.i + %mul.i497.i = fmul <4 x float> %87, %vecinit3.i404.i + %mul.i494.i = fmul <4 x float> %86, %vecinit3.i410.i %sub.i645.i = fsub <4 x float> %mul.i497.i, %mul.i494.i %add.i604.i = fadd <4 x float> %add.i613.i, %sub.i645.i %incdec.ptr200.i = getelementptr inbounds nuw i8, ptr %w.0234.i, i64 36 - %89 = load float, ptr %incdec.ptr177.i, align 4 - %vecinit.i395.i = insertelement <4 x float> poison, float %89, i64 0 + %88 = load float, ptr %incdec.ptr177.i, align 4 + %vecinit.i395.i = insertelement <4 x float> poison, float %88, i64 0 %vecinit3.i398.i = shufflevector <4 x float> %vecinit.i395.i, <4 x float> poison, <4 x i32> zeroinitializer %incdec.ptr203.i = getelementptr inbounds nuw i8, ptr %w.0234.i, i64 40 - %90 = load float, ptr %incdec.ptr200.i, align 4 - %vecinit.i389.i = insertelement <4 x float> poison, float %90, i64 0 + %89 = load float, ptr %incdec.ptr200.i, align 4 + %vecinit.i389.i = insertelement <4 x float> poison, float %89, i64 0 %vecinit3.i392.i = shufflevector <4 x float> %vecinit.i389.i, <4 x float> poison, <4 x i32> zeroinitializer %arrayidx209.i32 = getelementptr i8, ptr %arrayidx39.i, i64 -1024 - %91 = load <4 x float>, ptr %arrayidx209.i32, align 1 + %90 = load <4 x float>, ptr %arrayidx209.i32, align 1 %arrayidx215.i33 = getelementptr i8, ptr %arrayidx39.i, i64 -2816 - %92 = load <4 x float>, ptr %arrayidx215.i33, align 1 - %mul.i491.i = fmul <4 x float> %91, %vecinit3.i392.i - %mul.i488.i = fmul <4 x float> %vecinit3.i398.i, %92 + %91 = load <4 x float>, ptr %arrayidx215.i33, align 1 + %mul.i491.i = fmul <4 x float> %90, %vecinit3.i392.i + %mul.i488.i = fmul <4 x float> %vecinit3.i398.i, %91 %add.i601.i = fadd <4 x float> %mul.i491.i, %mul.i488.i %add.i598.i = fadd <4 x float> %add.i607.i, %add.i601.i - %mul.i485.i = fmul <4 x float> %91, %vecinit3.i398.i - %mul.i482.i = fmul <4 x float> %92, %vecinit3.i392.i + %mul.i485.i = fmul <4 x float> %90, %vecinit3.i398.i + %mul.i482.i = fmul <4 x float> %91, %vecinit3.i392.i %sub.i642.i = fsub <4 x float> %mul.i485.i, %mul.i482.i %add.i595.i = fadd <4 x float> %add.i604.i, %sub.i642.i %incdec.ptr226.i = getelementptr inbounds nuw i8, ptr %w.0234.i, i64 44 - %93 = load float, ptr %incdec.ptr203.i, align 4 - %vecinit.i383.i = insertelement <4 x float> poison, float %93, i64 0 + %92 = load float, ptr %incdec.ptr203.i, align 4 + %vecinit.i383.i = insertelement <4 x float> poison, float %92, i64 0 %vecinit3.i386.i = shufflevector <4 x float> %vecinit.i383.i, <4 x float> poison, <4 x i32> zeroinitializer %incdec.ptr229.i = getelementptr inbounds nuw i8, ptr %w.0234.i, i64 48 - %94 = load float, ptr %incdec.ptr226.i, align 4 - %vecinit.i377.i = insertelement <4 x float> poison, float %94, i64 0 + %93 = load float, ptr %incdec.ptr226.i, align 4 + %vecinit.i377.i = insertelement <4 x float> poison, float %93, i64 0 %vecinit3.i380.i = shufflevector <4 x float> %vecinit.i377.i, <4 x float> poison, <4 x i32> zeroinitializer %arrayidx235.i = getelementptr i8, ptr %arrayidx39.i, i64 -1280 - %95 = load <4 x float>, ptr %arrayidx235.i, align 1 + %94 = load <4 x float>, ptr %arrayidx235.i, align 1 %arrayidx241.i34 = getelementptr i8, ptr %arrayidx39.i, i64 -2560 - %96 = load <4 x float>, ptr %arrayidx241.i34, align 1 - %mul.i479.i = fmul <4 x float> %95, %vecinit3.i380.i - %mul.i476.i = fmul <4 x float> %vecinit3.i386.i, %96 + %95 = load <4 x float>, ptr %arrayidx241.i34, align 1 + %mul.i479.i = fmul <4 x float> %94, %vecinit3.i380.i + %mul.i476.i = fmul <4 x float> %vecinit3.i386.i, %95 %add.i592.i = fadd <4 x float> %mul.i479.i, %mul.i476.i %add.i589.i = fadd <4 x float> %add.i598.i, %add.i592.i - %mul.i473.i = fmul <4 x float> %96, %vecinit3.i380.i - %mul.i470.i = fmul <4 x float> %95, %vecinit3.i386.i + %mul.i473.i = fmul <4 x float> %95, %vecinit3.i380.i + %mul.i470.i = fmul <4 x float> %94, %vecinit3.i386.i %sub.i639.i = fsub <4 x float> %mul.i473.i, %mul.i470.i %add.i586.i = fadd <4 x float> %add.i595.i, %sub.i639.i %incdec.ptr252.i = getelementptr inbounds nuw i8, ptr %w.0234.i, i64 52 - %97 = load float, ptr %incdec.ptr229.i, align 4 - %vecinit.i371.i = insertelement <4 x float> poison, float %97, i64 0 + %96 = load float, ptr %incdec.ptr229.i, align 4 + %vecinit.i371.i = insertelement <4 x float> poison, float %96, i64 0 %vecinit3.i374.i = shufflevector <4 x float> %vecinit.i371.i, <4 x float> poison, <4 x i32> zeroinitializer %incdec.ptr255.i = getelementptr inbounds nuw i8, ptr %w.0234.i, i64 56 - %98 = load float, ptr %incdec.ptr252.i, align 4 - %vecinit.i365.i = insertelement <4 x float> poison, float %98, i64 0 + %97 = load float, ptr %incdec.ptr252.i, align 4 + %vecinit.i365.i = insertelement <4 x float> poison, float %97, i64 0 %vecinit3.i368.i = shufflevector <4 x float> %vecinit.i365.i, <4 x float> poison, <4 x i32> zeroinitializer %arrayidx261.i = getelementptr i8, ptr %arrayidx39.i, i64 -1536 - %99 = load <4 x float>, ptr %arrayidx261.i, align 1 + %98 = load <4 x float>, ptr %arrayidx261.i, align 1 %arrayidx267.i = getelementptr i8, ptr %arrayidx39.i, i64 -2304 - %100 = load <4 x float>, ptr %arrayidx267.i, align 1 - %mul.i467.i = fmul <4 x float> %99, %vecinit3.i368.i - %mul.i464.i = fmul <4 x float> %vecinit3.i374.i, %100 + %99 = load <4 x float>, ptr %arrayidx267.i, align 1 + %mul.i467.i = fmul <4 x float> %98, %vecinit3.i368.i + %mul.i464.i = fmul <4 x float> %vecinit3.i374.i, %99 %add.i583.i = fadd <4 x float> %mul.i467.i, %mul.i464.i %add.i580.i = fadd <4 x float> %add.i589.i, %add.i583.i - %mul.i461.i = fmul <4 x float> %99, %vecinit3.i374.i - %mul.i458.i = fmul <4 x float> %100, %vecinit3.i368.i + %mul.i461.i = fmul <4 x float> %98, %vecinit3.i374.i + %mul.i458.i = fmul <4 x float> %99, %vecinit3.i368.i %sub.i636.i = fsub <4 x float> %mul.i461.i, %mul.i458.i %add.i577.i = fadd <4 x float> %add.i586.i, %sub.i636.i %incdec.ptr278.i = getelementptr inbounds nuw i8, ptr %w.0234.i, i64 60 - %101 = load float, ptr %incdec.ptr255.i, align 4 - %vecinit.i359.i = insertelement <4 x float> poison, float %101, i64 0 + %100 = load float, ptr %incdec.ptr255.i, align 4 + %vecinit.i359.i = insertelement <4 x float> poison, float %100, i64 0 %vecinit3.i362.i = shufflevector <4 x float> %vecinit.i359.i, <4 x float> poison, <4 x i32> zeroinitializer %incdec.ptr281.i = getelementptr inbounds nuw i8, ptr %w.0234.i, i64 64 - %102 = load float, ptr %incdec.ptr278.i, align 4 - %vecinit.i.i = insertelement <4 x float> poison, float %102, i64 0 + %101 = load float, ptr %incdec.ptr278.i, align 4 + %vecinit.i.i = insertelement <4 x float> poison, float %101, i64 0 %vecinit3.i.i = shufflevector <4 x float> %vecinit.i.i, <4 x float> poison, <4 x i32> zeroinitializer %arrayidx287.i = getelementptr i8, ptr %arrayidx39.i, i64 -1792 - %103 = load <4 x float>, ptr %arrayidx287.i, align 1 + %102 = load <4 x float>, ptr %arrayidx287.i, align 1 %arrayidx293.i = getelementptr i8, ptr %arrayidx39.i, i64 -2048 - %104 = load <4 x float>, ptr %arrayidx293.i, align 1 - %mul.i455.i = fmul <4 x float> %103, %vecinit3.i.i - %mul.i452.i = fmul <4 x float> %vecinit3.i362.i, %104 + %103 = load <4 x float>, ptr %arrayidx293.i, align 1 + %mul.i455.i = fmul <4 x float> %102, %vecinit3.i.i + %mul.i452.i = fmul <4 x float> %vecinit3.i362.i, %103 %add.i574.i = fadd <4 x float> %mul.i455.i, %mul.i452.i %add.i571.i = fadd <4 x float> %add.i580.i, %add.i574.i - %mul.i449.i = fmul <4 x float> %104, %vecinit3.i.i - %mul.i.i35 = fmul <4 x float> %103, %vecinit3.i362.i + %mul.i449.i = fmul <4 x float> %103, %vecinit3.i.i + %mul.i.i35 = fmul <4 x float> %102, %vecinit3.i362.i %sub.i.i36 = fsub <4 x float> %mul.i449.i, %mul.i.i35 %add.i.i37 = fadd <4 x float> %add.i577.i, %sub.i.i36 - %105 = tail call <4 x float> @llvm.x86.sse.min.ps(<4 x float> %add.i.i37, <4 x float> splat (float 3.276700e+04)) - %106 = tail call <4 x float> @llvm.x86.sse.max.ps(<4 x float> %105, <4 x float> splat (float -3.276800e+04)) - %107 = tail call <4 x i32> @llvm.x86.sse2.cvtps2dq(<4 x float> %106) - %108 = tail call <4 x float> @llvm.x86.sse.min.ps(<4 x float> %add.i571.i, <4 x float> splat (float 3.276700e+04)) - %109 = tail call <4 x float> @llvm.x86.sse.max.ps(<4 x float> %108, <4 x float> splat (float -3.276800e+04)) - %110 = tail call <4 x i32> @llvm.x86.sse2.cvtps2dq(<4 x float> %109) - %111 = tail call <8 x i16> @llvm.x86.sse2.packssdw.128(<4 x i32> %107, <4 x i32> %110) - %112 = extractelement <8 x i16> %111, i64 1 - %113 = sub nuw nsw i64 15, %indvars.iv.i28 - %114 = mul nsw i64 %113, %44 - %arrayidx314.i = getelementptr inbounds i16, ptr %add.ptr3.i, i64 %114 - store i16 %112, ptr %arrayidx314.i, align 2 - %115 = extractelement <8 x i16> %111, i64 5 - %116 = add nuw nsw i64 %indvars.iv.i28, 17 - %117 = mul nsw i64 %116, %44 - %arrayidx320.i = getelementptr inbounds i16, ptr %add.ptr3.i, i64 %117 - store i16 %115, ptr %arrayidx320.i, align 2 - %118 = extractelement <8 x i16> %111, i64 0 - %arrayidx326.i = getelementptr inbounds i16, ptr %add.ptr9, i64 %114 - store i16 %118, ptr %arrayidx326.i, align 2 - %119 = extractelement <8 x i16> %111, i64 4 - %arrayidx332.i = getelementptr inbounds i16, ptr %add.ptr9, i64 %117 - store i16 %119, ptr %arrayidx332.i, align 2 - %120 = extractelement <8 x i16> %111, i64 3 - %121 = sub nuw nsw i64 47, %indvars.iv.i28 - %122 = mul nsw i64 %121, %44 - %arrayidx338.i = getelementptr inbounds i16, ptr %add.ptr3.i, i64 %122 - store i16 %120, ptr %arrayidx338.i, align 2 - %123 = extractelement <8 x i16> %111, i64 7 - %124 = add nuw nsw i64 %indvars.iv.i28, 49 - %125 = mul nsw i64 %124, %44 - %arrayidx344.i = getelementptr inbounds i16, ptr %add.ptr3.i, i64 %125 - store i16 %123, ptr %arrayidx344.i, align 2 - %126 = extractelement <8 x i16> %111, i64 2 - %arrayidx350.i = getelementptr inbounds i16, ptr %add.ptr9, i64 %122 - store i16 %126, ptr %arrayidx350.i, align 2 - %127 = extractelement <8 x i16> %111, i64 6 - %arrayidx356.i = getelementptr inbounds i16, ptr %add.ptr9, i64 %125 - store i16 %127, ptr %arrayidx356.i, align 2 + %104 = tail call <4 x float> @llvm.x86.sse.min.ps(<4 x float> %add.i.i37, <4 x float> splat (float 3.276700e+04)) + %105 = tail call <4 x float> @llvm.x86.sse.max.ps(<4 x float> %104, <4 x float> splat (float -3.276800e+04)) + %106 = tail call <4 x i32> @llvm.x86.sse2.cvtps2dq(<4 x float> %105) + %107 = tail call <4 x float> @llvm.x86.sse.min.ps(<4 x float> %add.i571.i, <4 x float> splat (float 3.276700e+04)) + %108 = tail call <4 x float> @llvm.x86.sse.max.ps(<4 x float> %107, <4 x float> splat (float -3.276800e+04)) + %109 = tail call <4 x i32> @llvm.x86.sse2.cvtps2dq(<4 x float> %108) + %110 = tail call <8 x i16> @llvm.x86.sse2.packssdw.128(<4 x i32> %106, <4 x i32> %109) + %111 = extractelement <8 x i16> %110, i64 1 + %112 = sub nuw nsw i64 15, %indvars.iv.i28 + %113 = mul nsw i64 %112, %44 + %arrayidx314.i = getelementptr inbounds i16, ptr %add.ptr3.i, i64 %113 + store i16 %111, ptr %arrayidx314.i, align 2 + %114 = extractelement <8 x i16> %110, i64 5 + %115 = add nuw nsw i64 %indvars.iv.i28, 17 + %116 = mul nsw i64 %115, %44 + %arrayidx320.i = getelementptr inbounds i16, ptr %add.ptr3.i, i64 %116 + store i16 %114, ptr %arrayidx320.i, align 2 + %117 = extractelement <8 x i16> %110, i64 0 + %arrayidx326.i = getelementptr inbounds i16, ptr %add.ptr9, i64 %113 + store i16 %117, ptr %arrayidx326.i, align 2 + %118 = extractelement <8 x i16> %110, i64 4 + %arrayidx332.i = getelementptr inbounds i16, ptr %add.ptr9, i64 %116 + store i16 %118, ptr %arrayidx332.i, align 2 + %119 = extractelement <8 x i16> %110, i64 3 + %120 = sub nuw nsw i64 47, %indvars.iv.i28 + %121 = mul nsw i64 %120, %44 + %arrayidx338.i = getelementptr inbounds i16, ptr %add.ptr3.i, i64 %121 + store i16 %119, ptr %arrayidx338.i, align 2 + %122 = extractelement <8 x i16> %110, i64 7 + %123 = add nuw nsw i64 %indvars.iv.i28, 49 + %124 = mul nsw i64 %123, %44 + %arrayidx344.i = getelementptr inbounds i16, ptr %add.ptr3.i, i64 %124 + store i16 %122, ptr %arrayidx344.i, align 2 + %125 = extractelement <8 x i16> %110, i64 2 + %arrayidx350.i = getelementptr inbounds i16, ptr %add.ptr9, i64 %121 + store i16 %125, ptr %arrayidx350.i, align 2 + %126 = extractelement <8 x i16> %110, i64 6 + %arrayidx356.i = getelementptr inbounds i16, ptr %add.ptr9, i64 %124 + store i16 %126, ptr %arrayidx356.i, align 2 %indvars.iv.next.i38 = add nsw i64 %indvars.iv.i28, -1 %cmp.not.i = icmp eq i64 %indvars.iv.i28, 0 br i1 %cmp.not.i, label %ma_dr_mp3d_synth.exit, label %for.body.i27, !llvm.loop !876 @@ -107804,16 +107804,16 @@ ma_dr_mp3d_synth.exit: ; preds = %for.body.i27 for.end14: ; preds = %ma_dr_mp3d_synth.exit %cmp15 = icmp eq i32 %nch, 1 %mul19 = shl nuw nsw i32 %nbands, 6 - %128 = zext nneg i32 %mul19 to i64 - %invariant.gep = getelementptr inbounds nuw float, ptr %lins, i64 %128 + %127 = zext nneg i32 %mul19 to i64 + %invariant.gep = getelementptr inbounds nuw float, ptr %lins, i64 %127 br i1 %cmp15, label %for.body18, label %if.else for.body18: ; preds = %for.end14, %for.body18 %indvars.iv50 = phi i64 [ %indvars.iv.next51, %for.body18 ], [ 0, %for.end14 ] %gep = getelementptr inbounds nuw float, ptr %invariant.gep, i64 %indvars.iv50 - %129 = load float, ptr %gep, align 4 + %128 = load float, ptr %gep, align 4 %arrayidx22 = getelementptr inbounds nuw float, ptr %qmf_state, i64 %indvars.iv50 - store float %129, ptr %arrayidx22, align 4 + store float %128, ptr %arrayidx22, align 4 %indvars.iv.next51 = add nuw nsw i64 %indvars.iv50, 2 %cmp17 = icmp samesign ult i64 %indvars.iv50, 958 br i1 %cmp17, label %for.body18, label %if.end, !llvm.loop !878 diff --git a/bench/opencv/optimized/fast_window_binarizer.ll b/bench/opencv/optimized/fast_window_binarizer.ll index 200f2430dcc..1fca2986671 100644 --- a/bench/opencv/optimized/fast_window_binarizer.ll +++ b/bench/opencv/optimized/fast_window_binarizer.ll @@ -743,11 +743,11 @@ define hidden void @_ZN5zxing19FastWindowBinarizer15calcBlockTotalsEPiS1_ii(ptr .lr.ph.us.us.preheader: ; preds = %..loopexit_crit_edge.us, %.lr.ph36.us.preheader %indvars.iv57 = phi i64 [ 0, %.lr.ph36.us.preheader ], [ %indvars.iv.next58, %..loopexit_crit_edge.us ] %indvars.iv43 = phi i32 [ 0, %.lr.ph36.us.preheader ], [ %indvars.iv.next44, %..loopexit_crit_edge.us ] - %9 = sext i32 %indvars.iv43 to i64 + %10 = sext i32 %indvars.iv43 to i64 %indvars.iv.next58 = add nuw nsw i64 %indvars.iv57, 1 - %10 = mul nuw nsw i64 %indvars.iv.next58, 6 - %11 = trunc i64 %indvars.iv57 to i32 - %12 = mul i32 %3, %11 + %11 = mul nuw nsw i64 %indvars.iv.next58, 6 + %12 = trunc i64 %indvars.iv57 to i32 + %invariant.gep = mul i32 %3, %12 %13 = zext i32 %12 to i64 %invariant.gep = getelementptr inbounds nuw i32, ptr %2, i64 %13 br label %.lr.ph.us.us @@ -760,42 +760,42 @@ define hidden void @_ZN5zxing19FastWindowBinarizer15calcBlockTotalsEPiS1_ii(ptr .lr.ph.us.us: ; preds = %.lr.ph.us.us.preheader, %._crit_edge.us.us %indvars.iv53 = phi i64 [ 0, %.lr.ph.us.us.preheader ], [ %indvars.iv.next54, %._crit_edge.us.us ] %indvars.iv = phi i32 [ 0, %.lr.ph.us.us.preheader ], [ %indvars.iv.next, %._crit_edge.us.us ] - %14 = load i32, ptr %8, align 4 - %15 = mul i32 %indvars.iv43, %14 - %16 = add i32 %indvars.iv, %15 - %17 = trunc i64 %indvars.iv53 to i32 - %18 = mul i32 %17, 6 - %19 = add i32 %18, 6 - br label %20 - -20: ; preds = %25, %.lr.ph.us.us - %indvars.iv50 = phi i64 [ %indvars.iv.next51, %25 ], [ %9, %.lr.ph.us.us ] - %indvars.iv45 = phi i32 [ %indvars.iv.next46, %25 ], [ %16, %.lr.ph.us.us ] - %.02732.us.us = phi i32 [ %30, %25 ], [ 0, %.lr.ph.us.us ] - %21 = sext i32 %indvars.iv45 to i64 - %22 = trunc i64 %indvars.iv50 to i32 - %23 = mul i32 %14, %22 - %.reass.us.us = add i32 %23, %19 - %24 = sext i32 %.reass.us.us to i64 + %13 = load i32, ptr %8, align 4 + %14 = mul i32 %indvars.iv43, %13 + %15 = add i32 %indvars.iv, %14 + %16 = trunc i64 %indvars.iv53 to i32 + %17 = mul i32 %16, 6 + %18 = add i32 %17, 6 + br label %19 + +19: ; preds = %24, %.lr.ph.us.us + %indvars.iv50 = phi i64 [ %indvars.iv.next51, %24 ], [ %10, %.lr.ph.us.us ] + %indvars.iv45 = phi i32 [ %indvars.iv.next46, %24 ], [ %15, %.lr.ph.us.us ] + %.02732.us.us = phi i32 [ %30, %24 ], [ 0, %.lr.ph.us.us ] + %20 = sext i32 %indvars.iv45 to i64 + %21 = trunc i64 %indvars.iv50 to i32 + %22 = mul i32 %13, %21 + %.reass.us.us = add i32 %22, %18 + %23 = sext i32 %.reass.us.us to i64 br label %27 -25: ; preds = %27 +24: ; preds = %27 %indvars.iv.next51 = add nuw nsw i64 %indvars.iv50, 1 - %26 = icmp samesign ult i64 %indvars.iv.next51, %10 - %indvars.iv.next46 = add i32 %indvars.iv45, %14 - br i1 %26, label %20, label %._crit_edge.us.us, !llvm.loop !6 + %25 = icmp samesign ult i64 %indvars.iv.next51, %10 + %26 = add i32 %indvars.iv45, %14 + br i1 %25, label %19, label %._crit_edge.us.us, !llvm.loop !6 -27: ; preds = %27, %20 - %indvars.iv47 = phi i64 [ %indvars.iv.next48, %27 ], [ %21, %20 ] - %.130.us.us = phi i32 [ %30, %27 ], [ %.02732.us.us, %20 ] +27: ; preds = %27, %19 + %indvars.iv47 = phi i64 [ %indvars.iv.next48, %27 ], [ %20, %19 ] + %.130.us.us = phi i32 [ %30, %27 ], [ %.02732.us.us, %19 ] %28 = getelementptr inbounds i32, ptr %1, i64 %indvars.iv47 %29 = load i32, ptr %28, align 4 %30 = add nsw i32 %29, %.130.us.us %indvars.iv.next48 = add nsw i64 %indvars.iv47, 1 - %31 = icmp slt i64 %indvars.iv.next48, %24 - br i1 %31, label %27, label %25, !llvm.loop !7 + %31 = icmp slt i64 %indvars.iv.next48, %23 + br i1 %31, label %27, label %24, !llvm.loop !7 -._crit_edge.us.us: ; preds = %25 +._crit_edge.us.us: ; preds = %24 %gep = getelementptr inbounds nuw i32, ptr %invariant.gep, i64 %indvars.iv53 store i32 %30, ptr %gep, align 4 %indvars.iv.next54 = add nuw nsw i64 %indvars.iv53, 1 @@ -1487,11 +1487,11 @@ _ZN5zxing3RefINS_15LuminanceSourceEED2Ev.exit: ; preds = %2, %7, %12 .lr.ph.us.us.preheader.i: ; preds = %..loopexit_crit_edge.us.i, %.lr.ph.i %indvars.iv57.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next58.i, %..loopexit_crit_edge.us.i ] %indvars.iv43.i = phi i32 [ 0, %.lr.ph.i ], [ %indvars.iv.next44.i, %..loopexit_crit_edge.us.i ] - %63 = sext i32 %indvars.iv43.i to i64 + %64 = sext i32 %indvars.iv43.i to i64 %indvars.iv.next58.i = add nuw nsw i64 %indvars.iv57.i, 1 - %64 = mul nuw nsw i64 %indvars.iv.next58.i, 6 - %65 = trunc i64 %indvars.iv57.i to i32 - %66 = mul i32 %31, %65 + %65 = mul nuw nsw i64 %indvars.iv.next58.i, 6 + %66 = trunc i64 %indvars.iv57.i to i32 + %invariant.gep.i = mul i32 %31, %66 %67 = zext i32 %66 to i64 %invariant.gep.i = getelementptr inbounds nuw i32, ptr %62, i64 %67 br label %.lr.ph.us.us.i @@ -1504,42 +1504,42 @@ _ZN5zxing3RefINS_15LuminanceSourceEED2Ev.exit: ; preds = %2, %7, %12 .lr.ph.us.us.i: ; preds = %._crit_edge.us.us.i, %.lr.ph.us.us.preheader.i %indvars.iv53.i = phi i64 [ 0, %.lr.ph.us.us.preheader.i ], [ %indvars.iv.next54.i, %._crit_edge.us.us.i ] %indvars.iv.i = phi i32 [ 0, %.lr.ph.us.us.preheader.i ], [ %indvars.iv.next.i, %._crit_edge.us.us.i ] - %68 = load i32, ptr %16, align 4 - %69 = mul i32 %68, %indvars.iv43.i - %70 = add i32 %69, %indvars.iv.i - %71 = trunc i64 %indvars.iv53.i to i32 - %72 = mul i32 %71, 6 - %73 = add i32 %72, 6 - br label %74 - -74: ; preds = %79, %.lr.ph.us.us.i - %indvars.iv50.i = phi i64 [ %indvars.iv.next51.i, %79 ], [ %63, %.lr.ph.us.us.i ] - %indvars.iv45.i = phi i32 [ %indvars.iv.next46.i, %79 ], [ %70, %.lr.ph.us.us.i ] - %.02732.us.us.i = phi i32 [ %84, %79 ], [ 0, %.lr.ph.us.us.i ] - %75 = sext i32 %indvars.iv45.i to i64 - %76 = trunc i64 %indvars.iv50.i to i32 - %77 = mul i32 %68, %76 - %.reass.us.us.i = add i32 %73, %77 - %78 = sext i32 %.reass.us.us.i to i64 + %67 = load i32, ptr %16, align 4 + %68 = mul i32 %67, %indvars.iv43.i + %69 = add i32 %68, %indvars.iv.i + %70 = trunc i64 %indvars.iv53.i to i32 + %71 = mul i32 %70, 6 + %72 = add i32 %71, 6 + br label %73 + +73: ; preds = %78, %.lr.ph.us.us.i + %indvars.iv50.i = phi i64 [ %indvars.iv.next51.i, %78 ], [ %64, %.lr.ph.us.us.i ] + %indvars.iv45.i = phi i32 [ %indvars.iv.next46.i, %78 ], [ %69, %.lr.ph.us.us.i ] + %.02732.us.us.i = phi i32 [ %84, %78 ], [ 0, %.lr.ph.us.us.i ] + %74 = sext i32 %indvars.iv45.i to i64 + %75 = trunc i64 %indvars.iv50.i to i32 + %76 = mul i32 %67, %75 + %.reass.us.us.i = add i32 %72, %76 + %77 = sext i32 %.reass.us.us.i to i64 br label %81 -79: ; preds = %81 +78: ; preds = %81 %indvars.iv.next51.i = add nuw nsw i64 %indvars.iv50.i, 1 - %80 = icmp samesign ult i64 %indvars.iv.next51.i, %64 - %indvars.iv.next46.i = add i32 %indvars.iv45.i, %68 + %79 = icmp samesign ult i64 %indvars.iv.next51.i, %65 + %80 = add i32 %indvars.iv45.i, %68 br i1 %80, label %74, label %._crit_edge.us.us.i, !llvm.loop !6 -81: ; preds = %81, %74 - %indvars.iv47.i = phi i64 [ %indvars.iv.next48.i, %81 ], [ %75, %74 ] - %.130.us.us.i = phi i32 [ %84, %81 ], [ %.02732.us.us.i, %74 ] +81: ; preds = %81, %73 + %indvars.iv47.i = phi i64 [ %indvars.iv.next48.i, %81 ], [ %74, %73 ] + %.130.us.us.i = phi i32 [ %84, %81 ], [ %.02732.us.us.i, %73 ] %82 = getelementptr inbounds i32, ptr %60, i64 %indvars.iv47.i %83 = load i32, ptr %82, align 4 %84 = add nsw i32 %83, %.130.us.us.i %indvars.iv.next48.i = add nsw i64 %indvars.iv47.i, 1 - %85 = icmp slt i64 %indvars.iv.next48.i, %78 - br i1 %85, label %81, label %79, !llvm.loop !7 + %85 = icmp slt i64 %indvars.iv.next48.i, %77 + br i1 %85, label %81, label %78, !llvm.loop !7 -._crit_edge.us.us.i: ; preds = %79 +._crit_edge.us.us.i: ; preds = %78 %gep.i = getelementptr inbounds nuw i32, ptr %invariant.gep.i, i64 %indvars.iv53.i store i32 %84, ptr %gep.i, align 4 %indvars.iv.next54.i = add nuw nsw i64 %indvars.iv53.i, 1 @@ -1599,8 +1599,8 @@ _ZN5zxing19FastWindowBinarizer15calcBlockTotalsEPiS1_ii.exit: ; preds = %..loope %108 = add nsw i32 %107, %.03950.us.i %indvars.iv.next75.i = add nuw nsw i64 %indvars.iv74.i, 1 %109 = mul nuw nsw i64 %indvars.iv.next75.i, %90 - %gep.i87 = getelementptr inbounds nuw i32, ptr %101, i64 %109 - store i32 %108, ptr %gep.i87, align 4 + %gep.i86 = getelementptr inbounds nuw i32, ptr %101, i64 %109 + store i32 %108, ptr %gep.i86, align 4 %exitcond78.not.i = icmp eq i64 %indvars.iv.next75.i, %wide.trip.count60.i br i1 %exitcond78.not.i, label %._crit_edge.us57.i, label %102, !llvm.loop !11 @@ -1632,7 +1632,7 @@ _ZN5zxing19FastWindowBinarizer10cumulativeEPiS1_ii.exit: ; preds = %._crit_edge. 122: ; preds = %114 %.not.not = icmp eq i32 %121, 0 - br i1 %.not.not, label %.lr.ph117.us.preheader, label %210 + br i1 %.not.not, label %.lr.ph116.us.preheader, label %210 123: ; preds = %111 %124 = landingpad { ptr, i32 } @@ -1657,43 +1657,43 @@ _ZN5zxing19FastWindowBinarizer10cumulativeEPiS1_ii.exit: ; preds = %._crit_edge. call void %133(ptr noundef nonnull align 8 dereferenceable(12) %110) #10 br label %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit -.lr.ph117.us.preheader: ; preds = %122 +.lr.ph116.us.preheader: ; preds = %122 %134 = getelementptr inbounds nuw i8, ptr %110, i64 312 %135 = load ptr, ptr %134, align 8 %136 = getelementptr inbounds nuw i8, ptr %135, i64 16 %137 = load ptr, ptr %136, align 8 %umax = call i32 @llvm.umax.i32(i32 %31, i32 1) - %umax137 = call i32 @llvm.umax.i32(i32 %32, i32 1) - br label %.lr.ph117.us + %umax136 = call i32 @llvm.umax.i32(i32 %32, i32 1) + br label %.lr.ph116.us -.lr.ph117.us: ; preds = %.lr.ph117.us.preheader, %._crit_edge.us - %.075121.us = phi i32 [ %150, %._crit_edge.us ], [ 0, %.lr.ph117.us.preheader ] - %138 = sub nsw i32 %.075121.us, %30 +.lr.ph116.us: ; preds = %.lr.ph116.us.preheader, %._crit_edge.us + %.075120.us = phi i32 [ %150, %._crit_edge.us ], [ 0, %.lr.ph116.us.preheader ] + %138 = sub nsw i32 %.075120.us, %30 %139 = call i32 @llvm.smax.i32(i32 %138, i32 -1) %140 = add nsw i32 %139, 1 - %141 = add nsw i32 %.075121.us, %30 + %141 = add nsw i32 %.075120.us, %30 %142 = call noundef i32 @llvm.smin.i32(i32 %32, i32 %141) %143 = mul nsw i32 %142, %33 %144 = mul nsw i32 %140, %33 %145 = sub nsw i32 %142, %140 %146 = mul i32 %145, 36 - %147 = mul nuw i32 %.075121.us, 6 + %147 = mul nuw i32 %.075120.us, 6 %148 = add nuw i32 %147, 6 %149 = icmp slt i32 %147, 2147483642 - br i1 %149, label %.lr.ph114.us.us, label %._crit_edge.us + br i1 %149, label %.lr.ph113.us.us, label %._crit_edge.us -._crit_edge.us: ; preds = %._crit_edge115.us.us, %.lr.ph117.us - %150 = add nuw nsw i32 %.075121.us, 1 - %exitcond138.not = icmp eq i32 %150, %umax137 - br i1 %exitcond138.not, label %._crit_edge124, label %.lr.ph117.us, !llvm.loop !22 +._crit_edge.us: ; preds = %._crit_edge114.us.us, %.lr.ph116.us + %150 = add nuw nsw i32 %.075120.us, 1 + %exitcond137.not = icmp eq i32 %150, %umax136 + br i1 %exitcond137.not, label %._crit_edge123, label %.lr.ph116.us, !llvm.loop !22 -.lr.ph114.us.us: ; preds = %.lr.ph117.us, %._crit_edge115.us.us - %indvars.iv132 = phi i64 [ %indvars.iv.next133, %._crit_edge115.us.us ], [ 0, %.lr.ph117.us ] - %.076116.us.us = phi i32 [ %181, %._crit_edge115.us.us ], [ 0, %.lr.ph117.us ] - %151 = sub nsw i32 %.076116.us.us, %30 +.lr.ph113.us.us: ; preds = %.lr.ph116.us, %._crit_edge114.us.us + %indvars.iv131 = phi i64 [ %indvars.iv.next132, %._crit_edge114.us.us ], [ 0, %.lr.ph116.us ] + %.076115.us.us = phi i32 [ %181, %._crit_edge114.us.us ], [ 0, %.lr.ph116.us ] + %151 = sub nsw i32 %.076115.us.us, %30 %152 = call i32 @llvm.smax.i32(i32 %151, i32 -1) %153 = add nsw i32 %152, 1 - %154 = add nsw i32 %.076116.us.us, %30 + %154 = add nsw i32 %.076115.us.us, %30 %155 = call noundef i32 @llvm.smin.i32(i32 %31, i32 %154) %156 = load ptr, ptr %87, align 8 %157 = add nsw i32 %155, %143 @@ -1712,61 +1712,61 @@ _ZN5zxing19FastWindowBinarizer10cumulativeEPiS1_ii.exit: ; preds = %._crit_edge. %170 = sext i32 %169 to i64 %171 = getelementptr inbounds i32, ptr %156, i64 %170 %172 = load i32, ptr %171, align 4 - %.neg108.us.us = add i32 %164, %160 + %.neg107.us.us = add i32 %164, %160 %173 = add i32 %168, %172 - %174 = sub i32 %.neg108.us.us, %173 + %174 = sub i32 %.neg107.us.us, %173 %175 = sub nsw i32 %155, %153 %176 = mul i32 %146, %175 %177 = sdiv i32 %174, %176 - %178 = mul nuw i32 %.076116.us.us, 6 + %178 = mul nuw i32 %.076115.us.us, 6 %179 = add nuw i32 %178, 6 %180 = icmp slt i32 %178, 2147483642 - br i1 %180, label %.lr.ph111.us.us.us, label %._crit_edge115.us.us + br i1 %180, label %.lr.ph110.us.us.us, label %._crit_edge114.us.us -._crit_edge115.us.us: ; preds = %._crit_edge.us.us.us, %.lr.ph114.us.us - %181 = add nuw nsw i32 %.076116.us.us, 1 - %indvars.iv.next133 = add nuw nsw i64 %indvars.iv132, 6 +._crit_edge114.us.us: ; preds = %._crit_edge.us.us.us, %.lr.ph113.us.us + %181 = add nuw nsw i32 %.076115.us.us, 1 + %indvars.iv.next132 = add nuw nsw i64 %indvars.iv131, 6 %exitcond.not = icmp eq i32 %181, %umax - br i1 %exitcond.not, label %._crit_edge.us, label %.lr.ph114.us.us, !llvm.loop !23 + br i1 %exitcond.not, label %._crit_edge.us, label %.lr.ph113.us.us, !llvm.loop !23 -.lr.ph111.us.us.us: ; preds = %.lr.ph114.us.us, %._crit_edge.us.us.us - %.071112.us.us.us = phi i32 [ %195, %._crit_edge.us.us.us ], [ %147, %.lr.ph114.us.us ] +.lr.ph110.us.us.us: ; preds = %.lr.ph113.us.us, %._crit_edge.us.us.us + %.071111.us.us.us = phi i32 [ %195, %._crit_edge.us.us.us ], [ %147, %.lr.ph113.us.us ] %182 = load ptr, ptr %59, align 8 %183 = load i32, ptr %16, align 4 - %184 = mul nsw i32 %183, %.071112.us.us.us + %184 = mul nsw i32 %183, %.071111.us.us.us %185 = sext i32 %184 to i64 %186 = getelementptr inbounds i32, ptr %182, i64 %185 %187 = getelementptr inbounds i8, ptr %137, i64 %185 br label %188 -188: ; preds = %188, %.lr.ph111.us.us.us - %indvars.iv134 = phi i64 [ %indvars.iv.next135, %188 ], [ %indvars.iv132, %.lr.ph111.us.us.us ] - %189 = getelementptr inbounds nuw i32, ptr %186, i64 %indvars.iv134 +188: ; preds = %188, %.lr.ph110.us.us.us + %indvars.iv133 = phi i64 [ %indvars.iv.next134, %188 ], [ %indvars.iv131, %.lr.ph110.us.us.us ] + %189 = getelementptr inbounds nuw i32, ptr %186, i64 %indvars.iv133 %190 = load i32, ptr %189, align 4 %191 = icmp slt i32 %190, %177 %spec.select = zext i1 %191 to i8 - %192 = getelementptr inbounds nuw i8, ptr %187, i64 %indvars.iv134 + %192 = getelementptr inbounds nuw i8, ptr %187, i64 %indvars.iv133 store i8 %spec.select, ptr %192, align 1 - %indvars.iv.next135 = add nuw nsw i64 %indvars.iv134, 1 - %193 = trunc nuw i64 %indvars.iv.next135 to i32 + %indvars.iv.next134 = add nuw nsw i64 %indvars.iv133, 1 + %193 = trunc nuw i64 %indvars.iv.next134 to i32 %194 = icmp sgt i32 %179, %193 br i1 %194, label %188, label %._crit_edge.us.us.us, !llvm.loop !24 ._crit_edge.us.us.us: ; preds = %188 - %195 = add nuw nsw i32 %.071112.us.us.us, 1 + %195 = add nuw nsw i32 %.071111.us.us.us, 1 %196 = icmp slt i32 %195, %148 - br i1 %196, label %.lr.ph111.us.us.us, label %._crit_edge115.us.us, !llvm.loop !25 + br i1 %196, label %.lr.ph110.us.us.us, label %._crit_edge114.us.us, !llvm.loop !25 -._crit_edge124: ; preds = %._crit_edge.us +._crit_edge123: ; preds = %._crit_edge.us %197 = getelementptr inbounds nuw i8, ptr %0, i64 128 %198 = load i32, ptr %115, align 8 %199 = add i32 %198, 1 store i32 %199, ptr %115, align 8 %200 = load ptr, ptr %197, align 8 - %.not5.i.i89 = icmp eq ptr %200, null - br i1 %.not5.i.i89, label %_ZN5zxing3RefINS_9BitMatrixEEaSERKS2_.exit, label %201 + %.not5.i.i88 = icmp eq ptr %200, null + br i1 %.not5.i.i88, label %_ZN5zxing3RefINS_9BitMatrixEEaSERKS2_.exit, label %201 -201: ; preds = %._crit_edge124 +201: ; preds = %._crit_edge123 %202 = getelementptr inbounds nuw i8, ptr %200, i64 8 %203 = load i32, ptr %202, align 8 %204 = add i32 %203, -1 @@ -1782,7 +1782,7 @@ _ZN5zxing19FastWindowBinarizer10cumulativeEPiS1_ii.exit: ; preds = %._crit_edge. call void %209(ptr noundef nonnull align 8 dereferenceable(12) %200) #10 br label %_ZN5zxing3RefINS_9BitMatrixEEaSERKS2_.exit -_ZN5zxing3RefINS_9BitMatrixEEaSERKS2_.exit: ; preds = %._crit_edge124, %201, %206 +_ZN5zxing3RefINS_9BitMatrixEEaSERKS2_.exit: ; preds = %._crit_edge123, %201, %206 store ptr %110, ptr %197, align 8 br label %210 @@ -1791,7 +1791,7 @@ _ZN5zxing3RefINS_9BitMatrixEEaSERKS2_.exit: ; preds = %._crit_edge124, %20 %212 = add i32 %211, -1 store i32 %212, ptr %115, align 8 %213 = icmp eq i32 %212, 0 - br i1 %213, label %214, label %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit91 + br i1 %213, label %214, label %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit90 214: ; preds = %210 store i32 -559026175, ptr %115, align 8 @@ -1799,16 +1799,16 @@ _ZN5zxing3RefINS_9BitMatrixEEaSERKS2_.exit: ; preds = %._crit_edge124, %20 %216 = getelementptr inbounds nuw i8, ptr %215, i64 8 %217 = load ptr, ptr %216, align 8 call void %217(ptr noundef nonnull align 8 dereferenceable(12) %110) #10 - br label %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit91 + br label %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit90 -_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit91: ; preds = %210, %214 +_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit90: ; preds = %210, %214 store ptr getelementptr inbounds nuw inrange(-16, 16) (i8, ptr @_ZTVN5zxing8ArrayRefIcEE, i64 16), ptr %4, align 8 %218 = getelementptr inbounds nuw i8, ptr %4, i64 16 %219 = load ptr, ptr %218, align 8 - %.not.i92 = icmp eq ptr %219, null - br i1 %.not.i92, label %_ZN5zxing8ArrayRefIcED2Ev.exit, label %220 + %.not.i91 = icmp eq ptr %219, null + br i1 %.not.i91, label %_ZN5zxing8ArrayRefIcED2Ev.exit, label %220 -220: ; preds = %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit91 +220: ; preds = %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit90 %221 = getelementptr inbounds nuw i8, ptr %219, i64 8 %222 = load i32, ptr %221, align 8 %223 = add i32 %222, -1 @@ -1824,16 +1824,16 @@ _ZN5zxing3RefINS_9BitMatrixEED2Ev.exit91: ; preds = %210, %214 call void %228(ptr noundef nonnull align 8 dereferenceable(12) %219) #10 br label %_ZN5zxing8ArrayRefIcED2Ev.exit -_ZN5zxing8ArrayRefIcED2Ev.exit: ; preds = %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit91, %220, %225 - br i1 %.not.not, label %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit99, label %268 +_ZN5zxing8ArrayRefIcED2Ev.exit: ; preds = %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit90, %220, %225 + br i1 %.not.not, label %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit98, label %268 _ZN5zxing3RefINS_9BitMatrixEED2Ev.exit: ; preds = %130, %125, %123, %57 %.pn = phi { ptr, i32 } [ %58, %57 ], [ %124, %123 ], [ %126, %125 ], [ %126, %130 ] store ptr getelementptr inbounds nuw inrange(-16, 16) (i8, ptr @_ZTVN5zxing8ArrayRefIcEE, i64 16), ptr %4, align 8 %229 = getelementptr inbounds nuw i8, ptr %4, i64 16 %230 = load ptr, ptr %229, align 8 - %.not.i93 = icmp eq ptr %230, null - br i1 %.not.i93, label %_ZN5zxing8ArrayRefIcED2Ev.exit94, label %231 + %.not.i92 = icmp eq ptr %230, null + br i1 %.not.i92, label %_ZN5zxing8ArrayRefIcED2Ev.exit93, label %231 231: ; preds = %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit %232 = getelementptr inbounds nuw i8, ptr %230, i64 8 @@ -1841,7 +1841,7 @@ _ZN5zxing3RefINS_9BitMatrixEED2Ev.exit: ; preds = %130, %125, %123, %5 %234 = add i32 %233, -1 store i32 %234, ptr %232, align 8 %235 = icmp eq i32 %234, 0 - br i1 %235, label %236, label %_ZN5zxing8ArrayRefIcED2Ev.exit94 + br i1 %235, label %236, label %_ZN5zxing8ArrayRefIcED2Ev.exit93 236: ; preds = %231 store i32 -559026175, ptr %232, align 8 @@ -1849,17 +1849,17 @@ _ZN5zxing3RefINS_9BitMatrixEED2Ev.exit: ; preds = %130, %125, %123, %5 %238 = getelementptr inbounds nuw i8, ptr %237, i64 8 %239 = load ptr, ptr %238, align 8 call void %239(ptr noundef nonnull align 8 dereferenceable(12) %230) #10 - br label %_ZN5zxing8ArrayRefIcED2Ev.exit94 + br label %_ZN5zxing8ArrayRefIcED2Ev.exit93 -_ZN5zxing8ArrayRefIcED2Ev.exit94: ; preds = %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit, %231, %236 +_ZN5zxing8ArrayRefIcED2Ev.exit93: ; preds = %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit, %231, %236 resume { ptr, i32 } %.pn 240: ; preds = %19, %_ZN5zxing3RefINS_15LuminanceSourceEED2Ev.exit call void @_ZN5zxing24GlobalHistogramBinarizer14getBlackMatrixERNS_12ErrorHandlerE(ptr dead_on_unwind nonnull writable sret(%"class.zxing::Ref.0") align 8 %5, ptr noundef nonnull align 8 dereferenceable(121) %0, ptr noundef nonnull align 8 dereferenceable(48) %1) %241 = getelementptr inbounds nuw i8, ptr %0, i64 128 %242 = load ptr, ptr %5, align 8 - %.not.i.i95 = icmp eq ptr %242, null - br i1 %.not.i.i95, label %247, label %243 + %.not.i.i94 = icmp eq ptr %242, null + br i1 %.not.i.i94, label %247, label %243 243: ; preds = %240 %244 = getelementptr inbounds nuw i8, ptr %242, i64 8 @@ -1870,8 +1870,8 @@ _ZN5zxing8ArrayRefIcED2Ev.exit94: ; preds = %_ZN5zxing3RefINS_9B 247: ; preds = %243, %240 %248 = load ptr, ptr %241, align 8 - %.not5.i.i96 = icmp eq ptr %248, null - br i1 %.not5.i.i96, label %_ZN5zxing3RefINS_9BitMatrixEEaSERKS2_.exit97, label %249 + %.not5.i.i95 = icmp eq ptr %248, null + br i1 %.not5.i.i95, label %_ZN5zxing3RefINS_9BitMatrixEEaSERKS2_.exit96, label %249 249: ; preds = %247 %250 = getelementptr inbounds nuw i8, ptr %248, i64 8 @@ -1879,7 +1879,7 @@ _ZN5zxing8ArrayRefIcED2Ev.exit94: ; preds = %_ZN5zxing3RefINS_9B %252 = add i32 %251, -1 store i32 %252, ptr %250, align 8 %253 = icmp eq i32 %252, 0 - br i1 %253, label %254, label %_ZN5zxing3RefINS_9BitMatrixEEaSERKS2_.exit97 + br i1 %253, label %254, label %_ZN5zxing3RefINS_9BitMatrixEEaSERKS2_.exit96 254: ; preds = %249 store i32 -559026175, ptr %250, align 8 @@ -1888,21 +1888,21 @@ _ZN5zxing8ArrayRefIcED2Ev.exit94: ; preds = %_ZN5zxing3RefINS_9B %257 = load ptr, ptr %256, align 8 call void %257(ptr noundef nonnull align 8 dereferenceable(12) %248) #10 %.pre = load ptr, ptr %5, align 8 - br label %_ZN5zxing3RefINS_9BitMatrixEEaSERKS2_.exit97 + br label %_ZN5zxing3RefINS_9BitMatrixEEaSERKS2_.exit96 -_ZN5zxing3RefINS_9BitMatrixEEaSERKS2_.exit97: ; preds = %247, %249, %254 +_ZN5zxing3RefINS_9BitMatrixEEaSERKS2_.exit96: ; preds = %247, %249, %254 %258 = phi ptr [ %242, %247 ], [ %242, %249 ], [ %.pre, %254 ] store ptr %242, ptr %241, align 8 - %.not.i98 = icmp eq ptr %258, null - br i1 %.not.i98, label %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit99, label %259 + %.not.i97 = icmp eq ptr %258, null + br i1 %.not.i97, label %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit98, label %259 -259: ; preds = %_ZN5zxing3RefINS_9BitMatrixEEaSERKS2_.exit97 +259: ; preds = %_ZN5zxing3RefINS_9BitMatrixEEaSERKS2_.exit96 %260 = getelementptr inbounds nuw i8, ptr %258, i64 8 %261 = load i32, ptr %260, align 8 %262 = add i32 %261, -1 store i32 %262, ptr %260, align 8 %263 = icmp eq i32 %262, 0 - br i1 %263, label %264, label %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit99 + br i1 %263, label %264, label %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit98 264: ; preds = %259 store i32 -559026175, ptr %260, align 8 @@ -1910,13 +1910,13 @@ _ZN5zxing3RefINS_9BitMatrixEEaSERKS2_.exit97: ; preds = %247, %249, %254 %266 = getelementptr inbounds nuw i8, ptr %265, i64 8 %267 = load ptr, ptr %266, align 8 call void %267(ptr noundef nonnull align 8 dereferenceable(12) %258) #10 - br label %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit99 + br label %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit98 -_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit99: ; preds = %264, %259, %_ZN5zxing3RefINS_9BitMatrixEEaSERKS2_.exit97, %_ZN5zxing8ArrayRefIcED2Ev.exit +_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit98: ; preds = %264, %259, %_ZN5zxing3RefINS_9BitMatrixEEaSERKS2_.exit96, %_ZN5zxing8ArrayRefIcED2Ev.exit br label %268 -268: ; preds = %_ZN5zxing8ArrayRefIcED2Ev.exit, %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit99 - %.1 = phi i32 [ -1, %_ZN5zxing8ArrayRefIcED2Ev.exit ], [ 0, %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit99 ] +268: ; preds = %_ZN5zxing8ArrayRefIcED2Ev.exit, %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit98 + %.1 = phi i32 [ -1, %_ZN5zxing8ArrayRefIcED2Ev.exit ], [ 0, %_ZN5zxing3RefINS_9BitMatrixEED2Ev.exit98 ] ret i32 %.1 } diff --git a/bench/openjdk/optimized/sharedRuntimeTrig.ll b/bench/openjdk/optimized/sharedRuntimeTrig.ll index 1838946336a..516c18c3408 100644 --- a/bench/openjdk/optimized/sharedRuntimeTrig.ll +++ b/bench/openjdk/optimized/sharedRuntimeTrig.ll @@ -879,38 +879,38 @@ _ZL7scalbnAdi.exit285.i: ; preds = %263 %281 = sext i32 %279 to i64 br label %282 -282: ; preds = %._crit_edge52.i, %.preheader12.i +281: ; preds = %._crit_edge52.i, %.preheader12.i %indvars.iv132.i = phi i64 [ %280, %.preheader12.i ], [ %indvars.iv.next133.i, %._crit_edge52.i ] %indvars.iv.next133.i = add nuw nsw i64 %indvars.iv132.i, 1 %gep.i = getelementptr i32, ptr %invariant.gep.i, i64 %indvars.iv.next133.i - %283 = load i32, ptr %gep.i, align 4 - %284 = sitofp i32 %283 to double - %285 = add i64 %indvars.iv149, %indvars.iv132.i - %sext153 = shl i64 %285, 32 - %286 = ashr exact i64 %sext153, 32 - %287 = getelementptr inbounds [20 x double], ptr %4, i64 0, i64 %286 - store double %284, ptr %287, align 8 + %282 = load i32, ptr %gep.i, align 4 + %283 = sitofp i32 %282 to double + %284 = add i64 %indvars.iv149, %indvars.iv132.i + %sext153 = shl i64 %284, 32 + %285 = ashr exact i64 %sext153, 32 + %286 = getelementptr inbounds [20 x double], ptr %4, i64 0, i64 %285 + store double %283, ptr %286, align 8 br i1 %.not269.not31163.i, label %.lr.ph51.i, label %._crit_edge52.i -.lr.ph51.i: ; preds = %282, %.lr.ph51.i - %indvars.iv127.i = phi i64 [ %indvars.iv.next128.i, %.lr.ph51.i ], [ 0, %282 ] - %.149.i = phi double [ %294, %.lr.ph51.i ], [ 0.000000e+00, %282 ] - %288 = getelementptr inbounds nuw double, ptr %7, i64 %indvars.iv127.i - %289 = load double, ptr %288, align 8 - %290 = sub nsw i64 %286, %indvars.iv127.i - %291 = getelementptr inbounds [20 x double], ptr %4, i64 0, i64 %290 - %292 = load double, ptr %291, align 8 - %293 = fmul double %289, %292 - %294 = fadd double %.149.i, %293 +.lr.ph51.i: ; preds = %281, %.lr.ph51.i + %indvars.iv127.i = phi i64 [ %indvars.iv.next128.i, %.lr.ph51.i ], [ 0, %281 ] + %.149.i = phi double [ %293, %.lr.ph51.i ], [ 0.000000e+00, %281 ] + %287 = getelementptr inbounds nuw double, ptr %7, i64 %indvars.iv127.i + %288 = load double, ptr %287, align 8 + %289 = sub nsw i64 %285, %indvars.iv127.i + %290 = getelementptr inbounds [20 x double], ptr %4, i64 0, i64 %289 + %291 = load double, ptr %290, align 8 + %292 = fmul double %288, %291 + %293 = fadd double %.149.i, %292 %indvars.iv.next128.i = add nuw nsw i64 %indvars.iv127.i, 1 %exitcond131.not.i = icmp eq i64 %indvars.iv.next128.i, %wide.trip.count130.i.pre-phi br i1 %exitcond131.not.i, label %._crit_edge52.i, label %.lr.ph51.i, !llvm.loop !17 -._crit_edge52.i: ; preds = %.lr.ph51.i, %282 - %.1.lcssa.i = phi double [ 0.000000e+00, %282 ], [ %294, %.lr.ph51.i ] - %295 = getelementptr inbounds nuw [20 x double], ptr %6, i64 0, i64 %indvars.iv.next133.i - store double %.1.lcssa.i, ptr %295, align 8 - %.not266.not.i = icmp samesign ult i64 %indvars.iv.next133.i, %281 +._crit_edge52.i: ; preds = %.lr.ph51.i, %281 + %.1.lcssa.i = phi double [ 0.000000e+00, %281 ], [ %293, %.lr.ph51.i ] + %294 = getelementptr inbounds nuw [20 x double], ptr %6, i64 0, i64 %indvars.iv.next133.i + store double %.1.lcssa.i, ptr %294, align 8 + %295 = icmp samesign ult i64 %indvars.iv.next133.i, %281 br i1 %.not266.not.i, label %282, label %.loopexit13.loopexit.i, !llvm.loop !12 296: ; preds = %296, %.preheader11.i diff --git a/bench/openjdk/optimized/sharedRuntime_x86_64.ll b/bench/openjdk/optimized/sharedRuntime_x86_64.ll index 5ba72c7e8ad..296b9a47a01 100644 --- a/bench/openjdk/optimized/sharedRuntime_x86_64.ll +++ b/bench/openjdk/optimized/sharedRuntime_x86_64.ll @@ -8000,8 +8000,8 @@ _ZL13reverse_wordsPmS_i.exit36: ; preds = %.lr.ph.i32 .lr.ph134.i: ; preds = %._crit_edge127.i, %.lr.ph134.preheader.i %indvars.iv = phi i64 [ %indvars.iv.next, %._crit_edge127.i ], [ 1, %.lr.ph134.preheader.i ] %indvars.iv179.i = phi i64 [ %indvars.iv.next180.i, %._crit_edge127.i ], [ 0, %.lr.ph134.preheader.i ] - %.0132.i = phi i64 [ %85, %._crit_edge127.i ], [ 0, %.lr.ph134.preheader.i ] - %.0101131.i = phi i64 [ %86, %._crit_edge127.i ], [ 0, %.lr.ph134.preheader.i ] + %.0132.i = phi i64 [ %80, %._crit_edge127.i ], [ 0, %.lr.ph134.preheader.i ] + %.0101131.i = phi i64 [ %81, %._crit_edge127.i ], [ 0, %.lr.ph134.preheader.i ] %38 = lshr i64 %indvars.iv, 1 %39 = and i64 %38, 2147483647 %umax = call i64 @llvm.umax.i64(i64 %39, i64 1) @@ -8045,37 +8045,37 @@ _ZL13reverse_wordsPmS_i.exit36: ; preds = %.lr.ph.i32 br label %._crit_edge.thread.i ._crit_edge.thread.i: ; preds = %._crit_edge.i.._crit_edge.thread.i_crit_edge, %.lr.ph134.i - %60 = phi i64 [ %.pre, %._crit_edge.i.._crit_edge.thread.i_crit_edge ], [ 0, %.lr.ph134.i ] + %59 = phi i64 [ %.pre, %._crit_edge.i.._crit_edge.thread.i_crit_edge ], [ 0, %.lr.ph134.i ] %.1.lcssa204.i = phi i64 [ %55, %._crit_edge.i.._crit_edge.thread.i_crit_edge ], [ %.0132.i, %.lr.ph134.i ] %.1102.lcssa203.i = phi i64 [ %56, %._crit_edge.i.._crit_edge.thread.i_crit_edge ], [ %.0101131.i, %.lr.ph134.i ] %.0111.lcssa201.i = phi i32 [ %57, %._crit_edge.i.._crit_edge.thread.i_crit_edge ], [ 0, %.lr.ph134.i ] - %61 = zext nneg i32 %.0111.lcssa201.i to i64 - %62 = getelementptr inbounds nuw i64, ptr %15, i64 %61 + %60 = zext nneg i32 %.0111.lcssa201.i to i64 + %61 = getelementptr inbounds nuw i64, ptr %15, i64 %61 %63 = load i64, ptr %62, align 8 - %64 = call { i64, i64, i64, i64 } asm "mul $5; add %rax, $2; adc %rdx, $3; adc $$0, $4", "=&{dx},={ax},=r,=r,=*imr,r,{ax},2,3,4,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %6, i64 %63, i64 %63, i64 %.1.lcssa204.i, i64 %.1102.lcssa203.i, i64 %60) #14, !srcloc !54 - %65 = extractvalue { i64, i64, i64, i64 } %64, 2 + %63 = call { i64, i64, i64, i64 } asm "mul $5; add %rax, $2; adc %rdx, $3; adc $$0, $4", "=&{dx},={ax},=r,=r,=*imr,r,{ax},2,3,4,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %6, i64 %62, i64 %63, i64 %.1.lcssa204.i, i64 %.1102.lcssa203.i, i64 %60) #14, !srcloc !54 + %64 = extractvalue { i64, i64, i64, i64 } %64, 2 %66 = extractvalue { i64, i64, i64, i64 } %64, 3 br label %67 -67: ; preds = %._crit_edge.thread.i, %._crit_edge.i - %.0111.lcssa202.i = phi i32 [ %.0111.lcssa201.i, %._crit_edge.thread.i ], [ %57, %._crit_edge.i ] - %.2103.i = phi i64 [ %66, %._crit_edge.thread.i ], [ %56, %._crit_edge.i ] - %.2.i = phi i64 [ %65, %._crit_edge.thread.i ], [ %55, %._crit_edge.i ] - %68 = zext nneg i32 %.0111.lcssa202.i to i64 +67: ; preds = %._crit_edge.thread.i, %._crit_edge.i + %.2103.i = phi i32 [ %.0111.lcssa201.i, %._crit_edge.thread.i ], [ %57, %._crit_edge.i ] + %.2.i = phi i64 [ %66, %._crit_edge.thread.i ], [ %56, %._crit_edge.i ] + %65 = phi i64 [ %65, %._crit_edge.thread.i ], [ %55, %._crit_edge.i ] + %68 = zext nneg i32 %.2.i to i64 %69 = icmp samesign ugt i64 %indvars.iv179.i, %68 br i1 %69, label %.lr.ph126.preheader.i, label %._crit_edge127.i -.lr.ph126.preheader.i: ; preds = %67 - %70 = zext nneg i32 %.0111.lcssa202.i to i64 +.lr.ph126.preheader.i:; preds = %67 + %.3104123.i = zext nneg i32 %.2103.i to i64 br label %.lr.ph126.i -.lr.ph126.i: ; preds = %.lr.ph126.i, %.lr.ph126.preheader.i - %indvars.iv176.i = phi i64 [ %70, %.lr.ph126.preheader.i ], [ %indvars.iv.next177.i, %.lr.ph126.i ] - %.3124.i = phi i64 [ %.2.i, %.lr.ph126.preheader.i ], [ %78, %.lr.ph126.i ] - %.3104123.i = phi i64 [ %.2103.i, %.lr.ph126.preheader.i ], [ %79, %.lr.ph126.i ] - %71 = load i64, ptr %6, align 8 - %72 = getelementptr inbounds nuw i64, ptr %19, i64 %indvars.iv176.i - %73 = load i64, ptr %72, align 8 +.lr.ph126.i:; preds = %.lr.ph126.i, %.lr.ph126.preheader.i + %69 = phi i64 [ %70, %.lr.ph126.preheader.i ], [ %indvars.iv.next177.i, %.lr.ph126.i ] + %70 = phi i64 [ %65, %.lr.ph126.preheader.i ], [ %78, %.lr.ph126.i ] + %71 = phi i64 [ %65, %.lr.ph126.preheader.i ], [ %79, %.lr.ph126.i ] + %72 = load i64, ptr %6, align 8 + %73 = getelementptr inbounds nuw i64, ptr %19, i64 %69 + %74 = load i64, ptr %72, align 8 %74 = sub nuw nsw i64 %indvars.iv179.i, %indvars.iv176.i %75 = getelementptr inbounds nuw i64, ptr %16, i64 %74 %76 = load i64, ptr %75, align 8 @@ -8089,119 +8089,119 @@ _ZL13reverse_wordsPmS_i.exit36: ; preds = %.lr.ph.i32 ._crit_edge127.i: ; preds = %.lr.ph126.i, %67 %.3104.lcssa.i = phi i64 [ %.2103.i, %67 ], [ %79, %.lr.ph126.i ] %.3.lcssa.i = phi i64 [ %.2.i, %67 ], [ %78, %.lr.ph126.i ] - %80 = mul i64 %.3.lcssa.i, %3 - %81 = getelementptr inbounds nuw i64, ptr %19, i64 %indvars.iv179.i - store i64 %80, ptr %81, align 8 - %82 = load i64, ptr %6, align 8 - %83 = load i64, ptr %16, align 8 - %84 = call { i64, i64, i64, i64 } asm "mul $5; add %rax, $2; adc %rdx, $3; adc $$0, $4", "=&{dx},={ax},=r,=r,=*imr,r,{ax},2,3,4,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %6, i64 %80, i64 %83, i64 %.3.lcssa.i, i64 %.3104.lcssa.i, i64 %82) #14, !srcloc !57 - %85 = extractvalue { i64, i64, i64, i64 } %84, 3 - %86 = load i64, ptr %6, align 8 + %75 = mul i64 %.3.lcssa.i, %3 + %76 = getelementptr inbounds nuw i64, ptr %19, i64 %indvars.iv179.i + store i64 %75, ptr %76, align 8 + %77 = load i64, ptr %6, align 8 + %78 = load i64, ptr %16, align 8 + %79 = call { i64, i64, i64, i64 } asm "mul $5; add %rax, $2; adc %rdx, $3; adc $$0, $4", "=&{dx},={ax},=r,=r,=*imr,r,{ax},2,3,4,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %6, i64 %75, i64 %78, i64 %.3.lcssa.i, i64 %.3104.lcssa.i, i64 %77) #14, !srcloc !57 + %80 = extractvalue { i64, i64, i64, i64 } %79, 3 + %81 = load i64, ptr %6, align 8 store i64 0, ptr %6, align 8 %exitcond183.not.i = icmp eq i64 %indvars.iv.next180.i, %wide.trip.count182.i %indvars.iv.next = add nuw i64 %indvars.iv, 1 br i1 %exitcond183.not.i, label %.preheader116.i, label %.lr.ph134.i, !llvm.loop !58 .preheader.i: ; preds = %._crit_edge151.i, %.preheader116.i - %.4.lcssa.i = phi i64 [ %85, %.preheader116.i ], [ %.7108.lcssa.i, %._crit_edge151.i ] + %.4.lcssa.i = phi i64 [ %80, %.preheader116.i ], [ %.7108.lcssa.i, %._crit_edge151.i ] %.not159.i = icmp eq i64 %.4.lcssa.i, 0 br i1 %.not159.i, label %_ZL17montgomery_squarePmS_S_mi.exit, label %.lr.ph161.i .lr.ph157.i: ; preds = %.preheader116.i, %._crit_edge151.i %indvars.iv193.i = phi i64 [ %indvars.iv.next194.i, %._crit_edge151.i ], [ %12, %.preheader116.i ] %indvars.iv184.i = phi i64 [ %indvars.iv.next185.i, %._crit_edge151.i ], [ 1, %.preheader116.i ] - %.4156.i = phi i64 [ %.7108.lcssa.i, %._crit_edge151.i ], [ %85, %.preheader116.i ] - %.4105155.i = phi i64 [ %136, %._crit_edge151.i ], [ %86, %.preheader116.i ] - %87 = sub nuw nsw i64 %indvars.iv193.i, %12 - %88 = add nuw nsw i64 %87, 1 - %89 = sub nsw i64 %12, %88 - %90 = trunc nsw i64 %89 to i32 - %91 = sdiv i32 %90, 2 - %92 = sext i32 %91 to i64 - %93 = add nsw i64 %88, %92 - %94 = icmp sgt i64 %89, 1 - br i1 %94, label %.lr.ph141.i, label %._crit_edge142.i + %.4156.i = phi i64 [ %.7108.lcssa.i, %._crit_edge151.i ], [ %80, %.preheader116.i ] + %.4105155.i = phi i64 [ %131, %._crit_edge151.i ], [ %81, %.preheader116.i ] + %82 = sub nuw nsw i64 %indvars.iv193.i, %12 + %83 = add nuw nsw i64 %82, 1 + %84 = sub nsw i64 %12, %83 + %85 = trunc nsw i64 %84 to i32 + %86 = sdiv i32 %85, 2 + %87 = sext i32 %86 to i64 + %88 = add nsw i64 %83, %87 + %89 = icmp sgt i64 %84, 1 + br i1 %89, label %.lr.ph141.i, label %._crit_edge142.i .lr.ph141.i: ; preds = %.lr.ph157.i, %.lr.ph141.i %indvars.iv186.i = phi i64 [ %indvars.iv.next187.i, %.lr.ph141.i ], [ %indvars.iv184.i, %.lr.ph157.i ] - %.5139.i = phi i64 [ %110, %.lr.ph141.i ], [ %.4156.i, %.lr.ph157.i ] - %.5106138.i = phi i64 [ %111, %.lr.ph141.i ], [ %.4105155.i, %.lr.ph157.i ] - %95 = load i64, ptr %6, align 8 - %96 = getelementptr inbounds nuw i64, ptr %15, i64 %indvars.iv186.i - %97 = load i64, ptr %96, align 8 - %98 = sub nsw i64 %indvars.iv193.i, %indvars.iv186.i - %99 = getelementptr inbounds i64, ptr %15, i64 %98 - %100 = load i64, ptr %99, align 8 - %101 = call { i64, i64, i64, i64 } asm "mul $5; add %rax, $2; adc %rdx, $3; adc $$0, $4; add %rax, $2; adc %rdx, $3; adc $$0, $4", "=&{dx},={ax},=r,=r,=*imr,r,{ax},2,3,4,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %6, i64 %97, i64 %100, i64 %.5139.i, i64 %.5106138.i, i64 %95) #14, !srcloc !59 - %102 = extractvalue { i64, i64, i64, i64 } %101, 2 - %103 = extractvalue { i64, i64, i64, i64 } %101, 3 - %104 = load i64, ptr %6, align 8 - %105 = getelementptr inbounds nuw i64, ptr %19, i64 %indvars.iv186.i - %106 = load i64, ptr %105, align 8 - %107 = getelementptr inbounds i64, ptr %16, i64 %98 - %108 = load i64, ptr %107, align 8 - %109 = call { i64, i64, i64, i64 } asm "mul $5; add %rax, $2; adc %rdx, $3; adc $$0, $4", "=&{dx},={ax},=r,=r,=*imr,r,{ax},2,3,4,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %6, i64 %106, i64 %108, i64 %102, i64 %103, i64 %104) #14, !srcloc !60 - %110 = extractvalue { i64, i64, i64, i64 } %109, 2 - %111 = extractvalue { i64, i64, i64, i64 } %109, 3 + %.5139.i = phi i64 [ %105, %.lr.ph141.i ], [ %.4156.i, %.lr.ph157.i ] + %.5106138.i = phi i64 [ %106, %.lr.ph141.i ], [ %.4105155.i, %.lr.ph157.i ] + %90 = load i64, ptr %6, align 8 + %91 = getelementptr inbounds nuw i64, ptr %15, i64 %indvars.iv186.i + %92 = load i64, ptr %91, align 8 + %93 = sub nsw i64 %indvars.iv193.i, %indvars.iv186.i + %94 = getelementptr inbounds i64, ptr %15, i64 %93 + %95 = load i64, ptr %94, align 8 + %96 = call { i64, i64, i64, i64 } asm "mul $5; add %rax, $2; adc %rdx, $3; adc $$0, $4; add %rax, $2; adc %rdx, $3; adc $$0, $4", "=&{dx},={ax},=r,=r,=*imr,r,{ax},2,3,4,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %6, i64 %92, i64 %95, i64 %.5139.i, i64 %.5106138.i, i64 %90) #14, !srcloc !59 + %97 = extractvalue { i64, i64, i64, i64 } %96, 2 + %98 = extractvalue { i64, i64, i64, i64 } %96, 3 + %99 = load i64, ptr %6, align 8 + %100 = getelementptr inbounds nuw i64, ptr %19, i64 %indvars.iv186.i + %101 = load i64, ptr %100, align 8 + %102 = getelementptr inbounds i64, ptr %16, i64 %93 + %103 = load i64, ptr %102, align 8 + %104 = call { i64, i64, i64, i64 } asm "mul $5; add %rax, $2; adc %rdx, $3; adc $$0, $4", "=&{dx},={ax},=r,=r,=*imr,r,{ax},2,3,4,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %6, i64 %101, i64 %103, i64 %97, i64 %98, i64 %99) #14, !srcloc !60 + %105 = extractvalue { i64, i64, i64, i64 } %104, 2 + %106 = extractvalue { i64, i64, i64, i64 } %104, 3 %indvars.iv.next187.i = add nuw nsw i64 %indvars.iv186.i, 1 - %112 = icmp slt i64 %indvars.iv.next187.i, %93 - br i1 %112, label %.lr.ph141.i, label %._crit_edge142.i, !llvm.loop !61 + %107 = icmp slt i64 %indvars.iv.next187.i, %88 + br i1 %107, label %.lr.ph141.i, label %._crit_edge142.i, !llvm.loop !61 ._crit_edge142.i: ; preds = %.lr.ph141.i, %.lr.ph157.i - %.0113.lcssa.in.i = phi i64 [ %88, %.lr.ph157.i ], [ %indvars.iv.next187.i, %.lr.ph141.i ] - %.5106.lcssa.i = phi i64 [ %.4105155.i, %.lr.ph157.i ], [ %111, %.lr.ph141.i ] - %.5.lcssa.i = phi i64 [ %.4156.i, %.lr.ph157.i ], [ %110, %.lr.ph141.i ] + %.0113.lcssa.in.i = phi i64 [ %83, %.lr.ph157.i ], [ %indvars.iv.next187.i, %.lr.ph141.i ] + %.5106.lcssa.i = phi i64 [ %.4105155.i, %.lr.ph157.i ], [ %106, %.lr.ph141.i ] + %.5.lcssa.i = phi i64 [ %.4156.i, %.lr.ph157.i ], [ %105, %.lr.ph141.i ] %.0113.lcssa.i = trunc i64 %.0113.lcssa.in.i to i32 - %113 = and i64 %indvars.iv193.i, 1 - %114 = icmp eq i64 %113, 0 - br i1 %114, label %115, label %123 + %108 = and i64 %indvars.iv193.i, 1 + %109 = icmp eq i64 %108, 0 + br i1 %109, label %110, label %118 -115: ; preds = %._crit_edge142.i - %116 = load i64, ptr %6, align 8 +110: ; preds = %._crit_edge142.i + %111 = load i64, ptr %6, align 8 %sext.i = shl i64 %.0113.lcssa.in.i, 32 - %117 = ashr exact i64 %sext.i, 29 - %118 = getelementptr inbounds i8, ptr %15, i64 %117 - %119 = load i64, ptr %118, align 8 - %120 = call { i64, i64, i64, i64 } asm "mul $5; add %rax, $2; adc %rdx, $3; adc $$0, $4", "=&{dx},={ax},=r,=r,=*imr,r,{ax},2,3,4,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %6, i64 %119, i64 %119, i64 %.5.lcssa.i, i64 %.5106.lcssa.i, i64 %116) #14, !srcloc !62 - %121 = extractvalue { i64, i64, i64, i64 } %120, 2 - %122 = extractvalue { i64, i64, i64, i64 } %120, 3 - br label %123 - -123: ; preds = %115, %._crit_edge142.i - %.6107.i = phi i64 [ %122, %115 ], [ %.5106.lcssa.i, %._crit_edge142.i ] - %.6.i = phi i64 [ %121, %115 ], [ %.5.lcssa.i, %._crit_edge142.i ] - %124 = icmp sgt i32 %7, %.0113.lcssa.i - br i1 %124, label %.lr.ph150.preheader.i, label %._crit_edge151.i - -.lr.ph150.preheader.i: ; preds = %123 + %112 = ashr exact i64 %sext.i, 29 + %113 = getelementptr inbounds i8, ptr %15, i64 %112 + %114 = load i64, ptr %113, align 8 + %115 = call { i64, i64, i64, i64 } asm "mul $5; add %rax, $2; adc %rdx, $3; adc $$0, $4", "=&{dx},={ax},=r,=r,=*imr,r,{ax},2,3,4,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %6, i64 %114, i64 %114, i64 %.5.lcssa.i, i64 %.5106.lcssa.i, i64 %111) #14, !srcloc !62 + %116 = extractvalue { i64, i64, i64, i64 } %115, 2 + %117 = extractvalue { i64, i64, i64, i64 } %115, 3 + br label %118 + +118: ; preds = %110, %._crit_edge142.i + %.6107.i = phi i64 [ %117, %110 ], [ %.5106.lcssa.i, %._crit_edge142.i ] + %.6.i = phi i64 [ %116, %110 ], [ %.5.lcssa.i, %._crit_edge142.i ] + %119 = icmp sgt i32 %7, %.0113.lcssa.i + br i1 %119, label %.lr.ph150.preheader.i, label %._crit_edge151.i + +.lr.ph150.preheader.i: ; preds = %118 %sext197.i = shl i64 %.0113.lcssa.in.i, 32 - %125 = ashr exact i64 %sext197.i, 32 + %120 = ashr exact i64 %sext197.i, 32 br label %.lr.ph150.i .lr.ph150.i: ; preds = %.lr.ph150.i, %.lr.ph150.preheader.i - %indvars.iv189.i = phi i64 [ %125, %.lr.ph150.preheader.i ], [ %indvars.iv.next190.i, %.lr.ph150.i ] - %.7148.i = phi i64 [ %.6.i, %.lr.ph150.preheader.i ], [ %133, %.lr.ph150.i ] - %.7108147.i = phi i64 [ %.6107.i, %.lr.ph150.preheader.i ], [ %134, %.lr.ph150.i ] - %126 = load i64, ptr %6, align 8 - %127 = getelementptr inbounds i64, ptr %19, i64 %indvars.iv189.i - %128 = load i64, ptr %127, align 8 - %129 = sub nsw i64 %indvars.iv193.i, %indvars.iv189.i - %130 = getelementptr inbounds i64, ptr %16, i64 %129 - %131 = load i64, ptr %130, align 8 - %132 = call { i64, i64, i64, i64 } asm "mul $5; add %rax, $2; adc %rdx, $3; adc $$0, $4", "=&{dx},={ax},=r,=r,=*imr,r,{ax},2,3,4,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %6, i64 %128, i64 %131, i64 %.7148.i, i64 %.7108147.i, i64 %126) #14, !srcloc !63 - %133 = extractvalue { i64, i64, i64, i64 } %132, 2 - %134 = extractvalue { i64, i64, i64, i64 } %132, 3 + %indvars.iv189.i = phi i64 [ %120, %.lr.ph150.preheader.i ], [ %indvars.iv.next190.i, %.lr.ph150.i ] + %.7148.i = phi i64 [ %.6.i, %.lr.ph150.preheader.i ], [ %128, %.lr.ph150.i ] + %.7108147.i = phi i64 [ %.6107.i, %.lr.ph150.preheader.i ], [ %129, %.lr.ph150.i ] + %121 = load i64, ptr %6, align 8 + %122 = getelementptr inbounds i64, ptr %19, i64 %indvars.iv189.i + %123 = load i64, ptr %122, align 8 + %124 = sub nsw i64 %indvars.iv193.i, %indvars.iv189.i + %125 = getelementptr inbounds i64, ptr %16, i64 %124 + %126 = load i64, ptr %125, align 8 + %127 = call { i64, i64, i64, i64 } asm "mul $5; add %rax, $2; adc %rdx, $3; adc $$0, $4", "=&{dx},={ax},=r,=r,=*imr,r,{ax},2,3,4,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %6, i64 %123, i64 %126, i64 %.7148.i, i64 %.7108147.i, i64 %121) #14, !srcloc !63 + %128 = extractvalue { i64, i64, i64, i64 } %127, 2 + %129 = extractvalue { i64, i64, i64, i64 } %127, 3 %indvars.iv.next190.i = add nsw i64 %indvars.iv189.i, 1 %lftr.wideiv.i = trunc i64 %indvars.iv.next190.i to i32 %exitcond192.not.i = icmp eq i32 %7, %lftr.wideiv.i br i1 %exitcond192.not.i, label %._crit_edge151.i, label %.lr.ph150.i, !llvm.loop !64 -._crit_edge151.i: ; preds = %.lr.ph150.i, %123 - %.7108.lcssa.i = phi i64 [ %.6107.i, %123 ], [ %134, %.lr.ph150.i ] - %.7.lcssa.i = phi i64 [ %.6.i, %123 ], [ %133, %.lr.ph150.i ] - %135 = getelementptr inbounds nuw i64, ptr %19, i64 %87 - store i64 %.7.lcssa.i, ptr %135, align 8 - %136 = load i64, ptr %6, align 8 +._crit_edge151.i: ; preds = %.lr.ph150.i, %118 + %.7108.lcssa.i = phi i64 [ %.6107.i, %118 ], [ %129, %.lr.ph150.i ] + %.7.lcssa.i = phi i64 [ %.6.i, %118 ], [ %128, %.lr.ph150.i ] + %130 = getelementptr inbounds nuw i64, ptr %19, i64 %82 + store i64 %.7.lcssa.i, ptr %130, align 8 + %131 = load i64, ptr %6, align 8 store i64 0, ptr %6, align 8 %indvars.iv.next194.i = add nuw nsw i64 %indvars.iv193.i, 1 %indvars.iv.next185.i = add nuw nsw i64 %indvars.iv184.i, 1 @@ -8209,42 +8209,42 @@ _ZL13reverse_wordsPmS_i.exit36: ; preds = %.lr.ph.i32 br i1 %exitcond196.not.i, label %.preheader.i, label %.lr.ph157.i, !llvm.loop !65 .lr.ph161.i: ; preds = %.preheader.i, %.lr.ph161.i - %.8160.i = phi i64 [ %138, %.lr.ph161.i ], [ %.4.lcssa.i, %.preheader.i ] - %137 = call { i64, i64, i64 } asm sideeffect "clc; 0: ; mov ($4, $0, 8), $2; sbb $2, ($3, $0, 8); inc $0; dec $1; jne 0b; mov $5, $2; sbb $$0, $2; ", "=r,=r,=&r,r,r,r,0,1,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull %19, ptr nonnull %16, i64 range(i64 1, 0) %.8160.i, i64 0, i64 range(i64 -1073741824, 342) %12) #14, !srcloc !49 - %138 = extractvalue { i64, i64, i64 } %137, 2 - %.not.i = icmp eq i64 %138, 0 + %.8160.i = phi i64 [ %133, %.lr.ph161.i ], [ %.4.lcssa.i, %.preheader.i ] + %132 = call { i64, i64, i64 } asm sideeffect "clc; 0: ; mov ($4, $0, 8), $2; sbb $2, ($3, $0, 8); inc $0; dec $1; jne 0b; mov $5, $2; sbb $$0, $2; ", "=r,=r,=&r,r,r,r,0,1,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull %19, ptr nonnull %16, i64 range(i64 1, 0) %.8160.i, i64 0, i64 range(i64 -1073741824, 342) %12) #14, !srcloc !49 + %133 = extractvalue { i64, i64, i64 } %132, 2 + %.not.i = icmp eq i64 %133, 0 br i1 %.not.i, label %_ZL17montgomery_squarePmS_S_mi.exit, label %.lr.ph161.i, !llvm.loop !66 _ZL17montgomery_squarePmS_S_mi.exit: ; preds = %.lr.ph161.i, %.preheader.i call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) - br label %139 + br label %134 _ZL13reverse_wordsPmS_i.exit36.thread: ; preds = %11, %_ZL13reverse_wordsPmS_i.exit36 call fastcc void @_ZL19montgomery_multiplyPmS_S_S_mi(ptr noundef %15, ptr noundef %15, ptr noundef %16, ptr noundef %19, i64 noundef %3, i32 noundef %7) - br label %139 + br label %134 -139: ; preds = %_ZL13reverse_wordsPmS_i.exit36.thread, %_ZL17montgomery_squarePmS_S_mi.exit +134: ; preds = %_ZL13reverse_wordsPmS_i.exit36.thread, %_ZL17montgomery_squarePmS_S_mi.exit br i1 %20, label %.lr.ph.preheader.i40, label %_ZL13reverse_wordsPmS_i.exit45 -.lr.ph.preheader.i40: ; preds = %139 - %140 = zext nneg i32 %7 to i64 - %141 = getelementptr inbounds nuw i64, ptr %4, i64 %140 +.lr.ph.preheader.i40: ; preds = %134 + %135 = zext nneg i32 %7 to i64 + %136 = getelementptr inbounds nuw i64, ptr %4, i64 %135 br label %.lr.ph.i41 .lr.ph.i41: ; preds = %.lr.ph.i41, %.lr.ph.preheader.i40 - %.010.i42 = phi i32 [ %142, %.lr.ph.i41 ], [ %7, %.lr.ph.preheader.i40 ] - %.069.i43 = phi ptr [ %143, %.lr.ph.i41 ], [ %141, %.lr.ph.preheader.i40 ] - %.078.i44 = phi ptr [ %146, %.lr.ph.i41 ], [ %19, %.lr.ph.preheader.i40 ] - %142 = add nsw i32 %.010.i42, -1 - %143 = getelementptr inbounds i8, ptr %.069.i43, i64 -8 - %144 = load i64, ptr %.078.i44, align 8 - %145 = call noundef i64 @llvm.fshl.i64(i64 %144, i64 %144, i64 32) - store i64 %145, ptr %143, align 8 - %146 = getelementptr inbounds nuw i8, ptr %.078.i44, i64 8 - %147 = icmp samesign ugt i32 %.010.i42, 1 - br i1 %147, label %.lr.ph.i41, label %_ZL13reverse_wordsPmS_i.exit45, !llvm.loop !38 - -_ZL13reverse_wordsPmS_i.exit45: ; preds = %.lr.ph.i41, %139 + %.010.i42 = phi i32 [ %137, %.lr.ph.i41 ], [ %7, %.lr.ph.preheader.i40 ] + %.069.i43 = phi ptr [ %138, %.lr.ph.i41 ], [ %136, %.lr.ph.preheader.i40 ] + %.078.i44 = phi ptr [ %141, %.lr.ph.i41 ], [ %19, %.lr.ph.preheader.i40 ] + %137 = add nsw i32 %.010.i42, -1 + %138 = getelementptr inbounds i8, ptr %.069.i43, i64 -8 + %139 = load i64, ptr %.078.i44, align 8 + %140 = call noundef i64 @llvm.fshl.i64(i64 %139, i64 %139, i64 32) + store i64 %140, ptr %138, align 8 + %141 = getelementptr inbounds nuw i8, ptr %.078.i44, i64 8 + %142 = icmp samesign ugt i32 %.010.i42, 1 + br i1 %142, label %.lr.ph.i41, label %_ZL13reverse_wordsPmS_i.exit45, !llvm.loop !38 + +_ZL13reverse_wordsPmS_i.exit45: ; preds = %.lr.ph.i41, %134 ret void } diff --git a/bench/openssl/optimized/libcrypto-lib-rsa_pk1.ll b/bench/openssl/optimized/libcrypto-lib-rsa_pk1.ll index d766c6af97f..3d6ffbe5480 100644 --- a/bench/openssl/optimized/libcrypto-lib-rsa_pk1.ll +++ b/bench/openssl/optimized/libcrypto-lib-rsa_pk1.ll @@ -775,8 +775,8 @@ if.then53: ; preds = %if.end48 if.end54: ; preds = %if.end48 store i32 32, ptr %md_len, align 4 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 32 - %cmp55 = icmp samesign ugt i64 %indvars.iv.next, %0 - br i1 %cmp55, label %if.then57, label %if.else + %1 = icmp samesign ugt i64 %indvars.iv.next, %0 + br i1 %1, label %if.then57, label %if.else if.then57: ; preds = %if.end54 %call59 = call i32 @HMAC_Final(ptr noundef nonnull %call, ptr noundef nonnull %hmac_out, ptr noundef nonnull %md_len) #4 @@ -791,8 +791,8 @@ if.then62: ; preds = %if.then57 if.end63: ; preds = %if.then57 %add.ptr = getelementptr inbounds nuw i8, ptr %to, i64 %indvars.iv - %1 = sub nsw i64 %0, %indvars.iv - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %add.ptr, ptr nonnull align 16 %hmac_out, i64 %1, i1 false) + %2 = sub nsw i64 %0, %indvars.iv + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %add.ptr, ptr nonnull align 16 %hmac_out, i64 %2, i1 false) br label %for.inc if.else: ; preds = %if.end54 @@ -809,8 +809,8 @@ if.then71: ; preds = %if.else for.inc: ; preds = %if.end63, %if.else %inc = add i16 %iter.026, 1 - %cmp22 = icmp samesign ult i64 %indvars.iv.next, %0 - br i1 %cmp22, label %for.body, label %err, !llvm.loop !17 + %3 = icmp samesign ult i64 %indvars.iv.next, %0 + br i1 %3, label %for.body, label %err, !llvm.loop !17 err: ; preds = %for.inc, %if.then71, %if.then62, %if.then53, %if.then47, %if.then41, %if.then27, %if.then20, %if.then15, %if.then10 %ret.0 = phi i32 [ -1, %if.then10 ], [ -1, %if.then15 ], [ -1, %if.then20 ], [ -1, %if.then27 ], [ -1, %if.then41 ], [ -1, %if.then47 ], [ -1, %if.then53 ], [ -1, %if.then62 ], [ -1, %if.then71 ], [ 0, %for.inc ] diff --git a/bench/postgres/optimized/zic.ll b/bench/postgres/optimized/zic.ll index 43031e90f4c..a903fc5b143 100644 --- a/bench/postgres/optimized/zic.ll +++ b/bench/postgres/optimized/zic.ll @@ -826,23 +826,23 @@ oadd.exit.i: ; preds = %.thread.i adjleap.exit: ; preds = %255, %253, %237, %234, %203 %257 = load i32, ptr @optind, align 4 %258 = icmp slt i32 %257, %0 - br i1 %258, label %.lr.ph191.preheader, label %._crit_edge + br i1 %258, label %.lr.ph189.preheader, label %._crit_edge -.lr.ph191.preheader: ; preds = %adjleap.exit +.lr.ph189.preheader: ; preds = %adjleap.exit %259 = sext i32 %257 to i64 - br label %.lr.ph191 + br label %.lr.ph189 -.lr.ph191: ; preds = %.lr.ph191.preheader, %.lr.ph191 - %indvars.iv298 = phi i64 [ %259, %.lr.ph191.preheader ], [ %indvars.iv.next299, %.lr.ph191 ] - %260 = getelementptr ptr, ptr %1, i64 %indvars.iv298 +.lr.ph189: ; preds = %.lr.ph189.preheader, %.lr.ph189 + %indvars.iv294 = phi i64 [ %259, %.lr.ph189.preheader ], [ %indvars.iv.next295, %.lr.ph189 ] + %260 = getelementptr ptr, ptr %1, i64 %indvars.iv294 %261 = load ptr, ptr %260, align 8 tail call fastcc void @infile(ptr noundef %261) - %indvars.iv.next299 = add nsw i64 %indvars.iv298, 1 - %lftr.wideiv = trunc i64 %indvars.iv.next299 to i32 - %exitcond301.not = icmp eq i32 %0, %lftr.wideiv - br i1 %exitcond301.not, label %._crit_edge, label %.lr.ph191, !llvm.loop !9 + %indvars.iv.next295 = add nsw i64 %indvars.iv294, 1 + %lftr.wideiv = trunc i64 %indvars.iv.next295 to i32 + %exitcond297.not = icmp eq i32 %0, %lftr.wideiv + br i1 %exitcond297.not, label %._crit_edge, label %.lr.ph189, !llvm.loop !9 -._crit_edge: ; preds = %.lr.ph191, %adjleap.exit +._crit_edge: ; preds = %.lr.ph189, %adjleap.exit %.b5254 = load i1, ptr @errors, align 1 br i1 %.b5254, label %close_file.exit, label %262 @@ -1207,9 +1207,9 @@ change_directory.exit: ; preds = %associate.exit, %39 .preheader92: ; preds = %.preheader92.lr.ph, %outzone.exit %453 = phi i64 [ %408, %.preheader92.lr.ph ], [ %2140, %outzone.exit ] - %.043192 = phi i64 [ 0, %.preheader92.lr.ph ], [ %.041.lcssa, %outzone.exit ] + %.043190 = phi i64 [ 0, %.preheader92.lr.ph ], [ %.041.lcssa, %outzone.exit ] %454 = load ptr, ptr @zones, align 8 - %455 = add nsw i64 %.043192, 1 + %455 = add nsw i64 %.043190, 1 %smax = call i64 @llvm.smax.i64(i64 %453, i64 %455) %456 = add nsw i64 %smax, -1 br label %459 @@ -1217,12 +1217,12 @@ change_directory.exit: ; preds = %associate.exit, %39 .preheader91: ; preds = %outzone.exit, %change_directory.exit %457 = load i64, ptr @nlinks, align 8 %458 = icmp sgt i64 %457, 0 - br i1 %458, label %.lr.ph197, label %._crit_edge198 + br i1 %458, label %.lr.ph195, label %._crit_edge196 459: ; preds = %.preheader92, %460 - %.041.in = phi i64 [ %.041, %460 ], [ %.043192, %.preheader92 ] - %exitcond302.not = icmp eq i64 %.041.in, %456 - br i1 %exitcond302.not, label %.critedge, label %460 + %.041.in = phi i64 [ %.041, %460 ], [ %.043190, %.preheader92 ] + %exitcond298.not = icmp eq i64 %.041.in, %456 + br i1 %exitcond298.not, label %.critedge, label %460 460: ; preds = %459 %.041 = add nsw i64 %.041.in, 1 @@ -1233,8 +1233,8 @@ change_directory.exit: ; preds = %associate.exit, %39 .critedge: ; preds = %459, %460 %.041.lcssa = phi i64 [ %smax, %459 ], [ %.041, %460 ] - %464 = getelementptr %struct.zone, ptr %454, i64 %.043192 - %465 = sub i64 %.041.lcssa, %.043192 + %464 = getelementptr %struct.zone, ptr %454, i64 %.043190 + %465 = sub i64 %.041.lcssa, %.043190 call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %23) %466 = load i32, ptr @max_format_len, align 4 %467 = add i32 %466, 2 @@ -1296,19 +1296,19 @@ emalloc.exit337.i: ; preds = %emalloc.exit336.i br i1 %496, label %updateminmax.exit.sink.split.i, label %497 497: ; preds = %494 - %.not962.i = icmp eq i64 %495, 1970 - br i1 %.not962.i, label %updateminmax.exit.i, label %updateminmax.exit.sink.split.i + %.not956.i = icmp eq i64 %495, 1970 + br i1 %.not956.i, label %updateminmax.exit.i, label %updateminmax.exit.sink.split.i updateminmax.exit.sink.split.i: ; preds = %497, %494 %min_year.sink.i = phi ptr [ @min_year, %494 ], [ @max_year, %497 ] - %.ph956.i = phi i64 [ %495, %494 ], [ 1970, %497 ] - %.ph957.i = phi i64 [ 1970, %494 ], [ %495, %497 ] + %.ph950.i = phi i64 [ %495, %494 ], [ 1970, %497 ] + %.ph951.i = phi i64 [ 1970, %494 ], [ %495, %497 ] store i64 %495, ptr %min_year.sink.i, align 8 br label %updateminmax.exit.i updateminmax.exit.i: ; preds = %updateminmax.exit.sink.split.i, %497 - %498 = phi i64 [ 1970, %497 ], [ %.ph956.i, %updateminmax.exit.sink.split.i ] - %499 = phi i64 [ 1970, %497 ], [ %.ph957.i, %updateminmax.exit.sink.split.i ] + %498 = phi i64 [ 1970, %497 ], [ %.ph950.i, %updateminmax.exit.sink.split.i ] + %499 = phi i64 [ 1970, %497 ], [ %.ph951.i, %updateminmax.exit.sink.split.i ] %500 = load i64, ptr @leapmaxyear, align 8 %501 = add nsw i64 %500, 1 %502 = icmp sgt i64 %498, %501 @@ -1319,7 +1319,7 @@ updateminmax.exit.i: ; preds = %updateminmax.exit.s br label %504 504: ; preds = %503, %updateminmax.exit.i - %min_year.promoted656824.i = phi i64 [ %501, %503 ], [ %498, %updateminmax.exit.i ] + %min_year.promoted654820.i = phi i64 [ %501, %503 ], [ %498, %updateminmax.exit.i ] %.not449.i = icmp sgt i64 %499, %500 br i1 %.not449.i, label %updateminmax.exit338.i, label %505 @@ -1328,28 +1328,28 @@ updateminmax.exit.i: ; preds = %updateminmax.exit.s br label %updateminmax.exit338.i updateminmax.exit338.i: ; preds = %505, %504, %emalloc.exit337.i - %min_year.promoted656.i = phi i64 [ %min_year.promoted656824.i, %505 ], [ %min_year.promoted656824.i, %504 ], [ 1970, %emalloc.exit337.i ] - %max_year.promoted666.i = phi i64 [ %501, %505 ], [ %499, %504 ], [ 1970, %emalloc.exit337.i ] + %min_year.promoted654.i = phi i64 [ %min_year.promoted654820.i, %505 ], [ %min_year.promoted654820.i, %504 ], [ 1970, %emalloc.exit337.i ] + %max_year.promoted664.i = phi i64 [ %501, %505 ], [ %499, %504 ], [ 1970, %emalloc.exit337.i ] %506 = icmp sgt i64 %465, 0 - br i1 %506, label %.lr.ph678.i, label %._crit_edge679.i + br i1 %506, label %.lr.ph676.i, label %._crit_edge677.i -.lr.ph678.i: ; preds = %updateminmax.exit338.i +.lr.ph676.i: ; preds = %updateminmax.exit338.i %507 = add nsw i64 %465, -1 br label %508 -508: ; preds = %._crit_edge.i86, %.lr.ph678.i - %.0269677.i = phi i64 [ 0, %.lr.ph678.i ], [ %561, %._crit_edge.i86 ] - %.0300676.i = phi i1 [ %493, %.lr.ph678.i ], [ %.1301.lcssa.i, %._crit_edge.i86 ] - %min_year.promoted665675.i = phi i64 [ %min_year.promoted656.i, %.lr.ph678.i ], [ %min_year.promoted657.i, %._crit_edge.i86 ] - %max_year.promoted667674.i = phi i64 [ %max_year.promoted666.i, %.lr.ph678.i ], [ %max_year.promoted668.i, %._crit_edge.i86 ] - %509 = getelementptr %struct.zone, ptr %464, i64 %.0269677.i - %510 = icmp slt i64 %.0269677.i, %507 +508: ; preds = %._crit_edge.i86, %.lr.ph676.i + %.0269675.i = phi i64 [ 0, %.lr.ph676.i ], [ %561, %._crit_edge.i86 ] + %.0300674.i = phi i1 [ %493, %.lr.ph676.i ], [ %.1301.lcssa.i, %._crit_edge.i86 ] + %min_year.promoted663673.i = phi i64 [ %min_year.promoted654.i, %.lr.ph676.i ], [ %min_year.promoted655.i, %._crit_edge.i86 ] + %max_year.promoted665672.i = phi i64 [ %max_year.promoted664.i, %.lr.ph676.i ], [ %max_year.promoted666.i, %._crit_edge.i86 ] + %509 = getelementptr %struct.zone, ptr %464, i64 %.0269675.i + %510 = icmp slt i64 %.0269675.i, %507 br i1 %510, label %511, label %updateminmax.exit339.i 511: ; preds = %508 %512 = getelementptr inbounds nuw i8, ptr %509, i64 104 %513 = load i64, ptr %512, align 8 - %514 = icmp sgt i64 %min_year.promoted665675.i, %513 + %514 = icmp sgt i64 %min_year.promoted663673.i, %513 br i1 %514, label %515, label %516 515: ; preds = %511 @@ -1357,8 +1357,8 @@ updateminmax.exit338.i: ; preds = %505, %504, %emalloc br label %516 516: ; preds = %515, %511 - %min_year.promoted664.i = phi i64 [ %513, %515 ], [ %min_year.promoted665675.i, %511 ] - %517 = icmp slt i64 %max_year.promoted667674.i, %513 + %min_year.promoted662.i = phi i64 [ %513, %515 ], [ %min_year.promoted663673.i, %511 ] + %517 = icmp slt i64 %max_year.promoted665672.i, %513 br i1 %517, label %518, label %updateminmax.exit339.i 518: ; preds = %516 @@ -1366,8 +1366,8 @@ updateminmax.exit338.i: ; preds = %505, %504, %emalloc br label %updateminmax.exit339.i updateminmax.exit339.i: ; preds = %518, %516, %508 - %max_year.promoted673.i = phi i64 [ %513, %518 ], [ %max_year.promoted667674.i, %516 ], [ %max_year.promoted667674.i, %508 ] - %min_year.promoted663.i = phi i64 [ %min_year.promoted664.i, %518 ], [ %min_year.promoted664.i, %516 ], [ %min_year.promoted665675.i, %508 ] + %max_year.promoted671.i = phi i64 [ %513, %518 ], [ %max_year.promoted665672.i, %516 ], [ %max_year.promoted665672.i, %508 ] + %min_year.promoted661.i = phi i64 [ %min_year.promoted662.i, %518 ], [ %min_year.promoted662.i, %516 ], [ %min_year.promoted663673.i, %508 ] %519 = getelementptr inbounds nuw i8, ptr %509, i64 72 %520 = load i64, ptr %519, align 8 %521 = icmp sgt i64 %520, 0 @@ -1379,13 +1379,13 @@ updateminmax.exit339.i: ; preds = %518, %516, %508 br label %524 524: ; preds = %.thread.i88, %.lr.ph.i87 - %max_year.promoted672.i = phi i64 [ %max_year.promoted673.i, %.lr.ph.i87 ], [ %max_year.promoted669.i, %.thread.i88 ] - %min_year.promoted662.i = phi i64 [ %min_year.promoted663.i, %.lr.ph.i87 ], [ %min_year.promoted658.i, %.thread.i88 ] - %.0272655.i = phi i64 [ 0, %.lr.ph.i87 ], [ %560, %.thread.i88 ] - %.1301654.i = phi i1 [ %.0300676.i, %.lr.ph.i87 ], [ %.2302.i, %.thread.i88 ] - %525 = phi i64 [ %min_year.promoted663.i, %.lr.ph.i87 ], [ %559, %.thread.i88 ] - %526 = phi i64 [ %max_year.promoted673.i, %.lr.ph.i87 ], [ %558, %.thread.i88 ] - %527 = getelementptr %struct.rule, ptr %523, i64 %.0272655.i + %max_year.promoted670.i = phi i64 [ %max_year.promoted671.i, %.lr.ph.i87 ], [ %max_year.promoted667.i, %.thread.i88 ] + %min_year.promoted660.i = phi i64 [ %min_year.promoted661.i, %.lr.ph.i87 ], [ %min_year.promoted656.i, %.thread.i88 ] + %.0272653.i = phi i64 [ 0, %.lr.ph.i87 ], [ %560, %.thread.i88 ] + %.1301652.i = phi i1 [ %.0300674.i, %.lr.ph.i87 ], [ %.2302.i, %.thread.i88 ] + %525 = phi i64 [ %min_year.promoted661.i, %.lr.ph.i87 ], [ %559, %.thread.i88 ] + %526 = phi i64 [ %max_year.promoted671.i, %.lr.ph.i87 ], [ %558, %.thread.i88 ] + %527 = getelementptr %struct.rule, ptr %523, i64 %.0272653.i %528 = getelementptr inbounds nuw i8, ptr %527, i64 40 %529 = load i8, ptr %528, align 8 %530 = trunc i8 %529 to i1 @@ -1402,7 +1402,7 @@ updateminmax.exit339.i: ; preds = %518, %516, %508 br label %536 536: ; preds = %535, %531 - %min_year.promoted661.i = phi i64 [ %533, %535 ], [ %min_year.promoted662.i, %531 ] + %min_year.promoted659.i = phi i64 [ %533, %535 ], [ %min_year.promoted660.i, %531 ] %537 = phi i64 [ %533, %535 ], [ %525, %531 ] %538 = icmp slt i64 %526, %533 br i1 %538, label %539, label %updateminmax.exit340.i @@ -1412,7 +1412,7 @@ updateminmax.exit339.i: ; preds = %518, %516, %508 br label %updateminmax.exit340.i updateminmax.exit340.i: ; preds = %539, %536 - %max_year.promoted671.i = phi i64 [ %533, %539 ], [ %max_year.promoted672.i, %536 ] + %max_year.promoted669.i = phi i64 [ %533, %539 ], [ %max_year.promoted670.i, %536 ] %540 = phi i64 [ %533, %539 ], [ %526, %536 ] %541 = getelementptr inbounds nuw i8, ptr %527, i64 41 %542 = load i8, ptr %541, align 1 @@ -1426,8 +1426,8 @@ updateminmax.exit340.thread.i: ; preds = %524 br i1 %546, label %547, label %.thread.i88 547: ; preds = %updateminmax.exit340.thread.i, %updateminmax.exit340.i - %max_year.promoted670.i = phi i64 [ %max_year.promoted672.i, %updateminmax.exit340.thread.i ], [ %max_year.promoted671.i, %updateminmax.exit340.i ] - %min_year.promoted660.i = phi i64 [ %min_year.promoted662.i, %updateminmax.exit340.thread.i ], [ %min_year.promoted661.i, %updateminmax.exit340.i ] + %max_year.promoted668.i = phi i64 [ %max_year.promoted670.i, %updateminmax.exit340.thread.i ], [ %max_year.promoted669.i, %updateminmax.exit340.i ] + %min_year.promoted658.i = phi i64 [ %min_year.promoted660.i, %updateminmax.exit340.thread.i ], [ %min_year.promoted659.i, %updateminmax.exit340.i ] %548 = phi i64 [ %526, %updateminmax.exit340.thread.i ], [ %540, %updateminmax.exit340.i ] %549 = phi i64 [ %525, %updateminmax.exit340.thread.i ], [ %537, %updateminmax.exit340.i ] %550 = getelementptr inbounds nuw i8, ptr %527, i64 32 @@ -1440,7 +1440,7 @@ updateminmax.exit340.thread.i: ; preds = %524 br label %554 554: ; preds = %553, %547 - %min_year.promoted659.i = phi i64 [ %551, %553 ], [ %min_year.promoted660.i, %547 ] + %min_year.promoted657.i = phi i64 [ %551, %553 ], [ %min_year.promoted658.i, %547 ] %555 = phi i64 [ %551, %553 ], [ %549, %547 ] %556 = icmp slt i64 %548, %551 br i1 %556, label %557, label %.thread.i88 @@ -1450,24 +1450,24 @@ updateminmax.exit340.thread.i: ; preds = %524 br label %.thread.i88 .thread.i88: ; preds = %557, %554, %updateminmax.exit340.thread.i, %updateminmax.exit340.i - %max_year.promoted669.i = phi i64 [ %max_year.promoted672.i, %updateminmax.exit340.thread.i ], [ %max_year.promoted671.i, %updateminmax.exit340.i ], [ %max_year.promoted670.i, %554 ], [ %551, %557 ] - %min_year.promoted658.i = phi i64 [ %min_year.promoted662.i, %updateminmax.exit340.thread.i ], [ %min_year.promoted661.i, %updateminmax.exit340.i ], [ %min_year.promoted659.i, %554 ], [ %min_year.promoted659.i, %557 ] + %max_year.promoted667.i = phi i64 [ %max_year.promoted670.i, %updateminmax.exit340.thread.i ], [ %max_year.promoted669.i, %updateminmax.exit340.i ], [ %max_year.promoted668.i, %554 ], [ %551, %557 ] + %min_year.promoted656.i = phi i64 [ %min_year.promoted660.i, %updateminmax.exit340.thread.i ], [ %min_year.promoted659.i, %updateminmax.exit340.i ], [ %min_year.promoted657.i, %554 ], [ %min_year.promoted657.i, %557 ] %558 = phi i64 [ %526, %updateminmax.exit340.thread.i ], [ %540, %updateminmax.exit340.i ], [ %548, %554 ], [ %551, %557 ] %559 = phi i64 [ %525, %updateminmax.exit340.thread.i ], [ %537, %updateminmax.exit340.i ], [ %555, %554 ], [ %555, %557 ] - %.2302.i = phi i1 [ %.1301654.i, %updateminmax.exit340.thread.i ], [ false, %updateminmax.exit340.i ], [ false, %554 ], [ false, %557 ] - %560 = add nuw nsw i64 %.0272655.i, 1 + %.2302.i = phi i1 [ %.1301652.i, %updateminmax.exit340.thread.i ], [ false, %updateminmax.exit340.i ], [ false, %554 ], [ false, %557 ] + %560 = add nuw nsw i64 %.0272653.i, 1 %exitcond.not.i89 = icmp eq i64 %560, %520 br i1 %exitcond.not.i89, label %._crit_edge.i86, label %524, !llvm.loop !18 ._crit_edge.i86: ; preds = %.thread.i88, %updateminmax.exit339.i - %max_year.promoted668.i = phi i64 [ %max_year.promoted673.i, %updateminmax.exit339.i ], [ %max_year.promoted669.i, %.thread.i88 ] - %min_year.promoted657.i = phi i64 [ %min_year.promoted663.i, %updateminmax.exit339.i ], [ %min_year.promoted658.i, %.thread.i88 ] - %.1301.lcssa.i = phi i1 [ %.0300676.i, %updateminmax.exit339.i ], [ %.2302.i, %.thread.i88 ] - %561 = add nuw nsw i64 %.0269677.i, 1 - %exitcond818.not.i = icmp eq i64 %561, %465 - br i1 %exitcond818.not.i, label %._crit_edge679.i, label %508, !llvm.loop !19 - -._crit_edge679.i: ; preds = %._crit_edge.i86, %updateminmax.exit338.i + %max_year.promoted666.i = phi i64 [ %max_year.promoted671.i, %updateminmax.exit339.i ], [ %max_year.promoted667.i, %.thread.i88 ] + %min_year.promoted655.i = phi i64 [ %min_year.promoted661.i, %updateminmax.exit339.i ], [ %min_year.promoted656.i, %.thread.i88 ] + %.1301.lcssa.i = phi i1 [ %.0300674.i, %updateminmax.exit339.i ], [ %.2302.i, %.thread.i88 ] + %561 = add nuw nsw i64 %.0269675.i, 1 + %exitcond814.not.i = icmp eq i64 %561, %465 + br i1 %exitcond814.not.i, label %._crit_edge677.i, label %508, !llvm.loop !19 + +._crit_edge677.i: ; preds = %._crit_edge.i86, %updateminmax.exit338.i %.0300.lcssa.i = phi i1 [ %493, %updateminmax.exit338.i ], [ %.1301.lcssa.i, %._crit_edge.i86 ] call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %21) call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %22) @@ -1476,7 +1476,7 @@ updateminmax.exit340.thread.i: ; preds = %524 %.not.i.i76 = icmp eq i64 %562, 9223372036854775807 br i1 %.not.i.i76, label %563, label %stringzone.exit.i -563: ; preds = %._crit_edge679.i +563: ; preds = %._crit_edge677.i %564 = getelementptr %struct.zone, ptr %454, i64 %.041.lcssa %565 = getelementptr i8, ptr %564, i64 -200 %566 = getelementptr i8, ptr %564, i64 -128 @@ -1915,8 +1915,8 @@ stringoffset.exit139.i.i: ; preds = %746, %741, %736 %spec.select125.i.i = call i32 @llvm.umax.i32(i32 %760, i32 %769) br label %stringzone.exit.i -stringzone.exit.i: ; preds = %585, %583, %772, %771, %762, %751, %703, %702, %662, %.thread158.i.i, %661, %._crit_edge191.i.i, %._crit_edge679.i - %.0102.i.i = phi i32 [ -1, %762 ], [ -1, %771 ], [ %spec.select125.i.i, %772 ], [ -1, %751 ], [ -1, %702 ], [ -1, %._crit_edge679.i ], [ -1, %662 ], [ -1, %.thread158.i.i ], [ 0, %703 ], [ -1, %._crit_edge191.i.i ], [ -1, %661 ], [ -1, %583 ], [ -1, %585 ] +stringzone.exit.i: ; preds = %585, %583, %772, %771, %762, %751, %703, %702, %662, %.thread158.i.i, %661, %._crit_edge191.i.i, %._crit_edge677.i + %.0102.i.i = phi i32 [ -1, %762 ], [ -1, %771 ], [ %spec.select125.i.i, %772 ], [ -1, %751 ], [ -1, %702 ], [ -1, %._crit_edge677.i ], [ -1, %662 ], [ -1, %.thread158.i.i ], [ 0, %703 ], [ -1, %._crit_edge191.i.i ], [ -1, %661 ], [ -1, %583 ], [ -1, %585 ] call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %21) call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %22) %773 = icmp sgt i32 %.0102.i.i, -1 @@ -1949,7 +1949,7 @@ stringzone.exit.i: ; preds = %585, %583, %772, %7 br label %783 783: ; preds = %780, %776, %stringzone.exit.i - %.pr.pre825.i = load i64, ptr @max_year, align 8 + %.pr.pre821.i = load i64, ptr @max_year, align 8 br i1 %773, label %thread-pre-split.i77, label %784 784: ; preds = %783 @@ -1957,7 +1957,7 @@ stringzone.exit.i: ; preds = %585, %583, %772, %7 %786 = call i64 @llvm.smax.i64(i64 %785, i64 -9223372036854775406) %storemerge.i = add nsw i64 %786, -402 store i64 %storemerge.i, ptr @min_year, align 8 - %787 = call i64 @llvm.smin.i64(i64 %.pr.pre825.i, i64 9223372036854775405) + %787 = call i64 @llvm.smin.i64(i64 %.pr.pre821.i, i64 9223372036854775405) %storemerge324.i = add nsw i64 %787, 402 store i64 %storemerge324.i, ptr @max_year, align 8 br i1 %.0300.lcssa.i, label %788, label %thread-pre-split.i77 @@ -1968,7 +1968,7 @@ stringzone.exit.i: ; preds = %585, %583, %772, %7 br label %thread-pre-split.i77 thread-pre-split.i77: ; preds = %788, %784, %783, %.thread-pre-split_crit_edge.i - %789 = phi i64 [ %storemerge324.i, %784 ], [ 2302, %788 ], [ %.pr.pre.i, %.thread-pre-split_crit_edge.i ], [ %.pr.pre825.i, %783 ] + %789 = phi i64 [ %storemerge324.i, %784 ], [ 2302, %788 ], [ %.pr.pre.i, %.thread-pre-split_crit_edge.i ], [ %.pr.pre821.i, %783 ] %790 = load i32, ptr @bloat, align 4 %791 = icmp sgt i32 %790, -1 br i1 %791, label %792, label %799 @@ -1991,23 +1991,23 @@ thread-pre-split.i77: ; preds = %788, %784, %783, %. br label %799 799: ; preds = %798, %796, %thread-pre-split.i77 - br i1 %506, label %.lr.ph724.i, label %._crit_edge725.thread.i + br i1 %506, label %.lr.ph722.i, label %._crit_edge723.thread.i -.lr.ph724.i: ; preds = %799 +.lr.ph722.i: ; preds = %799 %800 = add nsw i64 %465, -1 br label %801 -801: ; preds = %tadd.exit393.i, %.lr.ph724.i - %.0267722.i = phi i32 [ -1, %.lr.ph724.i ], [ %.1268.i, %tadd.exit393.i ] - %.1270721.i = phi i64 [ 0, %.lr.ph724.i ], [ %1345, %tadd.exit393.i ] - %.0280720.i = phi i64 [ -1, %.lr.ph724.i ], [ %.1281.i, %tadd.exit393.i ] - %.0286719.i = phi i64 [ 0, %.lr.ph724.i ], [ %.1287.i, %tadd.exit393.i ] - %.0289718.i = phi i64 [ 0, %.lr.ph724.i ], [ %.1290.i, %tadd.exit393.i ] - %.0307717.i = phi i8 [ 0, %.lr.ph724.i ], [ %.1308.i, %tadd.exit393.i ] - %.0309716.i = phi i8 [ 0, %.lr.ph724.i ], [ %.1310.i, %tadd.exit393.i ] - %802 = getelementptr %struct.zone, ptr %464, i64 %.1270721.i - %.not833.i = icmp eq i64 %.1270721.i, 0 - br i1 %.not833.i, label %807, label %803 +801: ; preds = %tadd.exit393.i, %.lr.ph722.i + %.0267720.i = phi i32 [ -1, %.lr.ph722.i ], [ %.1268.i, %tadd.exit393.i ] + %.1270719.i = phi i64 [ 0, %.lr.ph722.i ], [ %1345, %tadd.exit393.i ] + %.0280718.i = phi i64 [ -1, %.lr.ph722.i ], [ %.1281.i, %tadd.exit393.i ] + %.0286717.i = phi i64 [ 0, %.lr.ph722.i ], [ %.1287.i, %tadd.exit393.i ] + %.0289716.i = phi i64 [ 0, %.lr.ph722.i ], [ %.1290.i, %tadd.exit393.i ] + %.0307715.i = phi i8 [ 0, %.lr.ph722.i ], [ %.1308.i, %tadd.exit393.i ] + %.0309714.i = phi i8 [ 0, %.lr.ph722.i ], [ %.1310.i, %tadd.exit393.i ] + %802 = getelementptr %struct.zone, ptr %464, i64 %.1270719.i + %.not829.i = icmp eq i64 %.1270719.i, 0 + br i1 %.not829.i, label %807, label %803 803: ; preds = %801 %804 = getelementptr i8, ptr %802, i64 -8 @@ -2018,7 +2018,7 @@ thread-pre-split.i77: ; preds = %788, %784, %783, %. 807: ; preds = %803, %801 %808 = phi i1 [ false, %801 ], [ %806, %803 ] %809 = zext i1 %808 to i8 - %810 = icmp slt i64 %.1270721.i, %800 + %810 = icmp slt i64 %.1270719.i, %800 br i1 %810, label %811, label %815 811: ; preds = %807 @@ -2073,22 +2073,22 @@ oadd.exit.i85: ; preds = %836, %833 %840 = add i64 %831, %826 %841 = load i8, ptr %827, align 1 %842 = trunc i8 %841 to i1 - %843 = trunc i8 %.0307717.i to i1 - %844 = trunc i8 %.0309716.i to i1 + %843 = trunc i8 %.0307715.i to i1 + %844 = trunc i8 %.0309714.i to i1 %845 = call fastcc i32 @addtype(i64 noundef %840, ptr noundef nonnull %473, i1 noundef zeroext %842, i1 noundef zeroext %843, i1 noundef zeroext %844) br i1 %808, label %846, label %.thread420.i 846: ; preds = %oadd.exit.i85 - call fastcc void @addtt(i64 noundef %.0286719.i, i32 noundef %845) + call fastcc void @addtt(i64 noundef %.0286717.i, i32 noundef %845) br label %.thread420.i 847: ; preds = %815 %848 = load i64, ptr @min_year, align 8 %849 = load i64, ptr @max_year, align 8 - %.not326691.i = icmp sgt i64 %848, %849 - br i1 %.not326691.i, label %._crit_edge702.i, label %.lr.ph701.i + %.not326689.i = icmp sgt i64 %848, %849 + br i1 %.not326689.i, label %._crit_edge700.i, label %.lr.ph699.i -.lr.ph701.i: ; preds = %847 +.lr.ph699.i: ; preds = %847 %850 = getelementptr inbounds nuw i8, ptr %802, i64 112 %851 = getelementptr inbounds nuw i8, ptr %802, i64 64 %852 = getelementptr inbounds nuw i8, ptr %802, i64 192 @@ -2099,35 +2099,35 @@ oadd.exit.i85: ; preds = %836, %833 %857 = getelementptr inbounds nuw i8, ptr %802, i64 48 br label %858 -858: ; preds = %._crit_edge688.thread.i, %.lr.ph701.i - %.0265699.i = phi ptr [ null, %.lr.ph701.i ], [ %.1266.i, %._crit_edge688.thread.i ] - %.3698.i = phi i32 [ %.0267722.i, %.lr.ph701.i ], [ %.4.i, %._crit_edge688.thread.i ] - %.1276697.i = phi i8 [ %809, %.lr.ph701.i ], [ %.4279.i, %._crit_edge688.thread.i ] - %.3283696.i = phi i64 [ %.0280720.i, %.lr.ph701.i ], [ %.4284.i, %._crit_edge688.thread.i ] - %.3292695.i = phi i64 [ %.0289718.i, %.lr.ph701.i ], [ %.5294.i, %._crit_edge688.thread.i ] - %.1297694.i = phi i64 [ 0, %.lr.ph701.i ], [ %.3299.i, %._crit_edge688.thread.i ] - %.0303693.i = phi i64 [ %848, %.lr.ph701.i ], [ %1272, %._crit_edge688.thread.i ] - %.1305692.i = phi i64 [ %817, %.lr.ph701.i ], [ %.2306.ph.i, %._crit_edge688.thread.i ] +858: ; preds = %._crit_edge686.thread.i, %.lr.ph699.i + %.0265697.i = phi ptr [ null, %.lr.ph699.i ], [ %.1266.i, %._crit_edge686.thread.i ] + %.3696.i = phi i32 [ %.0267720.i, %.lr.ph699.i ], [ %.4.i, %._crit_edge686.thread.i ] + %.1276695.i = phi i8 [ %809, %.lr.ph699.i ], [ %.4279.i, %._crit_edge686.thread.i ] + %.3283694.i = phi i64 [ %.0280718.i, %.lr.ph699.i ], [ %.4284.i, %._crit_edge686.thread.i ] + %.3292693.i = phi i64 [ %.0289716.i, %.lr.ph699.i ], [ %.5294.i, %._crit_edge686.thread.i ] + %.1297692.i = phi i64 [ 0, %.lr.ph699.i ], [ %.3299.i, %._crit_edge686.thread.i ] + %.0303691.i = phi i64 [ %848, %.lr.ph699.i ], [ %1272, %._crit_edge686.thread.i ] + %.1305690.i = phi i64 [ %817, %.lr.ph699.i ], [ %.2306.ph.i, %._crit_edge686.thread.i ] br i1 %810, label %859, label %862 859: ; preds = %858 %860 = load i64, ptr %850, align 8 - %861 = icmp sgt i64 %.0303693.i, %860 - br i1 %861, label %._crit_edge702.loopexit.i, label %862 + %861 = icmp sgt i64 %.0303691.i, %860 + br i1 %861, label %._crit_edge700.loopexit.i, label %862 862: ; preds = %859, %858 %863 = load i64, ptr %821, align 8 %864 = icmp sgt i64 %863, 0 - br i1 %864, label %.lr.ph683.i, label %.outer.i.preheader + br i1 %864, label %.lr.ph681.i, label %.outer.i.preheader -.lr.ph683.i: ; preds = %862 - %865 = icmp sle i64 %.0303693.i, %789 +.lr.ph681.i: ; preds = %862 + %865 = icmp sle i64 %.0303691.i, %789 br label %866 -866: ; preds = %889, %.lr.ph683.i - %.1273681.i = phi i64 [ 0, %.lr.ph683.i ], [ %890, %889 ] +866: ; preds = %889, %.lr.ph681.i + %.1273679.i = phi i64 [ 0, %.lr.ph681.i ], [ %890, %889 ] %867 = load ptr, ptr %851, align 8 - %868 = getelementptr %struct.rule, ptr %867, i64 %.1273681.i + %868 = getelementptr %struct.rule, ptr %867, i64 %.1273679.i %869 = load ptr, ptr %802, align 8 %870 = load i32, ptr %819, align 8 %871 = load ptr, ptr %868, align 8 @@ -2139,7 +2139,7 @@ oadd.exit.i85: ; preds = %836, %833 store i32 %873, ptr @rlinenum, align 4 %874 = getelementptr inbounds nuw i8, ptr %868, i64 24 %875 = load i64, ptr %874, align 8 - %.not.i84 = icmp slt i64 %.0303693.i, %875 + %.not.i84 = icmp slt i64 %.0303691.i, %875 br i1 %.not.i84, label %.thread407.i, label %877 .thread407.i: ; preds = %866 @@ -2150,14 +2150,14 @@ oadd.exit.i85: ; preds = %836, %833 877: ; preds = %866 %878 = getelementptr inbounds nuw i8, ptr %868, i64 32 %879 = load i64, ptr %878, align 8 - %880 = icmp sle i64 %.0303693.i, %879 + %880 = icmp sle i64 %.0303691.i, %879 %881 = getelementptr inbounds nuw i8, ptr %868, i64 96 %882 = zext i1 %880 to i8 store i8 %882, ptr %881, align 8 br i1 %880, label %883, label %889 883: ; preds = %877 - %884 = call fastcc i64 @rpytime(ptr noundef nonnull %868, i64 noundef %.0303693.i) + %884 = call fastcc i64 @rpytime(ptr noundef nonnull %868, i64 noundef %.0303691.i) %885 = getelementptr inbounds nuw i8, ptr %868, i64 104 store i64 %884, ptr %885, align 8 %886 = icmp slt i64 %884, 2147483648 @@ -2167,7 +2167,7 @@ oadd.exit.i85: ; preds = %836, %833 br label %889 889: ; preds = %883, %877, %.thread407.i - %890 = add nuw nsw i64 %.1273681.i, 1 + %890 = add nuw nsw i64 %.1273679.i, 1 %891 = load i64, ptr %821, align 8 %892 = icmp slt i64 %890, %891 br i1 %892, label %866, label %.outer.i.preheader, !llvm.loop !22 @@ -2201,7 +2201,7 @@ oadd.exit.i85: ; preds = %836, %833 903: ; preds = %900 %.not11.i.i83 = icmp eq i64 %895, -9223372036854775808 - br i1 %.not11.i.i83, label %tadd.exit.thread835.i, label %904 + br i1 %.not11.i.i83, label %tadd.exit.thread831.i, label %904 904: ; preds = %903 call void (ptr, ...) @error(ptr noundef nonnull @.str.57) @@ -2232,13 +2232,13 @@ tadd.exit.i82: ; preds = %910, %894 %913 = trunc i8 %912 to i1 br i1 %913, label %tadd.exit346.i, label %922 -tadd.exit.thread835.i: ; preds = %903 +tadd.exit.thread831.i: ; preds = %903 %914 = load i8, ptr %855, align 8 %915 = trunc i8 %914 to i1 %916 = sub i64 0, %.2298.i %917 = icmp slt i64 %916, 0 - %or.cond959.i = select i1 %915, i1 true, i1 %917 - br i1 %or.cond959.i, label %tadd.exit346.i, label %935 + %or.cond953.i = select i1 %915, i1 true, i1 %917 + br i1 %or.cond953.i, label %tadd.exit346.i, label %935 tadd.exit.thread.i: ; preds = %908 %918 = load i8, ptr %855, align 8 @@ -2281,31 +2281,31 @@ tadd.exit.thread.i: ; preds = %908 call void @exit(i32 noundef 1) #29 unreachable -935: ; preds = %930, %925, %tadd.exit.thread.i, %tadd.exit.thread835.i - %936 = phi i64 [ %923, %930 ], [ %923, %925 ], [ %920, %tadd.exit.thread.i ], [ %916, %tadd.exit.thread835.i ] - %.6295409413.i = phi i64 [ %.6295.i, %930 ], [ %.6295.i, %925 ], [ 9223372036854775807, %tadd.exit.thread.i ], [ -9223372036854775808, %tadd.exit.thread835.i ] +935: ; preds = %930, %925, %tadd.exit.thread.i, %tadd.exit.thread831.i + %936 = phi i64 [ %923, %930 ], [ %923, %925 ], [ %920, %tadd.exit.thread.i ], [ %916, %tadd.exit.thread831.i ] + %.6295409413.i = phi i64 [ %.6295.i, %930 ], [ %.6295.i, %925 ], [ 9223372036854775807, %tadd.exit.thread.i ], [ -9223372036854775808, %tadd.exit.thread831.i ] %937 = add i64 %.6295409413.i, %936 br label %tadd.exit346.i -tadd.exit346.i: ; preds = %935, %933, %928, %tadd.exit.thread.i, %tadd.exit.thread835.i, %tadd.exit.i82, %893 - %.5294.i = phi i64 [ %.6295.i, %tadd.exit.i82 ], [ %.4293.i, %893 ], [ 9223372036854775807, %tadd.exit.thread.i ], [ %937, %935 ], [ -9223372036854775808, %928 ], [ 9223372036854775807, %933 ], [ -9223372036854775808, %tadd.exit.thread835.i ] +tadd.exit346.i: ; preds = %935, %933, %928, %tadd.exit.thread.i, %tadd.exit.thread831.i, %tadd.exit.i82, %893 + %.5294.i = phi i64 [ %.6295.i, %tadd.exit.i82 ], [ %.4293.i, %893 ], [ 9223372036854775807, %tadd.exit.thread.i ], [ %937, %935 ], [ -9223372036854775808, %928 ], [ 9223372036854775807, %933 ], [ -9223372036854775808, %tadd.exit.thread831.i ] %938 = load i64, ptr %821, align 8 %939 = icmp sgt i64 %938, 0 - br i1 %939, label %.lr.ph687.i, label %._crit_edge688.thread.i + br i1 %939, label %.lr.ph685.i, label %._crit_edge686.thread.i -.lr.ph687.i: ; preds = %tadd.exit346.i, %997 +.lr.ph685.i: ; preds = %tadd.exit346.i, %997 %940 = phi i64 [ %998, %997 ], [ %938, %tadd.exit346.i ] - %.0261686.i = phi i64 [ %.1262.i, %997 ], [ 0, %tadd.exit346.i ] - %.0263685.i = phi i64 [ %.1264.i, %997 ], [ -1, %tadd.exit346.i ] - %.2274684.i = phi i64 [ %999, %997 ], [ 0, %tadd.exit346.i ] + %.0261684.i = phi i64 [ %.1262.i, %997 ], [ 0, %tadd.exit346.i ] + %.0263683.i = phi i64 [ %.1264.i, %997 ], [ -1, %tadd.exit346.i ] + %.2274682.i = phi i64 [ %999, %997 ], [ 0, %tadd.exit346.i ] %941 = load ptr, ptr %851, align 8 - %942 = getelementptr %struct.rule, ptr %941, i64 %.2274684.i + %942 = getelementptr %struct.rule, ptr %941, i64 %.2274682.i %943 = getelementptr inbounds nuw i8, ptr %942, i64 96 %944 = load i8, ptr %943, align 8 %945 = trunc i8 %944 to i1 br i1 %945, label %946, label %997 -946: ; preds = %.lr.ph687.i +946: ; preds = %.lr.ph685.i %947 = load ptr, ptr %802, align 8 %948 = load i32, ptr %819, align 8 %949 = load ptr, ptr %942, align 8 @@ -2382,13 +2382,13 @@ oadd.exit347.i: ; preds = %964, %961 tadd.exit351.i: ; preds = %980, %976 %984 = sub i64 %971, %.0260.i - %985 = icmp slt i64 %.0263685.i, 0 - %986 = icmp slt i64 %984, %.0261686.i + %985 = icmp slt i64 %.0263683.i, 0 + %986 = icmp slt i64 %984, %.0261684.i %or.cond329.i = select i1 %985, i1 true, i1 %986 br i1 %or.cond329.i, label %997, label %987 987: ; preds = %tadd.exit351.i - %988 = icmp eq i64 %984, %.0261686.i + %988 = icmp eq i64 %984, %.0261684.i br i1 %988, label %989, label %997 989: ; preds = %987 @@ -2396,7 +2396,7 @@ tadd.exit351.i: ; preds = %980, %976 store i32 %951, ptr @rlinenum, align 4 call void (ptr, ...) @warning(ptr noundef nonnull @.str.51, ptr noundef nonnull @.str.158) %990 = load ptr, ptr %851, align 8 - %991 = getelementptr %struct.rule, ptr %990, i64 %.0263685.i + %991 = getelementptr %struct.rule, ptr %990, i64 %.0263683.i %992 = load ptr, ptr %802, align 8 %993 = load i32, ptr %819, align 8 %994 = load ptr, ptr %991, align 8 @@ -2410,39 +2410,39 @@ tadd.exit351.i: ; preds = %980, %976 %.pre.i81 = load i64, ptr %821, align 8 br label %997 -997: ; preds = %989, %987, %tadd.exit351.i, %969, %.lr.ph687.i - %998 = phi i64 [ %940, %969 ], [ %.pre.i81, %989 ], [ %940, %987 ], [ %940, %.lr.ph687.i ], [ %940, %tadd.exit351.i ] - %.1264.i = phi i64 [ %.0263685.i, %969 ], [ %.0263685.i, %989 ], [ %.0263685.i, %987 ], [ %.0263685.i, %.lr.ph687.i ], [ %.2274684.i, %tadd.exit351.i ] - %.1262.i = phi i64 [ %.0261686.i, %969 ], [ %.0261686.i, %989 ], [ %.0261686.i, %987 ], [ %.0261686.i, %.lr.ph687.i ], [ %984, %tadd.exit351.i ] - %999 = add nuw nsw i64 %.2274684.i, 1 +997: ; preds = %989, %987, %tadd.exit351.i, %969, %.lr.ph685.i + %998 = phi i64 [ %940, %969 ], [ %.pre.i81, %989 ], [ %940, %987 ], [ %940, %.lr.ph685.i ], [ %940, %tadd.exit351.i ] + %.1264.i = phi i64 [ %.0263683.i, %969 ], [ %.0263683.i, %989 ], [ %.0263683.i, %987 ], [ %.0263683.i, %.lr.ph685.i ], [ %.2274682.i, %tadd.exit351.i ] + %.1262.i = phi i64 [ %.0261684.i, %969 ], [ %.0261684.i, %989 ], [ %.0261684.i, %987 ], [ %.0261684.i, %.lr.ph685.i ], [ %984, %tadd.exit351.i ] + %999 = add nuw nsw i64 %.2274682.i, 1 %1000 = icmp slt i64 %999, %998 - br i1 %1000, label %.lr.ph687.i, label %._crit_edge688.i, !llvm.loop !23 + br i1 %1000, label %.lr.ph685.i, label %._crit_edge686.i, !llvm.loop !23 -._crit_edge688.i: ; preds = %997 +._crit_edge686.i: ; preds = %997 %1001 = icmp slt i64 %.1264.i, 0 - br i1 %1001, label %._crit_edge688.thread.i, label %1002 + br i1 %1001, label %._crit_edge686.thread.i, label %1002 -1002: ; preds = %._crit_edge688.i +1002: ; preds = %._crit_edge686.i %1003 = load ptr, ptr %851, align 8 %1004 = getelementptr %struct.rule, ptr %1003, i64 %.1264.i %1005 = getelementptr inbounds nuw i8, ptr %1004, i64 96 store i8 0, ptr %1005, align 8 %.not327.i = icmp sge i64 %.1262.i, %.5294.i %or.cond331.not.i = select i1 %810, i1 %.not327.i, i1 false - br i1 %or.cond331.not.i, label %._crit_edge688.thread.i, label %1006 + br i1 %or.cond331.not.i, label %._crit_edge686.thread.i, label %1006 1006: ; preds = %1002 %1007 = getelementptr inbounds nuw i8, ptr %1004, i64 80 %1008 = load i64, ptr %1007, align 8 %1009 = trunc nuw i8 %.2277.i to i1 - %1010 = icmp eq i64 %.1262.i, %.0286719.i + %1010 = icmp eq i64 %.1262.i, %.0286717.i %or.cond332.i = select i1 %1009, i1 %1010, i1 false %.3278.i = select i1 %or.cond332.i, i8 0, i8 %.2277.i %1011 = trunc nuw i8 %.3278.i to i1 br i1 %1011, label %1012, label %1139 1012: ; preds = %1006 - %1013 = icmp slt i64 %.1262.i, %.0286719.i + %1013 = icmp slt i64 %.1262.i, %.0286717.i br i1 %1013, label %1014, label %1095 1014: ; preds = %1012 @@ -2570,13 +2570,13 @@ doabbr.exit.i: ; preds = %1069, %1066, %abbro br label %.outer.i .outer.i: ; preds = %.outer.i.preheader, %doabbr.exit.i - %.2306.ph.i = phi i64 [ %1024, %doabbr.exit.i ], [ %.1305692.i, %.outer.i.preheader ] - %.2298.ph.i = phi i64 [ %1008, %doabbr.exit.i ], [ %.1297694.i, %.outer.i.preheader ] - %.4293.ph.i = phi i64 [ %.5294.i, %doabbr.exit.i ], [ %.3292695.i, %.outer.i.preheader ] - %.4284.ph.i = phi i64 [ %.4284.i, %doabbr.exit.i ], [ %.3283696.i, %.outer.i.preheader ] - %.2277.ph.i = phi i8 [ 1, %doabbr.exit.i ], [ %.1276697.i, %.outer.i.preheader ] - %.4.ph.i = phi i32 [ %.4.i, %doabbr.exit.i ], [ %.3698.i, %.outer.i.preheader ] - %.1266.ph.i = phi ptr [ %.1266.i, %doabbr.exit.i ], [ %.0265699.i, %.outer.i.preheader ] + %.2306.ph.i = phi i64 [ %1024, %doabbr.exit.i ], [ %.1305690.i, %.outer.i.preheader ] + %.2298.ph.i = phi i64 [ %1008, %doabbr.exit.i ], [ %.1297692.i, %.outer.i.preheader ] + %.4293.ph.i = phi i64 [ %.5294.i, %doabbr.exit.i ], [ %.3292693.i, %.outer.i.preheader ] + %.4284.ph.i = phi i64 [ %.4284.i, %doabbr.exit.i ], [ %.3283694.i, %.outer.i.preheader ] + %.2277.ph.i = phi i8 [ 1, %doabbr.exit.i ], [ %.1276695.i, %.outer.i.preheader ] + %.4.ph.i = phi i32 [ %.4.i, %doabbr.exit.i ], [ %.3696.i, %.outer.i.preheader ] + %.1266.ph.i = phi ptr [ %.1266.i, %doabbr.exit.i ], [ %.0265697.i, %.outer.i.preheader ] %spec.select34.i.i363.i = call i64 @llvm.abs.i64(i64 %.2306.ph.i, i1 false) %1074 = srem i64 %spec.select34.i.i363.i, 60 %1075 = sdiv i64 %spec.select34.i.i363.i, 60 @@ -2710,11 +2710,11 @@ abbroffset.exit.i361.i: ; preds = %1127, %1126, %1122 doabbr.exit370.i: ; preds = %1134, %1131, %abbroffset.exit.i361.i call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) - %.pre827.i = load i64, ptr %1007, align 8 + %.pre823.i = load i64, ptr %1007, align 8 br label %1139 1139: ; preds = %doabbr.exit370.i, %oadd.exit357.i, %1095, %1006 - %1140 = phi i64 [ %1008, %1095 ], [ %1008, %oadd.exit357.i ], [ %.pre827.i, %doabbr.exit370.i ], [ %1008, %1006 ] + %1140 = phi i64 [ %1008, %1095 ], [ %1008, %oadd.exit357.i ], [ %.pre823.i, %doabbr.exit370.i ], [ %1008, %1006 ] %1141 = load ptr, ptr %802, align 8 %1142 = load i32, ptr %819, align 8 %1143 = load ptr, ptr %1004, align 8 @@ -2867,7 +2867,7 @@ oadd.exit384.i: ; preds = %1203, %1200 %1217 = getelementptr inbounds nuw i8, ptr %.1266.i, i64 32 %1218 = load i64, ptr %1217, align 8 %1219 = icmp eq i64 %1218, 9223372036854775807 - br i1 %1219, label %._crit_edge688.thread.i, label %1220 + br i1 %1219, label %._crit_edge686.thread.i, label %1220 1220: ; preds = %1216, %1212, %oadd.exit384.i %1221 = load i8, ptr %1148, align 2 @@ -2965,38 +2965,38 @@ addtt.exit.i: ; preds = %size_product.exit.i store i64 %1271, ptr @timecnt, align 8 br label %893 -._crit_edge688.thread.i: ; preds = %1216, %1002, %._crit_edge688.i, %tadd.exit346.i - %.3299.i = phi i64 [ %.2298.i, %._crit_edge688.i ], [ %1008, %1216 ], [ %.2298.i, %1002 ], [ %.2298.i, %tadd.exit346.i ] - %.4279.i = phi i8 [ %.2277.i, %._crit_edge688.i ], [ %.3278.i, %1216 ], [ %.2277.i, %1002 ], [ %.2277.i, %tadd.exit346.i ] - %1272 = add i64 %.0303693.i, 1 +._crit_edge686.thread.i: ; preds = %1216, %1002, %._crit_edge686.i, %tadd.exit346.i + %.3299.i = phi i64 [ %.2298.i, %._crit_edge686.i ], [ %1008, %1216 ], [ %.2298.i, %1002 ], [ %.2298.i, %tadd.exit346.i ] + %.4279.i = phi i8 [ %.2277.i, %._crit_edge686.i ], [ %.3278.i, %1216 ], [ %.2277.i, %1002 ], [ %.2277.i, %tadd.exit346.i ] + %1272 = add i64 %.0303691.i, 1 %1273 = load i64, ptr @max_year, align 8 %.not326.i = icmp sgt i64 %1272, %1273 - br i1 %.not326.i, label %._crit_edge702.loopexit.i, label %858, !llvm.loop !24 - -._crit_edge702.loopexit.i: ; preds = %._crit_edge688.thread.i, %859 - %.1305.lcssa.ph.i = phi i64 [ %.1305692.i, %859 ], [ %.2306.ph.i, %._crit_edge688.thread.i ] - %.1297.lcssa.ph.i = phi i64 [ %.1297694.i, %859 ], [ %.3299.i, %._crit_edge688.thread.i ] - %.3292.lcssa.ph.i = phi i64 [ %.3292695.i, %859 ], [ %.5294.i, %._crit_edge688.thread.i ] - %.3283.lcssa.ph.i = phi i64 [ %.3283696.i, %859 ], [ %.4284.i, %._crit_edge688.thread.i ] - %.1276.lcssa.ph.i = phi i8 [ %.1276697.i, %859 ], [ %.4279.i, %._crit_edge688.thread.i ] - %.3.lcssa.ph.i = phi i32 [ %.3698.i, %859 ], [ %.4.i, %._crit_edge688.thread.i ] + br i1 %.not326.i, label %._crit_edge700.loopexit.i, label %858, !llvm.loop !24 + +._crit_edge700.loopexit.i: ; preds = %._crit_edge686.thread.i, %859 + %.1305.lcssa.ph.i = phi i64 [ %.1305690.i, %859 ], [ %.2306.ph.i, %._crit_edge686.thread.i ] + %.1297.lcssa.ph.i = phi i64 [ %.1297692.i, %859 ], [ %.3299.i, %._crit_edge686.thread.i ] + %.3292.lcssa.ph.i = phi i64 [ %.3292693.i, %859 ], [ %.5294.i, %._crit_edge686.thread.i ] + %.3283.lcssa.ph.i = phi i64 [ %.3283694.i, %859 ], [ %.4284.i, %._crit_edge686.thread.i ] + %.1276.lcssa.ph.i = phi i8 [ %.1276695.i, %859 ], [ %.4279.i, %._crit_edge686.thread.i ] + %.3.lcssa.ph.i = phi i32 [ %.3696.i, %859 ], [ %.4.i, %._crit_edge686.thread.i ] %1274 = trunc nuw i8 %.1276.lcssa.ph.i to i1 br i1 %1274, label %1275, label %.thread420.i -._crit_edge702.i: ; preds = %847 +._crit_edge700.i: ; preds = %847 br i1 %808, label %.thread, label %.thread420.i -1275: ; preds = %._crit_edge702.loopexit.i +1275: ; preds = %._crit_edge700.loopexit.i %.pre = load i8, ptr %473, align 1 %1276 = icmp eq i8 %.pre, 0 br i1 %1276, label %.thread, label %.critedge.i -.thread: ; preds = %._crit_edge702.i, %1275 - %.1305.lcssa849.i321 = phi i64 [ %.1305.lcssa.ph.i, %1275 ], [ %817, %._crit_edge702.i ] - %.1297.lcssa850.i318 = phi i64 [ %.1297.lcssa.ph.i, %1275 ], [ 0, %._crit_edge702.i ] - %.3292.lcssa851.i316 = phi i64 [ %.3292.lcssa.ph.i, %1275 ], [ %.0289718.i, %._crit_edge702.i ] - %.3283.lcssa852.i314 = phi i64 [ %.3283.lcssa.ph.i, %1275 ], [ %.0280720.i, %._crit_edge702.i ] - %.3.lcssa853.i312 = phi i32 [ %.3.lcssa.ph.i, %1275 ], [ %.0267722.i, %._crit_edge702.i ] +.thread: ; preds = %._crit_edge700.i, %1275 + %.1305.lcssa845.i317 = phi i64 [ %.1305.lcssa.ph.i, %1275 ], [ %817, %._crit_edge700.i ] + %.1297.lcssa846.i314 = phi i64 [ %.1297.lcssa.ph.i, %1275 ], [ 0, %._crit_edge700.i ] + %.3292.lcssa847.i312 = phi i64 [ %.3292.lcssa.ph.i, %1275 ], [ %.0289716.i, %._crit_edge700.i ] + %.3283.lcssa848.i310 = phi i64 [ %.3283.lcssa.ph.i, %1275 ], [ %.0280718.i, %._crit_edge700.i ] + %.3.lcssa849.i308 = phi i32 [ %.3.lcssa.ph.i, %1275 ], [ %.0267720.i, %._crit_edge700.i ] %1277 = getelementptr inbounds nuw i8, ptr %802, i64 40 %1278 = load ptr, ptr %1277, align 8 %.not328.i = icmp eq ptr %1278, null @@ -3047,27 +3047,27 @@ thread-pre-split430.i: ; preds = %1282 br label %1294 1294: ; preds = %.critedge.i, %thread-pre-split430.i - %.1305.lcssa849.i320 = phi i64 [ %.1305.lcssa.ph.i, %.critedge.i ], [ %.1305.lcssa849.i321, %thread-pre-split430.i ] - %.1297.lcssa850.i319 = phi i64 [ %.1297.lcssa.ph.i, %.critedge.i ], [ %.1297.lcssa850.i318, %thread-pre-split430.i ] - %.3292.lcssa851.i317 = phi i64 [ %.3292.lcssa.ph.i, %.critedge.i ], [ %.3292.lcssa851.i316, %thread-pre-split430.i ] - %.3283.lcssa852.i315 = phi i64 [ %.3283.lcssa.ph.i, %.critedge.i ], [ %.3283.lcssa852.i314, %thread-pre-split430.i ] - %.3.lcssa853.i311 = phi i32 [ %.3.lcssa.ph.i, %.critedge.i ], [ %.3.lcssa853.i312, %thread-pre-split430.i ] + %.1305.lcssa845.i316 = phi i64 [ %.1305.lcssa.ph.i, %.critedge.i ], [ %.1305.lcssa845.i317, %thread-pre-split430.i ] + %.1297.lcssa846.i315 = phi i64 [ %.1297.lcssa.ph.i, %.critedge.i ], [ %.1297.lcssa846.i314, %thread-pre-split430.i ] + %.3292.lcssa847.i313 = phi i64 [ %.3292.lcssa.ph.i, %.critedge.i ], [ %.3292.lcssa847.i312, %thread-pre-split430.i ] + %.3283.lcssa848.i311 = phi i64 [ %.3283.lcssa.ph.i, %.critedge.i ], [ %.3283.lcssa848.i310, %thread-pre-split430.i ] + %.3.lcssa849.i307 = phi i32 [ %.3.lcssa.ph.i, %.critedge.i ], [ %.3.lcssa849.i308, %thread-pre-split430.i ] %1295 = load i64, ptr %816, align 8 - %1296 = icmp ne i64 %.1305.lcssa849.i320, %1295 - %1297 = trunc i8 %.0307717.i to i1 - %1298 = trunc i8 %.0309716.i to i1 - %1299 = call fastcc i32 @addtype(i64 noundef %.1305.lcssa849.i320, ptr noundef nonnull %473, i1 noundef zeroext %1296, i1 noundef zeroext %1297, i1 noundef zeroext %1298) - %1300 = icmp slt i32 %.3.lcssa853.i311, 0 - %spec.select334.i = select i1 %1296, i32 %.3.lcssa853.i311, i32 %1299 - %.7.i = select i1 %1300, i32 %spec.select334.i, i32 %.3.lcssa853.i311 - call fastcc void @addtt(i64 noundef %.0286719.i, i32 noundef %1299) + %1296 = icmp ne i64 %.1305.lcssa845.i316, %1295 + %1297 = trunc i8 %.0307715.i to i1 + %1298 = trunc i8 %.0309714.i to i1 + %1299 = call fastcc i32 @addtype(i64 noundef %.1305.lcssa845.i316, ptr noundef nonnull %473, i1 noundef zeroext %1296, i1 noundef zeroext %1297, i1 noundef zeroext %1298) + %1300 = icmp slt i32 %.3.lcssa849.i307, 0 + %spec.select334.i = select i1 %1296, i32 %.3.lcssa849.i307, i32 %1299 + %.7.i = select i1 %1300, i32 %spec.select334.i, i32 %.3.lcssa849.i307 + call fastcc void @addtt(i64 noundef %.0286717.i, i32 noundef %1299) br label %.thread420.i -.thread420.i: ; preds = %1294, %1291, %._crit_edge702.i, %._crit_edge702.loopexit.i, %846, %oadd.exit.i85 - %.2282429.i = phi i64 [ %.3283.lcssa852.i314, %1291 ], [ %.3283.lcssa852.i315, %1294 ], [ %.0280720.i, %._crit_edge702.i ], [ %.0280720.i, %846 ], [ %.0280720.i, %oadd.exit.i85 ], [ %.3283.lcssa.ph.i, %._crit_edge702.loopexit.i ] - %.2291428.i = phi i64 [ %.3292.lcssa851.i316, %1291 ], [ %.3292.lcssa851.i317, %1294 ], [ %.0289718.i, %._crit_edge702.i ], [ %.0289718.i, %846 ], [ %.0289718.i, %oadd.exit.i85 ], [ %.3292.lcssa.ph.i, %._crit_edge702.loopexit.i ] - %.0296427.i = phi i64 [ %.1297.lcssa850.i318, %1291 ], [ %.1297.lcssa850.i319, %1294 ], [ 0, %._crit_edge702.i ], [ %826, %846 ], [ %826, %oadd.exit.i85 ], [ %.1297.lcssa.ph.i, %._crit_edge702.loopexit.i ] - %.6.i = phi i32 [ %.3.lcssa853.i312, %1291 ], [ %.7.i, %1294 ], [ %.0267722.i, %._crit_edge702.i ], [ %.0267722.i, %846 ], [ %845, %oadd.exit.i85 ], [ %.3.lcssa.ph.i, %._crit_edge702.loopexit.i ] +.thread420.i: ; preds = %1294, %1291, %._crit_edge700.i, %._crit_edge700.loopexit.i, %846, %oadd.exit.i85 + %.2282429.i = phi i64 [ %.3283.lcssa848.i310, %1291 ], [ %.3283.lcssa848.i311, %1294 ], [ %.0280718.i, %._crit_edge700.i ], [ %.0280718.i, %846 ], [ %.0280718.i, %oadd.exit.i85 ], [ %.3283.lcssa.ph.i, %._crit_edge700.loopexit.i ] + %.2291428.i = phi i64 [ %.3292.lcssa847.i312, %1291 ], [ %.3292.lcssa847.i313, %1294 ], [ %.0289716.i, %._crit_edge700.i ], [ %.0289716.i, %846 ], [ %.0289716.i, %oadd.exit.i85 ], [ %.3292.lcssa.ph.i, %._crit_edge700.loopexit.i ] + %.0296427.i = phi i64 [ %.1297.lcssa846.i314, %1291 ], [ %.1297.lcssa846.i315, %1294 ], [ 0, %._crit_edge700.i ], [ %826, %846 ], [ %826, %oadd.exit.i85 ], [ %.1297.lcssa.ph.i, %._crit_edge700.loopexit.i ] + %.6.i = phi i32 [ %.3.lcssa849.i308, %1291 ], [ %.7.i, %1294 ], [ %.0267720.i, %._crit_edge700.i ], [ %.0267720.i, %846 ], [ %845, %oadd.exit.i85 ], [ %.3.lcssa.ph.i, %._crit_edge700.loopexit.i ] br i1 %810, label %1301, label %tadd.exit393.i 1301: ; preds = %.thread420.i @@ -3093,7 +3093,7 @@ thread-pre-split430.i: ; preds = %1282 1316: ; preds = %1313 %.not11.i388.i = icmp eq i64 %1309, -9223372036854775808 - br i1 %.not11.i388.i, label %tadd.exit389.thread855.i, label %1317 + br i1 %.not11.i388.i, label %tadd.exit389.thread851.i, label %1317 1317: ; preds = %1316 call void (ptr, ...) @error(ptr noundef nonnull @.str.57) @@ -3122,11 +3122,11 @@ tadd.exit389.i: ; preds = %1323, %1301 %.2288.i = phi i64 [ %1309, %1301 ], [ %1324, %1323 ] br i1 %1307, label %tadd.exit393.i, label %1329 -tadd.exit389.thread855.i: ; preds = %1316 +tadd.exit389.thread851.i: ; preds = %1316 %1325 = sub i64 0, %817 %1326 = icmp slt i64 %1325, 0 - %or.cond961.i = select i1 %1307, i1 true, i1 %1326 - br i1 %or.cond961.i, label %tadd.exit393.i, label %1342 + %or.cond955.i = select i1 %1307, i1 true, i1 %1326 + br i1 %or.cond955.i, label %tadd.exit393.i, label %1342 tadd.exit389.thread.i: ; preds = %1321 %1327 = sub i64 0, %817 @@ -3167,86 +3167,86 @@ tadd.exit389.thread.i: ; preds = %1321 call void @exit(i32 noundef 1) #29 unreachable -1342: ; preds = %1337, %1332, %tadd.exit389.thread.i, %tadd.exit389.thread855.i - %1343 = phi i64 [ %1330, %1337 ], [ %1330, %1332 ], [ %1327, %tadd.exit389.thread.i ], [ %1325, %tadd.exit389.thread855.i ] - %.2288433437.i = phi i64 [ %.2288.i, %1337 ], [ %.2288.i, %1332 ], [ 9223372036854775807, %tadd.exit389.thread.i ], [ -9223372036854775808, %tadd.exit389.thread855.i ] +1342: ; preds = %1337, %1332, %tadd.exit389.thread.i, %tadd.exit389.thread851.i + %1343 = phi i64 [ %1330, %1337 ], [ %1330, %1332 ], [ %1327, %tadd.exit389.thread.i ], [ %1325, %tadd.exit389.thread851.i ] + %.2288433437.i = phi i64 [ %.2288.i, %1337 ], [ %.2288.i, %1332 ], [ 9223372036854775807, %tadd.exit389.thread.i ], [ -9223372036854775808, %tadd.exit389.thread851.i ] %1344 = add i64 %.2288433437.i, %1343 br label %tadd.exit393.i -tadd.exit393.i: ; preds = %1342, %1340, %1335, %tadd.exit389.thread.i, %tadd.exit389.thread855.i, %tadd.exit389.i, %.thread420.i, %811 - %.1310.i = phi i8 [ %.0309716.i, %811 ], [ %1306, %tadd.exit389.i ], [ %.0309716.i, %.thread420.i ], [ %1306, %tadd.exit389.thread.i ], [ %1306, %1335 ], [ %1306, %1340 ], [ %1306, %1342 ], [ %1306, %tadd.exit389.thread855.i ] - %.1308.i = phi i8 [ %.0307717.i, %811 ], [ %1303, %tadd.exit389.i ], [ %.0307717.i, %.thread420.i ], [ %1303, %tadd.exit389.thread.i ], [ %1303, %1335 ], [ %1303, %1340 ], [ %1303, %1342 ], [ %1303, %tadd.exit389.thread855.i ] - %.1290.i = phi i64 [ %.0289718.i, %811 ], [ %.2291428.i, %tadd.exit389.i ], [ %.2291428.i, %.thread420.i ], [ %.2291428.i, %tadd.exit389.thread.i ], [ %.2291428.i, %1335 ], [ %.2291428.i, %1340 ], [ %.2291428.i, %1342 ], [ %.2291428.i, %tadd.exit389.thread855.i ] - %.1287.i = phi i64 [ %.0286719.i, %811 ], [ %.2288.i, %tadd.exit389.i ], [ %.0286719.i, %.thread420.i ], [ 9223372036854775807, %tadd.exit389.thread.i ], [ -9223372036854775808, %1335 ], [ 9223372036854775807, %1340 ], [ %1344, %1342 ], [ -9223372036854775808, %tadd.exit389.thread855.i ] - %.1281.i = phi i64 [ %.0280720.i, %811 ], [ %.2282429.i, %tadd.exit389.i ], [ %.2282429.i, %.thread420.i ], [ %.2282429.i, %tadd.exit389.thread.i ], [ %.2282429.i, %1335 ], [ %.2282429.i, %1340 ], [ %.2282429.i, %1342 ], [ %.2282429.i, %tadd.exit389.thread855.i ] - %.1268.i = phi i32 [ %.0267722.i, %811 ], [ %.6.i, %tadd.exit389.i ], [ %.6.i, %.thread420.i ], [ %.6.i, %tadd.exit389.thread.i ], [ %.6.i, %1335 ], [ %.6.i, %1340 ], [ %.6.i, %1342 ], [ %.6.i, %tadd.exit389.thread855.i ] - %1345 = add nuw nsw i64 %.1270721.i, 1 - %exitcond819.not.i = icmp eq i64 %1345, %465 - br i1 %exitcond819.not.i, label %._crit_edge725.i, label %801, !llvm.loop !25 - -._crit_edge725.i: ; preds = %tadd.exit393.i +tadd.exit393.i: ; preds = %1342, %1340, %1335, %tadd.exit389.thread.i, %tadd.exit389.thread851.i, %tadd.exit389.i, %.thread420.i, %811 + %.1310.i = phi i8 [ %.0309714.i, %811 ], [ %1306, %tadd.exit389.i ], [ %.0309714.i, %.thread420.i ], [ %1306, %tadd.exit389.thread.i ], [ %1306, %1335 ], [ %1306, %1340 ], [ %1306, %1342 ], [ %1306, %tadd.exit389.thread851.i ] + %.1308.i = phi i8 [ %.0307715.i, %811 ], [ %1303, %tadd.exit389.i ], [ %.0307715.i, %.thread420.i ], [ %1303, %tadd.exit389.thread.i ], [ %1303, %1335 ], [ %1303, %1340 ], [ %1303, %1342 ], [ %1303, %tadd.exit389.thread851.i ] + %.1290.i = phi i64 [ %.0289716.i, %811 ], [ %.2291428.i, %tadd.exit389.i ], [ %.2291428.i, %.thread420.i ], [ %.2291428.i, %tadd.exit389.thread.i ], [ %.2291428.i, %1335 ], [ %.2291428.i, %1340 ], [ %.2291428.i, %1342 ], [ %.2291428.i, %tadd.exit389.thread851.i ] + %.1287.i = phi i64 [ %.0286717.i, %811 ], [ %.2288.i, %tadd.exit389.i ], [ %.0286717.i, %.thread420.i ], [ 9223372036854775807, %tadd.exit389.thread.i ], [ -9223372036854775808, %1335 ], [ 9223372036854775807, %1340 ], [ %1344, %1342 ], [ -9223372036854775808, %tadd.exit389.thread851.i ] + %.1281.i = phi i64 [ %.0280718.i, %811 ], [ %.2282429.i, %tadd.exit389.i ], [ %.2282429.i, %.thread420.i ], [ %.2282429.i, %tadd.exit389.thread.i ], [ %.2282429.i, %1335 ], [ %.2282429.i, %1340 ], [ %.2282429.i, %1342 ], [ %.2282429.i, %tadd.exit389.thread851.i ] + %.1268.i = phi i32 [ %.0267720.i, %811 ], [ %.6.i, %tadd.exit389.i ], [ %.6.i, %.thread420.i ], [ %.6.i, %tadd.exit389.thread.i ], [ %.6.i, %1335 ], [ %.6.i, %1340 ], [ %.6.i, %1342 ], [ %.6.i, %tadd.exit389.thread851.i ] + %1345 = add nuw nsw i64 %.1270719.i, 1 + %exitcond815.not.i = icmp eq i64 %1345, %465 + br i1 %exitcond815.not.i, label %._crit_edge723.i, label %801, !llvm.loop !25 + +._crit_edge723.i: ; preds = %tadd.exit393.i %spec.store.select.i = call i32 @llvm.smax.i32(i32 %.1268.i, i32 0) %1346 = icmp sgt i64 %.1281.i, -1 - br i1 %1346, label %1347, label %._crit_edge725.thread.i + br i1 %1346, label %1347, label %._crit_edge723.thread.i -1347: ; preds = %._crit_edge725.i +1347: ; preds = %._crit_edge723.i %1348 = load ptr, ptr @attypes, align 8 %1349 = getelementptr %struct.attype, ptr %1348, i64 %.1281.i, i32 1 store i8 1, ptr %1349, align 8 - br label %._crit_edge725.thread.i + br label %._crit_edge723.thread.i -._crit_edge725.thread.i: ; preds = %1347, %._crit_edge725.i, %799 - %spec.store.select870.i = phi i32 [ %spec.store.select.i, %1347 ], [ %spec.store.select.i, %._crit_edge725.i ], [ 0, %799 ] - %.pre832.i = load i64, ptr @timecnt, align 8 +._crit_edge723.thread.i: ; preds = %1347, %._crit_edge723.i, %799 + %spec.store.select866.i = phi i32 [ %spec.store.select.i, %1347 ], [ %spec.store.select.i, %._crit_edge723.i ], [ 0, %799 ] + %.pre828.i = load i64, ptr @timecnt, align 8 br i1 %773, label %1382, label %1350 -1350: ; preds = %._crit_edge725.thread.i +1350: ; preds = %._crit_edge723.thread.i store i32 0, ptr %449, align 4 store i32 0, ptr %450, align 8 store i32 1, ptr %451, align 4 store i64 0, ptr %452, align 8 %1351 = load ptr, ptr @attypes, align 8 - %1352 = icmp sgt i64 %.pre832.i, 1 - br i1 %1352, label %.lr.ph731.preheader.i, label %._crit_edge732.i - -.lr.ph731.preheader.i: ; preds = %1350 - %.pre829.i = load i64, ptr %1351, align 8 - br label %.lr.ph731.i - -.lr.ph731.i: ; preds = %.lr.ph731.i, %.lr.ph731.preheader.i - %1353 = phi i64 [ %1357, %.lr.ph731.i ], [ %.pre829.i, %.lr.ph731.preheader.i ] - %.0729.i = phi ptr [ %spec.select335.i, %.lr.ph731.i ], [ %1351, %.lr.ph731.preheader.i ] - %.2271728.i = phi i64 [ %1358, %.lr.ph731.i ], [ 1, %.lr.ph731.preheader.i ] - %1354 = getelementptr %struct.attype, ptr %1351, i64 %.2271728.i + %1352 = icmp sgt i64 %.pre828.i, 1 + br i1 %1352, label %.lr.ph729.preheader.i, label %._crit_edge730.i + +.lr.ph729.preheader.i: ; preds = %1350 + %.pre825.i = load i64, ptr %1351, align 8 + br label %.lr.ph729.i + +.lr.ph729.i: ; preds = %.lr.ph729.i, %.lr.ph729.preheader.i + %1353 = phi i64 [ %1357, %.lr.ph729.i ], [ %.pre825.i, %.lr.ph729.preheader.i ] + %.0727.i = phi ptr [ %spec.select335.i, %.lr.ph729.i ], [ %1351, %.lr.ph729.preheader.i ] + %.2271726.i = phi i64 [ %1358, %.lr.ph729.i ], [ 1, %.lr.ph729.preheader.i ] + %1354 = getelementptr %struct.attype, ptr %1351, i64 %.2271726.i %1355 = load i64, ptr %1354, align 8 %1356 = icmp sgt i64 %1355, %1353 %1357 = call i64 @llvm.smax.i64(i64 %1355, i64 %1353) - %spec.select335.i = select i1 %1356, ptr %1354, ptr %.0729.i - %1358 = add nuw nsw i64 %.2271728.i, 1 - %exitcond820.not.i = icmp eq i64 %1358, %.pre832.i - br i1 %exitcond820.not.i, label %._crit_edge732.i, label %.lr.ph731.i, !llvm.loop !26 + %spec.select335.i = select i1 %1356, ptr %1354, ptr %.0727.i + %1358 = add nuw nsw i64 %.2271726.i, 1 + %exitcond816.not.i = icmp eq i64 %1358, %.pre828.i + br i1 %exitcond816.not.i, label %._crit_edge730.i, label %.lr.ph729.i, !llvm.loop !26 -._crit_edge732.i: ; preds = %.lr.ph731.i, %1350 - %.0.lcssa.i = phi ptr [ %1351, %1350 ], [ %spec.select335.i, %.lr.ph731.i ] +._crit_edge730.i: ; preds = %.lr.ph729.i, %1350 + %.0.lcssa.i = phi ptr [ %1351, %1350 ], [ %spec.select335.i, %.lr.ph729.i ] %.not325.i = icmp eq ptr %.0.lcssa.i, null br i1 %.not325.i, label %.thread444.i, label %1362 -.thread444.i: ; preds = %._crit_edge732.i +.thread444.i: ; preds = %._crit_edge730.i %1359 = load i64, ptr @max_year, align 8 %1360 = add nuw i64 %1359, 1 %1361 = call fastcc i64 @rpytime(ptr noundef nonnull %23, i64 noundef %1360) br label %1375 -1362: ; preds = %._crit_edge732.i +1362: ; preds = %._crit_edge730.i %1363 = load i64, ptr %.0.lcssa.i, align 8 %1364 = load i64, ptr @max_year, align 8 %1365 = add nsw i64 %1364, -1 %1366 = call fastcc i64 @rpytime(ptr noundef nonnull %23, i64 noundef %1365) %1367 = icmp slt i64 %1363, %1366 - br i1 %1367, label %1368, label %._crit_edge830.i + br i1 %1367, label %1368, label %._crit_edge826.i -._crit_edge830.i: ; preds = %1362 - %.pre831.i = load i64, ptr @timecnt, align 8 +._crit_edge826.i: ; preds = %1362 + %.pre827.i = load i64, ptr @timecnt, align 8 br label %1382 1368: ; preds = %1362 @@ -3260,7 +3260,7 @@ tadd.exit393.i: ; preds = %1342, %1340, %1335, 1375: ; preds = %1368, %.thread444.i %1376 = phi i64 [ %1371, %1368 ], [ %1361, %.thread444.i ] - %1377 = phi i32 [ %1374, %1368 ], [ %spec.store.select870.i, %.thread444.i ] + %1377 = phi i32 [ %1374, %1368 ], [ %spec.store.select866.i, %.thread444.i ] call fastcc void @addtt(i64 noundef %1376, i32 noundef %1377) %1378 = load ptr, ptr @attypes, align 8 %1379 = load i64, ptr @timecnt, align 8 @@ -3269,8 +3269,8 @@ tadd.exit393.i: ; preds = %1342, %1340, %1335, store i8 1, ptr %1381, align 8 br label %1382 -1382: ; preds = %1375, %._crit_edge830.i, %._crit_edge725.thread.i - %1383 = phi i64 [ %.pre831.i, %._crit_edge830.i ], [ %1379, %1375 ], [ %.pre832.i, %._crit_edge725.thread.i ] +1382: ; preds = %1375, %._crit_edge826.i, %._crit_edge723.thread.i + %1383 = phi i64 [ %.pre827.i, %._crit_edge826.i ], [ %1379, %1375 ], [ %.pre828.i, %._crit_edge723.thread.i ] %1384 = icmp slt i32 %.0102.i.i, 2013 %1385 = select i1 %1384, i8 50, i8 51 %1386 = getelementptr inbounds nuw i8, ptr %464, i64 16 @@ -3591,10 +3591,10 @@ thread-pre-split.i.i: ; preds = %1517, %1515, %1510, br i1 %exitcond797.not.i.i, label %.critedge.i.loopexit.i.i, label %.lr.ph.i.i.i, !llvm.loop !34 .critedge.i.loopexit.i.i: ; preds = %.lr.ph687.i.i, %.lr.ph.i.i.i - %.lcssa741.i = phi i64 [ %1529, %.lr.ph687.i.i ], [ %1535, %.lr.ph.i.i.i ] + %.lcssa737.i = phi i64 [ %1529, %.lr.ph687.i.i ], [ %1535, %.lr.ph.i.i.i ] %.ph852.i.i = phi i64 [ %1522, %.lr.ph687.i.i ], [ %1530, %.lr.ph.i.i.i ] %.pr.i.ph.i.i = phi i64 [ 0, %.lr.ph687.i.i ], [ %1531, %.lr.ph.i.i.i ] - %1537 = getelementptr i8, ptr %1399, i64 %.lcssa741.i + %1537 = getelementptr i8, ptr %1399, i64 %.lcssa737.i %1538 = load i8, ptr %1537, align 1, !noalias !31 %1539 = zext i8 %1538 to i32 br label %.critedge.i.i.i @@ -3603,7 +3603,7 @@ thread-pre-split.i.i: ; preds = %1517, %1515, %1510, %1540 = phi i64 [ %1525, %thread-pre-split.i.i ], [ %1525, %.lr.ph.i.preheader.i.i ], [ %1408, %thread-pre-split.thread.i.i ], [ %1525, %.critedge.i.loopexit.i.i ] %1541 = phi i64 [ %1524, %thread-pre-split.i.i ], [ %1524, %.lr.ph.i.preheader.i.i ], [ %1407, %thread-pre-split.thread.i.i ], [ %1524, %.critedge.i.loopexit.i.i ] %1542 = phi i32 [ %1523, %thread-pre-split.i.i ], [ %1523, %.lr.ph.i.preheader.i.i ], [ %1406, %thread-pre-split.thread.i.i ], [ %1523, %.critedge.i.loopexit.i.i ] - %.lcssa21.i.i.i = phi i32 [ %spec.store.select870.i, %thread-pre-split.i.i ], [ %spec.store.select870.i, %.lr.ph.i.preheader.i.i ], [ %spec.store.select870.i, %thread-pre-split.thread.i.i ], [ %1539, %.critedge.i.loopexit.i.i ] + %.lcssa21.i.i.i = phi i32 [ %spec.store.select866.i, %thread-pre-split.i.i ], [ %spec.store.select866.i, %.lr.ph.i.preheader.i.i ], [ %spec.store.select866.i, %thread-pre-split.thread.i.i ], [ %1539, %.critedge.i.loopexit.i.i ] %1543 = phi i64 [ 0, %thread-pre-split.i.i ], [ 0, %.lr.ph.i.preheader.i.i ], [ 0, %thread-pre-split.thread.i.i ], [ %.ph852.i.i, %.critedge.i.loopexit.i.i ] %.pr.i.i.i = phi i64 [ %1522, %thread-pre-split.i.i ], [ %1522, %.lr.ph.i.preheader.i.i ], [ 0, %thread-pre-split.thread.i.i ], [ %.pr.i.ph.i.i, %.critedge.i.loopexit.i.i ] %1544 = icmp sgt i32 %1542, 0 @@ -3668,8 +3668,8 @@ thread-pre-split.i.i.i: ; preds = %.critedge2.i.i.i %1564 = zext nneg i32 %.pr15.i.i.i to i64 br label %.lr.ph44.i.i.i -.lr.ph44.i.i.i: ; preds = %1571, %.lr.ph44.i.preheader.i.i - %indvars.iv.i.i = phi i64 [ %1564, %.lr.ph44.i.preheader.i.i ], [ %indvars.iv.next.i.i, %1571 ] +.lr.ph44.i.i.i: ; preds = %1572, %.lr.ph44.i.preheader.i.i + %indvars.iv.i.i = phi i64 [ %1564, %.lr.ph44.i.preheader.i.i ], [ %indvars.iv.next.i.i, %1572 ] %indvars.iv.next.i.i = add nsw i64 %indvars.iv.i.i, -1 %1565 = trunc nsw i64 %indvars.iv.next.i.i to i32 %1566 = add i32 %1553, %1565 @@ -3677,14 +3677,14 @@ thread-pre-split.i.i.i: ; preds = %.critedge2.i.i.i %1568 = getelementptr [50 x i64], ptr @trans, i64 0, i64 %1567 %1569 = load i64, ptr %1568, align 8, !noalias !31 %1570 = icmp slt i64 %1554, %1569 - br i1 %1570, label %1571, label %limitrange.exit.loopexit.split.loop.exit863.i.i + br i1 %1570, label %1571, label %limitrange.exit.i.i -1571: ; preds = %.lr.ph44.i.i.i - %1572 = icmp samesign ugt i64 %indvars.iv.i.i, 1 - br i1 %1572, label %.lr.ph44.i.i.i, label %limitrange.exit.i.i, !llvm.loop !37 +1572: ; preds = %.lr.ph44.i.i.i + %1573 = icmp samesign ugt i64 %indvars.iv.i.i, 1 + br i1 %1573, label %.lr.ph44.i.i.i, label %limitrange.exit.i.i, !llvm.loop !37 -limitrange.exit.loopexit.split.loop.exit863.i.i: ; preds = %.lr.ph44.i.i.i - %1573 = trunc nsw i64 %indvars.iv.i.i to i32 +limitrange.exit.i.i: ; preds = %.lr.ph44.i.i.i + %.sroa.12.1.i.i = trunc nsw i64 %indvars.iv.i.i to i32 br label %limitrange.exit.i.i limitrange.exit.i.i: ; preds = %1571, %limitrange.exit.loopexit.split.loop.exit863.i.i, %.critedge4.i.i.i, %.critedge2.i.i.i @@ -3719,10 +3719,10 @@ limitrange.exit.i.i: ; preds = %1571, %limitrange.e br i1 %1587, label %.lr.ph.i484.i.i, label %.critedge.i462.loopexit.i.i, !llvm.loop !34 .critedge.i462.loopexit.i.i: ; preds = %.lr.ph694.i.i, %.lr.ph.i484.i.i - %.lcssa739.i = phi i64 [ %1579, %.lr.ph694.i.i ], [ %1585, %.lr.ph.i484.i.i ] + %.lcssa736.i = phi i64 [ %1579, %.lr.ph694.i.i ], [ %1585, %.lr.ph.i484.i.i ] %.ph850.i.i = phi i64 [ %1575, %.lr.ph694.i.i ], [ %1580, %.lr.ph.i484.i.i ] %.pr.i464.ph.i.i = phi i64 [ 0, %.lr.ph694.i.i ], [ %1581, %.lr.ph.i484.i.i ] - %1588 = getelementptr i8, ptr %1399, i64 %.lcssa739.i + %1588 = getelementptr i8, ptr %1399, i64 %.lcssa736.i %1589 = load i8, ptr %1588, align 1, !noalias !38 %1590 = zext i8 %1589 to i32 br label %.critedge.i462.i.i @@ -3800,12 +3800,12 @@ limitrange.exit.i.i: ; preds = %1571, %limitrange.e %1622 = icmp samesign ugt i64 %indvars.iv800.i.i, 1 br i1 %1622, label %.lr.ph44.i473.i.i, label %limitrange.exit485.i.i, !llvm.loop !37 -limitrange.exit485.loopexit.split.loop.exit868.i.i: ; preds = %.lr.ph44.i473.i.i +1622: ; preds = %.lr.ph44.i473.i.i %1623 = trunc nsw i64 %indvars.iv800.i.i to i32 br label %limitrange.exit485.i.i -limitrange.exit485.i.i: ; preds = %1621, %limitrange.exit485.loopexit.split.loop.exit868.i.i, %.critedge4.i470.i.i - %.sroa.22622.0.i.i = phi i32 [ %.pr15.i468.i.i, %.critedge4.i470.i.i ], [ %1623, %limitrange.exit485.loopexit.split.loop.exit868.i.i ], [ 0, %1621 ] +limitrange.exit485.i.i: ; preds = %1621, %1622, %.critedge4.i470.i.i + %.sroa.22622.0.i.i = phi i32 [ %.pr15.i468.i.i, %.critedge4.i470.i.i ], [ %1623, %1622 ], [ 0, %1621 ] %1624 = call i32 @remove(ptr noundef %1387) #26 %1625 = icmp eq i32 %1624, 0 br i1 %1625, label %1635, label %1626 @@ -3860,7 +3860,7 @@ limitrange.exit485.i.i: ; preds = %1621, %limitrange.e %1650 = icmp ugt i64 %.sroa.12617.0.i.i, 4294967295 %1651 = icmp slt i64 %.sroa.12.1.i.i, 0 %invariant.gep745.i.i = getelementptr i8, ptr %1393, i64 8 - %1652 = and i32 %spec.store.select870.i, 255 + %1652 = and i32 %spec.store.select866.i, 255 %1653 = zext nneg i32 %1652 to i64 %1654 = getelementptr [256 x i8], ptr @desigidx, i64 0, i64 %1653 %1655 = getelementptr [256 x i64], ptr @utoffs, i64 0, i64 %1653 @@ -4994,10 +4994,10 @@ outzone.exit: ; preds = %.loopexit658.i.i %2141 = icmp slt i64 %.041.lcssa, %2140 br i1 %2141, label %.preheader92, label %.preheader91, !llvm.loop !59 -.lr.ph197: ; preds = %.preheader91, %.loopexit - %.144195 = phi i64 [ %2168, %.loopexit ], [ 0, %.preheader91 ] +.lr.ph195: ; preds = %.preheader91, %.loopexit + %.144193 = phi i64 [ %2168, %.loopexit ], [ 0, %.preheader91 ] %2142 = load ptr, ptr @links, align 8 - %2143 = getelementptr %struct.link, ptr %2142, i64 %.144195 + %2143 = getelementptr %struct.link, ptr %2142, i64 %.144193 %2144 = load ptr, ptr %2143, align 8 %2145 = getelementptr inbounds nuw i8, ptr %2143, i64 8 %2146 = load i32, ptr %2145, align 8 @@ -5013,50 +5013,50 @@ outzone.exit: ; preds = %.loopexit658.i.i %.b61 = load i1, ptr @noise, align 1 %2151 = load i64, ptr @nlinks, align 8 %2152 = icmp sgt i64 %2151, 0 - %or.cond200 = select i1 %.b61, i1 %2152, i1 false - br i1 %or.cond200, label %.lr.ph194.preheader, label %.loopexit - -.lr.ph194.preheader: ; preds = %.lr.ph197 - %.pre304 = load ptr, ptr @links, align 8 - br label %.lr.ph194 - -.lr.ph194: ; preds = %.lr.ph194.preheader, %2162 - %2153 = phi i64 [ %2163, %2162 ], [ %2151, %.lr.ph194.preheader ] - %2154 = phi ptr [ %2164, %2162 ], [ %.pre304, %.lr.ph194.preheader ] - %.142193 = phi i64 [ %2165, %2162 ], [ 0, %.lr.ph194.preheader ] - %2155 = getelementptr %struct.link, ptr %2154, i64 %.144195, i32 3 + %or.cond198 = select i1 %.b61, i1 %2152, i1 false + br i1 %or.cond198, label %.lr.ph192.preheader, label %.loopexit + +.lr.ph192.preheader: ; preds = %.lr.ph195 + %.pre300 = load ptr, ptr @links, align 8 + br label %.lr.ph192 + +.lr.ph192: ; preds = %.lr.ph192.preheader, %2162 + %2153 = phi i64 [ %2163, %2162 ], [ %2151, %.lr.ph192.preheader ] + %2154 = phi ptr [ %2164, %2162 ], [ %.pre300, %.lr.ph192.preheader ] + %.142191 = phi i64 [ %2165, %2162 ], [ 0, %.lr.ph192.preheader ] + %2155 = getelementptr %struct.link, ptr %2154, i64 %.144193, i32 3 %2156 = load ptr, ptr %2155, align 8 - %2157 = getelementptr %struct.link, ptr %2154, i64 %.142193, i32 2 + %2157 = getelementptr %struct.link, ptr %2154, i64 %.142191, i32 2 %2158 = load ptr, ptr %2157, align 8 %2159 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %2156, ptr noundef nonnull dereferenceable(1) %2158) #27 %2160 = icmp eq i32 %2159, 0 br i1 %2160, label %2161, label %2162 -2161: ; preds = %.lr.ph194 +2161: ; preds = %.lr.ph192 call void (ptr, ...) @warning(ptr noundef nonnull @.str.21) - %.pre303 = load ptr, ptr @links, align 8 - %.pre305 = load i64, ptr @nlinks, align 8 + %.pre299 = load ptr, ptr @links, align 8 + %.pre301 = load i64, ptr @nlinks, align 8 br label %2162 -2162: ; preds = %.lr.ph194, %2161 - %2163 = phi i64 [ %2153, %.lr.ph194 ], [ %.pre305, %2161 ] - %2164 = phi ptr [ %2154, %.lr.ph194 ], [ %.pre303, %2161 ] - %2165 = add nuw nsw i64 %.142193, 1 +2162: ; preds = %.lr.ph192, %2161 + %2163 = phi i64 [ %2153, %.lr.ph192 ], [ %.pre301, %2161 ] + %2164 = phi ptr [ %2154, %.lr.ph192 ], [ %.pre299, %2161 ] + %2165 = add nuw nsw i64 %.142191, 1 %2166 = icmp slt i64 %2165, %2163 - br i1 %2166, label %.lr.ph194, label %.loopexit, !llvm.loop !60 + br i1 %2166, label %.lr.ph192, label %.loopexit, !llvm.loop !60 -.loopexit: ; preds = %2162, %.lr.ph197 - %2167 = phi i64 [ %2151, %.lr.ph197 ], [ %2163, %2162 ] - %2168 = add nuw nsw i64 %.144195, 1 +.loopexit: ; preds = %2162, %.lr.ph195 + %2167 = phi i64 [ %2151, %.lr.ph195 ], [ %2163, %2162 ] + %2168 = add nuw nsw i64 %.144193, 1 %2169 = icmp slt i64 %2168, %2167 - br i1 %2169, label %.lr.ph197, label %._crit_edge198, !llvm.loop !61 + br i1 %2169, label %.lr.ph195, label %._crit_edge196, !llvm.loop !61 -._crit_edge198: ; preds = %.loopexit, %.preheader91 +._crit_edge196: ; preds = %.loopexit, %.preheader91 %2170 = load ptr, ptr @lcltime, align 8 %.not55 = icmp eq ptr %2170, null br i1 %.not55, label %2173, label %2171 -2171: ; preds = %._crit_edge198 +2171: ; preds = %._crit_edge196 store ptr @.str.22, ptr @filename, align 8 store i32 1, ptr @linenum, align 4 store ptr null, ptr @rfilename, align 8 @@ -5065,7 +5065,7 @@ outzone.exit: ; preds = %.loopexit658.i.i call fastcc void @dolink(ptr noundef nonnull %2170, ptr noundef %2172, i1 noundef zeroext true) br label %2173 -2173: ; preds = %2171, %._crit_edge198 +2173: ; preds = %2171, %._crit_edge196 %2174 = load ptr, ptr @psxrules, align 8 %.not56 = icmp eq ptr %2174, null br i1 %.not56, label %2176, label %2175 diff --git a/bench/qemu/optimized/block_qcow2-cluster.ll b/bench/qemu/optimized/block_qcow2-cluster.ll index 5ca6888cf15..8709b49730f 100644 --- a/bench/qemu/optimized/block_qcow2-cluster.ll +++ b/bench/qemu/optimized/block_qcow2-cluster.ll @@ -954,8 +954,8 @@ if.end32.i: ; preds = %if.then23.i, %if.el %55 = load i32, ptr %subclusters_per_cluster.i, align 4 %cmp35.i = icmp uge i32 %.pn.i, %55 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %cmp1.i = icmp samesign ult i64 %indvars.iv.next, %shr.i118 - %or.cond46.i = select i1 %cmp35.i, i1 %cmp1.i, i1 false + %56 = icmp samesign ult i64 %indvars.iv.next, %shr.i118 + %or.cond46.i = select i1 %cmp35.i, i1 %56, i1 false br i1 %or.cond46.i, label %for.body.i, label %count_contiguous_subclusters.exit, !llvm.loop !11 count_contiguous_subclusters.exit: ; preds = %if.else19.i, %if.then23.i, %if.end32.i @@ -971,13 +971,13 @@ if.then68: ; preds = %get_l2_bitmap.exit. if.end69: ; preds = %if.then12.i, %for.cond.preheader.i, %count_contiguous_subclusters.exit %retval.0.i129152 = phi i32 [ %retval.0.i129, %count_contiguous_subclusters.exit ], [ 0, %for.cond.preheader.i ], [ %retval.0.i30.i, %if.then12.i ] %l2_table_cache = getelementptr inbounds nuw i8, ptr %0, i64 80 - %56 = load ptr, ptr %l2_table_cache, align 8 - call void @qcow2_cache_put(ptr noundef %56, ptr noundef nonnull %l2_slice) #13 + %57 = load ptr, ptr %l2_table_cache, align 8 + call void @qcow2_cache_put(ptr noundef %57, ptr noundef nonnull %l2_slice) #13 %conv70 = zext nneg i32 %retval.0.i129152 to i64 %conv71 = zext i32 %conv1.i109 to i64 %add72 = add nuw nsw i64 %conv70, %conv71 - %57 = load i32, ptr %17, align 4 - %sh_prom73 = zext nneg i32 %57 to i64 + %58 = load i32, ptr %17, align 4 + %sh_prom73 = zext nneg i32 %58 to i64 %shl74 = shl i64 %add72, %sh_prom73 br label %out @@ -1001,8 +1001,8 @@ if.end85: ; preds = %out fail: ; preds = %if.then68, %if.then60, %if.then53, %if.then44, %if.then40 %l2_table_cache89 = getelementptr inbounds nuw i8, ptr %0, i64 80 - %58 = load ptr, ptr %l2_table_cache89, align 8 - call void @qcow2_cache_put(ptr noundef %58, ptr noundef nonnull %l2_slice) #13 + %59 = load ptr, ptr %l2_table_cache89, align 8 + call void @qcow2_cache_put(ptr noundef %59, ptr noundef nonnull %l2_slice) #13 br label %return return: ; preds = %if.end18, %fail, %if.end85, %if.then17 diff --git a/bench/raylib/optimized/raudio.ll b/bench/raylib/optimized/raudio.ll index bcee80c2d08..0286bae3b1e 100644 --- a/bench/raylib/optimized/raudio.ll +++ b/bench/raylib/optimized/raudio.ll @@ -81208,331 +81208,331 @@ drmp3d_DCT_II.exit: ; preds = %189 %198 = zext nneg i32 %2 to i64 br label %199 -199: ; preds = %._crit_edge, %drmp3d_synth.exit +198: ; preds = %._crit_edge, %drmp3d_synth.exit %indvars.iv39 = phi i64 [ 0, %._crit_edge ], [ %indvars.iv.next40, %drmp3d_synth.exit ] - %200 = getelementptr inbounds nuw float, ptr %1, i64 %indvars.iv39 - %201 = mul nsw i64 %indvars.iv39, %196 - %202 = getelementptr inbounds i16, ptr %4, i64 %201 + %199 = getelementptr inbounds nuw float, ptr %1, i64 %indvars.iv39 + %200 = mul nsw i64 %indvars.iv39, %196 + %201 = getelementptr inbounds i16, ptr %4, i64 %200 %.idx45 = shl nsw i64 %indvars.iv39, 8 - %203 = getelementptr inbounds nuw i8, ptr %5, i64 %.idx45 - %204 = getelementptr inbounds float, ptr %200, i64 %194 - %205 = getelementptr inbounds i16, ptr %202, i64 %195 - %206 = getelementptr inbounds nuw i8, ptr %203, i64 3840 - %207 = getelementptr inbounds nuw i8, ptr %200, i64 1152 - %208 = load float, ptr %207, align 4 - %209 = getelementptr inbounds nuw i8, ptr %203, i64 4080 - store float %208, ptr %209, align 4 - %210 = getelementptr inbounds nuw i8, ptr %204, i64 1152 - %211 = load float, ptr %210, align 4 - %212 = getelementptr inbounds nuw i8, ptr %203, i64 4084 - store float %211, ptr %212, align 4 - %213 = load float, ptr %200, align 4 - %214 = getelementptr inbounds nuw i8, ptr %203, i64 4088 - store float %213, ptr %214, align 4 - %215 = load float, ptr %204, align 4 - %216 = getelementptr inbounds nuw i8, ptr %203, i64 4092 - store float %215, ptr %216, align 4 - %217 = getelementptr inbounds nuw i8, ptr %200, i64 1156 - %218 = load float, ptr %217, align 4 - %219 = getelementptr inbounds nuw i8, ptr %203, i64 4336 - store float %218, ptr %219, align 4 - %220 = getelementptr inbounds nuw i8, ptr %204, i64 1156 - %221 = load float, ptr %220, align 4 - %222 = getelementptr inbounds nuw i8, ptr %203, i64 4340 - store float %221, ptr %222, align 4 - %223 = getelementptr inbounds nuw i8, ptr %200, i64 4 - %224 = load float, ptr %223, align 4 - %225 = getelementptr inbounds nuw i8, ptr %203, i64 4344 - store float %224, ptr %225, align 4 - %226 = getelementptr inbounds nuw i8, ptr %204, i64 4 - %227 = load float, ptr %226, align 4 - %228 = getelementptr inbounds nuw i8, ptr %203, i64 4348 - store float %227, ptr %228, align 4 - %229 = getelementptr inbounds nuw i8, ptr %203, i64 240 - %230 = getelementptr inbounds nuw i8, ptr %203, i64 244 - tail call fastcc void @drmp3d_synth_pair(ptr noundef %205, i32 noundef %3, ptr noundef %230) - %231 = getelementptr inbounds i16, ptr %205, i64 %196 - %232 = getelementptr inbounds nuw i8, ptr %203, i64 496 - %233 = getelementptr inbounds nuw i8, ptr %203, i64 500 - tail call fastcc void @drmp3d_synth_pair(ptr noundef %231, i32 noundef %3, ptr noundef %233) - tail call fastcc void @drmp3d_synth_pair(ptr noundef nonnull %202, i32 noundef %3, ptr noundef %229) - %234 = getelementptr inbounds i16, ptr %202, i64 %196 - tail call fastcc void @drmp3d_synth_pair(ptr noundef %234, i32 noundef %3, ptr noundef %232) - %invariant.gep.i = getelementptr inbounds nuw i8, ptr %203, i64 4096 - br label %235 + %202 = getelementptr inbounds nuw i8, ptr %5, i64 %.idx45 + %203 = getelementptr inbounds float, ptr %199, i64 %194 + %204 = getelementptr inbounds i16, ptr %201, i64 %195 + %205 = getelementptr inbounds nuw i8, ptr %202, i64 3840 + %206 = getelementptr inbounds nuw i8, ptr %199, i64 1152 + %207 = load float, ptr %206, align 4 + %208 = getelementptr inbounds nuw i8, ptr %202, i64 4080 + store float %207, ptr %208, align 4 + %209 = getelementptr inbounds nuw i8, ptr %203, i64 1152 + %210 = load float, ptr %209, align 4 + %211 = getelementptr inbounds nuw i8, ptr %202, i64 4084 + store float %210, ptr %211, align 4 + %212 = load float, ptr %199, align 4 + %213 = getelementptr inbounds nuw i8, ptr %202, i64 4088 + store float %212, ptr %213, align 4 + %214 = load float, ptr %203, align 4 + %215 = getelementptr inbounds nuw i8, ptr %202, i64 4092 + store float %214, ptr %215, align 4 + %216 = getelementptr inbounds nuw i8, ptr %199, i64 1156 + %217 = load float, ptr %216, align 4 + %218 = getelementptr inbounds nuw i8, ptr %202, i64 4336 + store float %217, ptr %218, align 4 + %219 = getelementptr inbounds nuw i8, ptr %203, i64 1156 + %220 = load float, ptr %219, align 4 + %221 = getelementptr inbounds nuw i8, ptr %202, i64 4340 + store float %220, ptr %221, align 4 + %222 = getelementptr inbounds nuw i8, ptr %199, i64 4 + %223 = load float, ptr %222, align 4 + %224 = getelementptr inbounds nuw i8, ptr %202, i64 4344 + store float %223, ptr %224, align 4 + %225 = getelementptr inbounds nuw i8, ptr %203, i64 4 + %226 = load float, ptr %225, align 4 + %227 = getelementptr inbounds nuw i8, ptr %202, i64 4348 + store float %226, ptr %227, align 4 + %228 = getelementptr inbounds nuw i8, ptr %202, i64 240 + %229 = getelementptr inbounds nuw i8, ptr %202, i64 244 + tail call fastcc void @drmp3d_synth_pair(ptr noundef %204, i32 noundef %3, ptr noundef %229) + %230 = getelementptr inbounds i16, ptr %204, i64 %196 + %231 = getelementptr inbounds nuw i8, ptr %202, i64 496 + %232 = getelementptr inbounds nuw i8, ptr %202, i64 500 + tail call fastcc void @drmp3d_synth_pair(ptr noundef %230, i32 noundef %3, ptr noundef %232) + tail call fastcc void @drmp3d_synth_pair(ptr noundef nonnull %201, i32 noundef %3, ptr noundef %228) + %233 = getelementptr inbounds i16, ptr %201, i64 %196 + tail call fastcc void @drmp3d_synth_pair(ptr noundef %233, i32 noundef %3, ptr noundef %231) + %invariant.gep.i = getelementptr inbounds nuw i8, ptr %202, i64 4096 + br label %234 -235: ; preds = %235, %199 - %indvars.iv.i31 = phi i64 [ 14, %199 ], [ %indvars.iv.next.i32, %235 ] - %.0460461.i = phi ptr [ @drmp3d_synth.g_win, %199 ], [ %410, %235 ] - %236 = sub nuw nsw i64 31, %indvars.iv.i31 - %237 = mul nuw nsw i64 %236, 18 - %238 = getelementptr inbounds nuw float, ptr %200, i64 %237 - %239 = load float, ptr %238, align 4 - %240 = shl nsw i64 %indvars.iv.i31, 2 - %241 = getelementptr inbounds nuw float, ptr %206, i64 %240 - store float %239, ptr %241, align 4 - %242 = getelementptr inbounds nuw float, ptr %204, i64 %237 - %243 = load float, ptr %242, align 4 - %244 = or disjoint i64 %240, 1 - %245 = getelementptr inbounds nuw float, ptr %206, i64 %244 - store float %243, ptr %245, align 4 - %246 = or disjoint i64 %237, 1 - %247 = getelementptr inbounds nuw float, ptr %200, i64 %246 - %248 = load float, ptr %247, align 4 - %249 = or disjoint i64 %240, 2 - %250 = getelementptr inbounds nuw float, ptr %206, i64 %249 - store float %248, ptr %250, align 4 - %251 = getelementptr inbounds nuw float, ptr %204, i64 %246 - %252 = load float, ptr %251, align 4 - %253 = or disjoint i64 %240, 3 - %254 = getelementptr inbounds nuw float, ptr %206, i64 %253 - store float %252, ptr %254, align 4 - %255 = mul nuw nsw i64 %indvars.iv.i31, 18 - %256 = add nuw nsw i64 %255, 18 - %257 = add nuw nsw i64 %255, 19 - %258 = getelementptr inbounds nuw float, ptr %200, i64 %257 - %259 = load float, ptr %258, align 4 - %gep.i = getelementptr inbounds nuw float, ptr %invariant.gep.i, i64 %240 - store float %259, ptr %gep.i, align 4 - %260 = getelementptr inbounds nuw float, ptr %204, i64 %257 - %261 = load float, ptr %260, align 4 - %262 = getelementptr inbounds nuw i8, ptr %241, i64 260 - store float %261, ptr %262, align 4 - %263 = getelementptr inbounds nuw float, ptr %200, i64 %256 - %264 = load float, ptr %263, align 4 - %265 = getelementptr i8, ptr %241, i64 -248 - store float %264, ptr %265, align 4 - %266 = getelementptr inbounds nuw float, ptr %204, i64 %256 - %267 = load float, ptr %266, align 4 - %268 = getelementptr i8, ptr %241, i64 -244 - store float %267, ptr %268, align 4 - %269 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 4 - %270 = load float, ptr %.0460461.i, align 4 - %271 = insertelement <4 x float> poison, float %270, i64 0 - %272 = shufflevector <4 x float> %271, <4 x float> poison, <4 x i32> zeroinitializer - %273 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 8 - %274 = load float, ptr %269, align 4 - %275 = insertelement <4 x float> poison, float %274, i64 0 - %276 = shufflevector <4 x float> %275, <4 x float> poison, <4 x i32> zeroinitializer - %277 = load <4 x float>, ptr %241, align 1 - %278 = getelementptr i8, ptr %241, i64 -3840 - %279 = load <4 x float>, ptr %278, align 1 - %280 = fmul <4 x float> %277, %276 - %281 = fmul <4 x float> %272, %279 - %282 = fadd <4 x float> %280, %281 - %283 = fmul <4 x float> %277, %272 - %284 = fmul <4 x float> %279, %276 - %285 = fsub <4 x float> %283, %284 - %286 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 12 - %287 = load float, ptr %273, align 4 - %288 = insertelement <4 x float> poison, float %287, i64 0 - %289 = shufflevector <4 x float> %288, <4 x float> poison, <4 x i32> zeroinitializer - %290 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 16 - %291 = load float, ptr %286, align 4 - %292 = insertelement <4 x float> poison, float %291, i64 0 - %293 = shufflevector <4 x float> %292, <4 x float> poison, <4 x i32> zeroinitializer - %294 = getelementptr i8, ptr %241, i64 -256 - %295 = load <4 x float>, ptr %294, align 1 - %296 = getelementptr i8, ptr %241, i64 -3584 - %297 = load <4 x float>, ptr %296, align 1 - %298 = fmul <4 x float> %295, %293 - %299 = fmul <4 x float> %289, %297 - %300 = fadd <4 x float> %298, %299 - %301 = fadd <4 x float> %282, %300 - %302 = fmul <4 x float> %297, %293 - %303 = fmul <4 x float> %295, %289 - %304 = fsub <4 x float> %302, %303 - %305 = fadd <4 x float> %285, %304 - %306 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 20 - %307 = load float, ptr %290, align 4 - %308 = insertelement <4 x float> poison, float %307, i64 0 - %309 = shufflevector <4 x float> %308, <4 x float> poison, <4 x i32> zeroinitializer - %310 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 24 - %311 = load float, ptr %306, align 4 - %312 = insertelement <4 x float> poison, float %311, i64 0 - %313 = shufflevector <4 x float> %312, <4 x float> poison, <4 x i32> zeroinitializer - %314 = getelementptr i8, ptr %241, i64 -512 - %315 = load <4 x float>, ptr %314, align 1 - %316 = getelementptr i8, ptr %241, i64 -3328 - %317 = load <4 x float>, ptr %316, align 1 - %318 = fmul <4 x float> %315, %313 - %319 = fmul <4 x float> %309, %317 - %320 = fadd <4 x float> %318, %319 - %321 = fadd <4 x float> %301, %320 - %322 = fmul <4 x float> %315, %309 - %323 = fmul <4 x float> %317, %313 - %324 = fsub <4 x float> %322, %323 - %325 = fadd <4 x float> %305, %324 - %326 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 28 - %327 = load float, ptr %310, align 4 - %328 = insertelement <4 x float> poison, float %327, i64 0 - %329 = shufflevector <4 x float> %328, <4 x float> poison, <4 x i32> zeroinitializer - %330 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 32 - %331 = load float, ptr %326, align 4 - %332 = insertelement <4 x float> poison, float %331, i64 0 - %333 = shufflevector <4 x float> %332, <4 x float> poison, <4 x i32> zeroinitializer - %334 = getelementptr i8, ptr %241, i64 -768 - %335 = load <4 x float>, ptr %334, align 1 - %336 = getelementptr i8, ptr %241, i64 -3072 - %337 = load <4 x float>, ptr %336, align 1 - %338 = fmul <4 x float> %335, %333 - %339 = fmul <4 x float> %329, %337 - %340 = fadd <4 x float> %338, %339 - %341 = fadd <4 x float> %321, %340 - %342 = fmul <4 x float> %337, %333 - %343 = fmul <4 x float> %335, %329 - %344 = fsub <4 x float> %342, %343 - %345 = fadd <4 x float> %325, %344 - %346 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 36 - %347 = load float, ptr %330, align 4 - %348 = insertelement <4 x float> poison, float %347, i64 0 - %349 = shufflevector <4 x float> %348, <4 x float> poison, <4 x i32> zeroinitializer - %350 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 40 - %351 = load float, ptr %346, align 4 - %352 = insertelement <4 x float> poison, float %351, i64 0 - %353 = shufflevector <4 x float> %352, <4 x float> poison, <4 x i32> zeroinitializer - %354 = getelementptr i8, ptr %241, i64 -1024 - %355 = load <4 x float>, ptr %354, align 1 - %356 = getelementptr i8, ptr %241, i64 -2816 - %357 = load <4 x float>, ptr %356, align 1 - %358 = fmul <4 x float> %355, %353 - %359 = fmul <4 x float> %349, %357 - %360 = fadd <4 x float> %358, %359 - %361 = fadd <4 x float> %341, %360 - %362 = fmul <4 x float> %355, %349 - %363 = fmul <4 x float> %357, %353 - %364 = fsub <4 x float> %362, %363 - %365 = fadd <4 x float> %345, %364 - %366 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 44 - %367 = load float, ptr %350, align 4 - %368 = insertelement <4 x float> poison, float %367, i64 0 - %369 = shufflevector <4 x float> %368, <4 x float> poison, <4 x i32> zeroinitializer - %370 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 48 - %371 = load float, ptr %366, align 4 - %372 = insertelement <4 x float> poison, float %371, i64 0 - %373 = shufflevector <4 x float> %372, <4 x float> poison, <4 x i32> zeroinitializer - %374 = getelementptr i8, ptr %241, i64 -1280 - %375 = load <4 x float>, ptr %374, align 1 - %376 = getelementptr i8, ptr %241, i64 -2560 - %377 = load <4 x float>, ptr %376, align 1 - %378 = fmul <4 x float> %375, %373 - %379 = fmul <4 x float> %369, %377 - %380 = fadd <4 x float> %378, %379 - %381 = fadd <4 x float> %361, %380 - %382 = fmul <4 x float> %377, %373 - %383 = fmul <4 x float> %375, %369 - %384 = fsub <4 x float> %382, %383 - %385 = fadd <4 x float> %365, %384 - %386 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 52 - %387 = load float, ptr %370, align 4 - %388 = insertelement <4 x float> poison, float %387, i64 0 - %389 = shufflevector <4 x float> %388, <4 x float> poison, <4 x i32> zeroinitializer - %390 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 56 - %391 = load float, ptr %386, align 4 - %392 = insertelement <4 x float> poison, float %391, i64 0 - %393 = shufflevector <4 x float> %392, <4 x float> poison, <4 x i32> zeroinitializer - %394 = getelementptr i8, ptr %241, i64 -1536 - %395 = load <4 x float>, ptr %394, align 1 - %396 = getelementptr i8, ptr %241, i64 -2304 - %397 = load <4 x float>, ptr %396, align 1 - %398 = fmul <4 x float> %395, %393 - %399 = fmul <4 x float> %389, %397 - %400 = fadd <4 x float> %398, %399 - %401 = fadd <4 x float> %381, %400 - %402 = fmul <4 x float> %395, %389 - %403 = fmul <4 x float> %397, %393 - %404 = fsub <4 x float> %402, %403 - %405 = fadd <4 x float> %385, %404 - %406 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 60 - %407 = load float, ptr %390, align 4 - %408 = insertelement <4 x float> poison, float %407, i64 0 - %409 = shufflevector <4 x float> %408, <4 x float> poison, <4 x i32> zeroinitializer - %410 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 64 - %411 = load float, ptr %406, align 4 - %412 = insertelement <4 x float> poison, float %411, i64 0 - %413 = shufflevector <4 x float> %412, <4 x float> poison, <4 x i32> zeroinitializer - %414 = getelementptr i8, ptr %241, i64 -1792 - %415 = load <4 x float>, ptr %414, align 1 - %416 = getelementptr i8, ptr %241, i64 -2048 - %417 = load <4 x float>, ptr %416, align 1 - %418 = fmul <4 x float> %415, %413 - %419 = fmul <4 x float> %409, %417 - %420 = fadd <4 x float> %418, %419 - %421 = fadd <4 x float> %401, %420 - %422 = fmul <4 x float> %417, %413 - %423 = fmul <4 x float> %415, %409 - %424 = fsub <4 x float> %422, %423 - %425 = fadd <4 x float> %405, %424 - %426 = tail call <4 x float> @llvm.x86.sse.min.ps(<4 x float> %425, <4 x float> splat (float 3.276700e+04)) - %427 = tail call <4 x float> @llvm.x86.sse.max.ps(<4 x float> %426, <4 x float> splat (float -3.276800e+04)) - %428 = tail call <4 x i32> @llvm.x86.sse2.cvtps2dq(<4 x float> %427) - %429 = tail call <4 x float> @llvm.x86.sse.min.ps(<4 x float> %421, <4 x float> splat (float 3.276700e+04)) - %430 = tail call <4 x float> @llvm.x86.sse.max.ps(<4 x float> %429, <4 x float> splat (float -3.276800e+04)) - %431 = tail call <4 x i32> @llvm.x86.sse2.cvtps2dq(<4 x float> %430) - %432 = tail call <8 x i16> @llvm.x86.sse2.packssdw.128(<4 x i32> %428, <4 x i32> %431) - %433 = extractelement <8 x i16> %432, i64 1 - %434 = sub nuw nsw i64 15, %indvars.iv.i31 - %435 = mul nsw i64 %434, %197 - %436 = getelementptr inbounds i16, ptr %205, i64 %435 - store i16 %433, ptr %436, align 2 - %437 = extractelement <8 x i16> %432, i64 5 - %438 = add nuw nsw i64 %indvars.iv.i31, 17 - %439 = mul nsw i64 %438, %197 - %440 = getelementptr inbounds i16, ptr %205, i64 %439 - store i16 %437, ptr %440, align 2 - %441 = extractelement <8 x i16> %432, i64 0 - %442 = getelementptr inbounds i16, ptr %202, i64 %435 - store i16 %441, ptr %442, align 2 - %443 = extractelement <8 x i16> %432, i64 4 - %444 = getelementptr inbounds i16, ptr %202, i64 %439 - store i16 %443, ptr %444, align 2 - %445 = extractelement <8 x i16> %432, i64 3 - %446 = sub nuw nsw i64 47, %indvars.iv.i31 - %447 = mul nsw i64 %446, %197 - %448 = getelementptr inbounds i16, ptr %205, i64 %447 - store i16 %445, ptr %448, align 2 - %449 = extractelement <8 x i16> %432, i64 7 - %450 = add nuw nsw i64 %indvars.iv.i31, 49 - %451 = mul nsw i64 %450, %197 - %452 = getelementptr inbounds i16, ptr %205, i64 %451 - store i16 %449, ptr %452, align 2 - %453 = extractelement <8 x i16> %432, i64 2 - %454 = getelementptr inbounds i16, ptr %202, i64 %447 - store i16 %453, ptr %454, align 2 - %455 = extractelement <8 x i16> %432, i64 6 - %456 = getelementptr inbounds i16, ptr %202, i64 %451 - store i16 %455, ptr %456, align 2 +234: ; preds = %234, %198 + %indvars.iv.i31 = phi i64 [ 14, %198 ], [ %indvars.iv.next.i32, %234 ] + %.0460461.i = phi ptr [ @drmp3d_synth.g_win, %198 ], [ %409, %234 ] + %235 = sub nuw nsw i64 31, %indvars.iv.i31 + %236 = mul nuw nsw i64 %235, 18 + %237 = getelementptr inbounds nuw float, ptr %199, i64 %236 + %238 = load float, ptr %237, align 4 + %239 = shl nsw i64 %indvars.iv.i31, 2 + %240 = getelementptr inbounds nuw float, ptr %205, i64 %239 + store float %238, ptr %240, align 4 + %241 = getelementptr inbounds nuw float, ptr %203, i64 %236 + %242 = load float, ptr %241, align 4 + %243 = or disjoint i64 %239, 1 + %244 = getelementptr inbounds nuw float, ptr %205, i64 %243 + store float %242, ptr %244, align 4 + %245 = or disjoint i64 %236, 1 + %246 = getelementptr inbounds nuw float, ptr %199, i64 %245 + %247 = load float, ptr %246, align 4 + %248 = or disjoint i64 %239, 2 + %249 = getelementptr inbounds nuw float, ptr %205, i64 %248 + store float %247, ptr %249, align 4 + %250 = getelementptr inbounds nuw float, ptr %203, i64 %245 + %251 = load float, ptr %250, align 4 + %252 = or disjoint i64 %239, 3 + %253 = getelementptr inbounds nuw float, ptr %205, i64 %252 + store float %251, ptr %253, align 4 + %254 = mul nuw nsw i64 %indvars.iv.i31, 18 + %255 = add nuw nsw i64 %254, 18 + %256 = add nuw nsw i64 %254, 19 + %257 = getelementptr inbounds nuw float, ptr %199, i64 %256 + %258 = load float, ptr %257, align 4 + %gep.i = getelementptr inbounds nuw float, ptr %invariant.gep.i, i64 %239 + store float %258, ptr %gep.i, align 4 + %259 = getelementptr inbounds nuw float, ptr %203, i64 %256 + %260 = load float, ptr %259, align 4 + %261 = getelementptr inbounds nuw i8, ptr %240, i64 260 + store float %260, ptr %261, align 4 + %262 = getelementptr inbounds nuw float, ptr %199, i64 %255 + %263 = load float, ptr %262, align 4 + %264 = getelementptr i8, ptr %240, i64 -248 + store float %263, ptr %264, align 4 + %265 = getelementptr inbounds nuw float, ptr %203, i64 %255 + %266 = load float, ptr %265, align 4 + %267 = getelementptr i8, ptr %240, i64 -244 + store float %266, ptr %267, align 4 + %268 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 4 + %269 = load float, ptr %.0460461.i, align 4 + %270 = insertelement <4 x float> poison, float %269, i64 0 + %271 = shufflevector <4 x float> %270, <4 x float> poison, <4 x i32> zeroinitializer + %272 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 8 + %273 = load float, ptr %268, align 4 + %274 = insertelement <4 x float> poison, float %273, i64 0 + %275 = shufflevector <4 x float> %274, <4 x float> poison, <4 x i32> zeroinitializer + %276 = load <4 x float>, ptr %240, align 1 + %277 = getelementptr i8, ptr %240, i64 -3840 + %278 = load <4 x float>, ptr %277, align 1 + %279 = fmul <4 x float> %276, %275 + %280 = fmul <4 x float> %271, %278 + %281 = fadd <4 x float> %279, %280 + %282 = fmul <4 x float> %276, %271 + %283 = fmul <4 x float> %278, %275 + %284 = fsub <4 x float> %282, %283 + %285 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 12 + %286 = load float, ptr %272, align 4 + %287 = insertelement <4 x float> poison, float %286, i64 0 + %288 = shufflevector <4 x float> %287, <4 x float> poison, <4 x i32> zeroinitializer + %289 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 16 + %290 = load float, ptr %285, align 4 + %291 = insertelement <4 x float> poison, float %290, i64 0 + %292 = shufflevector <4 x float> %291, <4 x float> poison, <4 x i32> zeroinitializer + %293 = getelementptr i8, ptr %240, i64 -256 + %294 = load <4 x float>, ptr %293, align 1 + %295 = getelementptr i8, ptr %240, i64 -3584 + %296 = load <4 x float>, ptr %295, align 1 + %297 = fmul <4 x float> %294, %292 + %298 = fmul <4 x float> %288, %296 + %299 = fadd <4 x float> %297, %298 + %300 = fadd <4 x float> %281, %299 + %301 = fmul <4 x float> %296, %292 + %302 = fmul <4 x float> %294, %288 + %303 = fsub <4 x float> %301, %302 + %304 = fadd <4 x float> %284, %303 + %305 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 20 + %306 = load float, ptr %289, align 4 + %307 = insertelement <4 x float> poison, float %306, i64 0 + %308 = shufflevector <4 x float> %307, <4 x float> poison, <4 x i32> zeroinitializer + %309 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 24 + %310 = load float, ptr %305, align 4 + %311 = insertelement <4 x float> poison, float %310, i64 0 + %312 = shufflevector <4 x float> %311, <4 x float> poison, <4 x i32> zeroinitializer + %313 = getelementptr i8, ptr %240, i64 -512 + %314 = load <4 x float>, ptr %313, align 1 + %315 = getelementptr i8, ptr %240, i64 -3328 + %316 = load <4 x float>, ptr %315, align 1 + %317 = fmul <4 x float> %314, %312 + %318 = fmul <4 x float> %308, %316 + %319 = fadd <4 x float> %317, %318 + %320 = fadd <4 x float> %300, %319 + %321 = fmul <4 x float> %314, %308 + %322 = fmul <4 x float> %316, %312 + %323 = fsub <4 x float> %321, %322 + %324 = fadd <4 x float> %304, %323 + %325 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 28 + %326 = load float, ptr %309, align 4 + %327 = insertelement <4 x float> poison, float %326, i64 0 + %328 = shufflevector <4 x float> %327, <4 x float> poison, <4 x i32> zeroinitializer + %329 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 32 + %330 = load float, ptr %325, align 4 + %331 = insertelement <4 x float> poison, float %330, i64 0 + %332 = shufflevector <4 x float> %331, <4 x float> poison, <4 x i32> zeroinitializer + %333 = getelementptr i8, ptr %240, i64 -768 + %334 = load <4 x float>, ptr %333, align 1 + %335 = getelementptr i8, ptr %240, i64 -3072 + %336 = load <4 x float>, ptr %335, align 1 + %337 = fmul <4 x float> %334, %332 + %338 = fmul <4 x float> %328, %336 + %339 = fadd <4 x float> %337, %338 + %340 = fadd <4 x float> %320, %339 + %341 = fmul <4 x float> %336, %332 + %342 = fmul <4 x float> %334, %328 + %343 = fsub <4 x float> %341, %342 + %344 = fadd <4 x float> %324, %343 + %345 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 36 + %346 = load float, ptr %329, align 4 + %347 = insertelement <4 x float> poison, float %346, i64 0 + %348 = shufflevector <4 x float> %347, <4 x float> poison, <4 x i32> zeroinitializer + %349 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 40 + %350 = load float, ptr %345, align 4 + %351 = insertelement <4 x float> poison, float %350, i64 0 + %352 = shufflevector <4 x float> %351, <4 x float> poison, <4 x i32> zeroinitializer + %353 = getelementptr i8, ptr %240, i64 -1024 + %354 = load <4 x float>, ptr %353, align 1 + %355 = getelementptr i8, ptr %240, i64 -2816 + %356 = load <4 x float>, ptr %355, align 1 + %357 = fmul <4 x float> %354, %352 + %358 = fmul <4 x float> %348, %356 + %359 = fadd <4 x float> %357, %358 + %360 = fadd <4 x float> %340, %359 + %361 = fmul <4 x float> %354, %348 + %362 = fmul <4 x float> %356, %352 + %363 = fsub <4 x float> %361, %362 + %364 = fadd <4 x float> %344, %363 + %365 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 44 + %366 = load float, ptr %349, align 4 + %367 = insertelement <4 x float> poison, float %366, i64 0 + %368 = shufflevector <4 x float> %367, <4 x float> poison, <4 x i32> zeroinitializer + %369 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 48 + %370 = load float, ptr %365, align 4 + %371 = insertelement <4 x float> poison, float %370, i64 0 + %372 = shufflevector <4 x float> %371, <4 x float> poison, <4 x i32> zeroinitializer + %373 = getelementptr i8, ptr %240, i64 -1280 + %374 = load <4 x float>, ptr %373, align 1 + %375 = getelementptr i8, ptr %240, i64 -2560 + %376 = load <4 x float>, ptr %375, align 1 + %377 = fmul <4 x float> %374, %372 + %378 = fmul <4 x float> %368, %376 + %379 = fadd <4 x float> %377, %378 + %380 = fadd <4 x float> %360, %379 + %381 = fmul <4 x float> %376, %372 + %382 = fmul <4 x float> %374, %368 + %383 = fsub <4 x float> %381, %382 + %384 = fadd <4 x float> %364, %383 + %385 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 52 + %386 = load float, ptr %369, align 4 + %387 = insertelement <4 x float> poison, float %386, i64 0 + %388 = shufflevector <4 x float> %387, <4 x float> poison, <4 x i32> zeroinitializer + %389 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 56 + %390 = load float, ptr %385, align 4 + %391 = insertelement <4 x float> poison, float %390, i64 0 + %392 = shufflevector <4 x float> %391, <4 x float> poison, <4 x i32> zeroinitializer + %393 = getelementptr i8, ptr %240, i64 -1536 + %394 = load <4 x float>, ptr %393, align 1 + %395 = getelementptr i8, ptr %240, i64 -2304 + %396 = load <4 x float>, ptr %395, align 1 + %397 = fmul <4 x float> %394, %392 + %398 = fmul <4 x float> %388, %396 + %399 = fadd <4 x float> %397, %398 + %400 = fadd <4 x float> %380, %399 + %401 = fmul <4 x float> %394, %388 + %402 = fmul <4 x float> %396, %392 + %403 = fsub <4 x float> %401, %402 + %404 = fadd <4 x float> %384, %403 + %405 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 60 + %406 = load float, ptr %389, align 4 + %407 = insertelement <4 x float> poison, float %406, i64 0 + %408 = shufflevector <4 x float> %407, <4 x float> poison, <4 x i32> zeroinitializer + %409 = getelementptr inbounds nuw i8, ptr %.0460461.i, i64 64 + %410 = load float, ptr %405, align 4 + %411 = insertelement <4 x float> poison, float %410, i64 0 + %412 = shufflevector <4 x float> %411, <4 x float> poison, <4 x i32> zeroinitializer + %413 = getelementptr i8, ptr %240, i64 -1792 + %414 = load <4 x float>, ptr %413, align 1 + %415 = getelementptr i8, ptr %240, i64 -2048 + %416 = load <4 x float>, ptr %415, align 1 + %417 = fmul <4 x float> %414, %412 + %418 = fmul <4 x float> %408, %416 + %419 = fadd <4 x float> %417, %418 + %420 = fadd <4 x float> %400, %419 + %421 = fmul <4 x float> %416, %412 + %422 = fmul <4 x float> %414, %408 + %423 = fsub <4 x float> %421, %422 + %424 = fadd <4 x float> %404, %423 + %425 = tail call <4 x float> @llvm.x86.sse.min.ps(<4 x float> %424, <4 x float> splat (float 3.276700e+04)) + %426 = tail call <4 x float> @llvm.x86.sse.max.ps(<4 x float> %425, <4 x float> splat (float -3.276800e+04)) + %427 = tail call <4 x i32> @llvm.x86.sse2.cvtps2dq(<4 x float> %426) + %428 = tail call <4 x float> @llvm.x86.sse.min.ps(<4 x float> %420, <4 x float> splat (float 3.276700e+04)) + %429 = tail call <4 x float> @llvm.x86.sse.max.ps(<4 x float> %428, <4 x float> splat (float -3.276800e+04)) + %430 = tail call <4 x i32> @llvm.x86.sse2.cvtps2dq(<4 x float> %429) + %431 = tail call <8 x i16> @llvm.x86.sse2.packssdw.128(<4 x i32> %427, <4 x i32> %430) + %432 = extractelement <8 x i16> %431, i64 1 + %433 = sub nuw nsw i64 15, %indvars.iv.i31 + %434 = mul nsw i64 %433, %197 + %435 = getelementptr inbounds i16, ptr %204, i64 %434 + store i16 %432, ptr %435, align 2 + %436 = extractelement <8 x i16> %431, i64 5 + %437 = add nuw nsw i64 %indvars.iv.i31, 17 + %438 = mul nsw i64 %437, %197 + %439 = getelementptr inbounds i16, ptr %204, i64 %438 + store i16 %436, ptr %439, align 2 + %440 = extractelement <8 x i16> %431, i64 0 + %441 = getelementptr inbounds i16, ptr %201, i64 %434 + store i16 %440, ptr %441, align 2 + %442 = extractelement <8 x i16> %431, i64 4 + %443 = getelementptr inbounds i16, ptr %201, i64 %438 + store i16 %442, ptr %443, align 2 + %444 = extractelement <8 x i16> %431, i64 3 + %445 = sub nuw nsw i64 47, %indvars.iv.i31 + %446 = mul nsw i64 %445, %197 + %447 = getelementptr inbounds i16, ptr %204, i64 %446 + store i16 %444, ptr %447, align 2 + %448 = extractelement <8 x i16> %431, i64 7 + %449 = add nuw nsw i64 %indvars.iv.i31, 49 + %450 = mul nsw i64 %449, %197 + %451 = getelementptr inbounds i16, ptr %204, i64 %450 + store i16 %448, ptr %451, align 2 + %452 = extractelement <8 x i16> %431, i64 2 + %453 = getelementptr inbounds i16, ptr %201, i64 %446 + store i16 %452, ptr %453, align 2 + %454 = extractelement <8 x i16> %431, i64 6 + %455 = getelementptr inbounds i16, ptr %201, i64 %450 + store i16 %454, ptr %455, align 2 %indvars.iv.next.i32 = add nsw i64 %indvars.iv.i31, -1 %.not.i = icmp eq i64 %indvars.iv.i31, 0 - br i1 %.not.i, label %drmp3d_synth.exit, label %235 + br i1 %.not.i, label %drmp3d_synth.exit, label %234 -drmp3d_synth.exit: ; preds = %235 +drmp3d_synth.exit: ; preds = %234 %indvars.iv.next40 = add nuw nsw i64 %indvars.iv39, 2 - %457 = icmp samesign ult i64 %indvars.iv.next40, %198 - br i1 %457, label %199, label %458 - -458: ; preds = %drmp3d_synth.exit - %459 = icmp eq i32 %3, 1 - %460 = shl nuw nsw i32 %2, 6 - %461 = zext nneg i32 %460 to i64 - %invariant.gep = getelementptr inbounds nuw float, ptr %5, i64 %461 - br i1 %459, label %.preheader, label %465 - -.preheader: ; preds = %458, %.preheader - %indvars.iv42 = phi i64 [ %indvars.iv.next43, %.preheader ], [ 0, %458 ] + %456 = icmp samesign ult i64 %indvars.iv.next40, %198 + br i1 %456, label %198, label %457 + +457: ; preds = %drmp3d_synth.exit + %458 = icmp eq i32 %3, 1 + %459 = shl nuw nsw i32 %2, 6 + %460 = zext nneg i32 %459 to i64 + %invariant.gep = getelementptr inbounds nuw float, ptr %5, i64 %460 + br i1 %458, label %.preheader, label %464 + +.preheader: ; preds = %457, %.preheader + %indvars.iv42 = phi i64 [ %indvars.iv.next43, %.preheader ], [ 0, %457 ] %gep = getelementptr inbounds nuw float, ptr %invariant.gep, i64 %indvars.iv42 - %462 = load float, ptr %gep, align 4 - %463 = getelementptr inbounds nuw float, ptr %0, i64 %indvars.iv42 - store float %462, ptr %463, align 4 + %461 = load float, ptr %gep, align 4 + %462 = getelementptr inbounds nuw float, ptr %0, i64 %indvars.iv42 + store float %461, ptr %462, align 4 %indvars.iv.next43 = add nuw nsw i64 %indvars.iv42, 2 - %464 = icmp samesign ult i64 %indvars.iv42, 958 - br i1 %464, label %.preheader, label %.loopexit + %463 = icmp samesign ult i64 %indvars.iv42, 958 + br i1 %463, label %.preheader, label %.loopexit -465: ; preds = %458 +464: ; preds = %457 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(3840) %0, ptr noundef nonnull align 4 dereferenceable(3840) %invariant.gep, i64 3840, i1 false) br label %.loopexit -.loopexit: ; preds = %.preheader, %465 +.loopexit: ; preds = %.preheader, %464 ret void }