From bd06296c0fd6d0c2f5fbb2289083373de8469029 Mon Sep 17 00:00:00 2001 From: nikic <216080+nikic@users.noreply.github.com> Date: Fri, 4 Jul 2025 22:28:48 +0800 Subject: [PATCH 1/3] pre-commit: PR147065 --- 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..d567dab7164 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/147065 export COMPTIME_MODE=0 # Please rebase manually From 00d00e0bb7afcf137e8b3559f6629b48154d214d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 4 Jul 2025 14:45:20 +0000 Subject: [PATCH 2/3] pre-commit: Update --- bench/clamav/optimized/spin.ll | 582 +++++----- bench/clamav/optimized/upx.ll | 260 +++-- bench/cmake/optimized/huf_compress.ll | 138 +-- bench/cmake/optimized/zstd_decompress.ll | 194 ++-- bench/darktable/optimized/export.ll | 478 ++++---- bench/darktable/optimized/print_settings.ll | 16 +- bench/duckdb/optimized/huf_compress.ll | 134 +-- bench/ffmpeg/optimized/flac_picture.ll | 505 ++++----- bench/freetype/optimized/type1.ll | 235 ++-- bench/git/optimized/apply.ll | 110 +- bench/git/optimized/fast-import.ll | 69 +- bench/git/optimized/packfile.ll | 100 +- bench/hyperscan/optimized/runtime.ll | 1000 ++++++++--------- bench/libquic/optimized/s3_srvr.ll | 142 +-- bench/lief/optimized/ecjpake.ll | 144 +-- bench/lief/optimized/rsa.ll | 9 +- bench/lief/optimized/ssl_tls.ll | 534 +++++---- bench/lief/optimized/ssl_tls13_client.ll | 377 +++---- bench/lief/optimized/ssl_tls13_server.ll | 900 +++++++-------- bench/linux/optimized/decompress_unlzo.ll | 129 +-- bench/linux/optimized/nf_nat_helper.ll | 148 +-- bench/linux/optimized/zstd_decompress.ll | 234 ++-- bench/llvm/optimized/PPCaching.ll | 30 +- bench/oiio/optimized/deepdata.ll | 809 ++++++------- .../optimized/cipher_aes_cbc_hmac_sha1_hw.ll | 537 ++++----- .../cipher_aes_cbc_hmac_sha256_hw.ll | 549 ++++----- .../openssl/optimized/e_aes_cbc_hmac_sha1.ll | 535 ++++----- bench/openusd/optimized/zipFile.ll | 114 +- bench/redis/optimized/listpack.ll | 8 +- bench/zstd/optimized/zstd_v07.ll | 104 +- 30 files changed, 4568 insertions(+), 4556 deletions(-) diff --git a/bench/clamav/optimized/spin.ll b/bench/clamav/optimized/spin.ll index ff25f9abd5f..36196a41acc 100644 --- a/bench/clamav/optimized/spin.ll +++ b/bench/clamav/optimized/spin.ll @@ -270,267 +270,285 @@ define range(i32 0, 3) i32 @unspin(ptr noundef %0, i32 noundef %1, ptr noundef r %124 = zext i32 %123 to i64 %125 = sub nsw i64 0, %124 %126 = getelementptr inbounds i8, ptr %122, i64 %125 + %.fr804 = freeze ptr %126 %127 = sext i32 %1 to i64 %128 = icmp ugt i32 %1, 3 - br i1 %128, label %129, label %140 + br i1 %128, label %129, label %138 129: ; preds = %110 - %130 = getelementptr inbounds nuw i8, ptr %126, i64 12807 + %130 = getelementptr inbounds nuw i8, ptr %.fr804, i64 12807 %131 = ptrtoint ptr %0 to i64 - %132 = add nuw nsw i64 %121, %25 - %133 = sub nsw i64 %132, %124 - %.not650 = icmp slt i64 %133, -12807 - br i1 %.not650, label %140, label %134 - -134: ; preds = %129 - %135 = ptrtoint ptr %130 to i64 - %136 = add i64 %135, 4 - %137 = add i64 %127, %131 - %.not651 = icmp ule i64 %136, %137 - %138 = icmp ugt i64 %136, %131 - %or.cond701 = and i1 %.not651, %138 - %139 = icmp ugt i64 %137, %135 - %or.cond702 = and i1 %139, %or.cond701 - br i1 %or.cond702, label %141, label %140 - -140: ; preds = %134, %129, %110 + %.not650 = icmp ult ptr %130, %0 + br i1 %.not650, label %138, label %132 + +132: ; preds = %129 + %133 = ptrtoint ptr %130 to i64 + %134 = add i64 %133, 4 + %135 = add i64 %127, %131 + %.not651 = icmp ule i64 %134, %135 + %136 = icmp ugt i64 %134, %131 + %or.cond701 = and i1 %.not651, %136 + %137 = icmp ugt i64 %135, %133 + %or.cond702 = and i1 %137, %or.cond701 + br i1 %or.cond702, label %139, label %138 + +138: ; preds = %132, %129, %110 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.7) #8 br label %.critedge713 -141: ; preds = %134 - %142 = load i32, ptr %130, align 1, !tbaa !10 - tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.10, i32 noundef %113, i32 noundef %142) #8 +139: ; preds = %132 + %140 = load i32, ptr %130, align 1, !tbaa !10 + tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.10, i32 noundef %113, i32 noundef %140) #8 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.11) #8 - %143 = icmp sgt i32 %3, 0 - br i1 %143, label %.lr.ph757.preheader, label %._crit_edge + %141 = icmp sgt i32 %3, 0 + br i1 %141, label %.lr.ph757.preheader, label %._crit_edge -.lr.ph757.preheader: ; preds = %141 +.lr.ph757.preheader: ; preds = %139 %wide.trip.count = zext nneg i32 %3 to i64 br label %.lr.ph757 .lr.ph757: ; preds = %.lr.ph757.preheader, %.loopexit738 %indvars.iv = phi i64 [ 0, %.lr.ph757.preheader ], [ %indvars.iv.next, %.loopexit738 ] - %.0557756 = phi i32 [ %142, %.lr.ph757.preheader ], [ %168, %.loopexit738 ] - %144 = and i32 %.0557756, 1 - %.not688 = icmp eq i32 %144, 0 - br i1 %.not688, label %.loopexit738, label %145 - -145: ; preds = %.lr.ph757 - %146 = getelementptr inbounds nuw %struct.cli_exe_section, ptr %2, i64 %indvars.iv - %147 = getelementptr inbounds nuw i8, ptr %146, i64 12 - %148 = load i32, ptr %147, align 4, !tbaa !3 - %149 = zext i32 %148 to i64 - %.not689 = icmp eq i32 %148, 0 - %.not690 = icmp ugt i64 %149, %127 + %.0557756 = phi i32 [ %140, %.lr.ph757.preheader ], [ %166, %.loopexit738 ] + %142 = and i32 %.0557756, 1 + %.not688 = icmp eq i32 %142, 0 + br i1 %.not688, label %.loopexit738, label %143 + +143: ; preds = %.lr.ph757 + %144 = getelementptr inbounds nuw %struct.cli_exe_section, ptr %2, i64 %indvars.iv + %145 = getelementptr inbounds nuw i8, ptr %144, i64 12 + %146 = load i32, ptr %145, align 4, !tbaa !3 + %147 = zext i32 %146 to i64 + %.not689 = icmp eq i32 %146, 0 + %.not690 = icmp ugt i64 %147, %127 %or.cond703 = or i1 %.not689, %.not690 - br i1 %or.cond703, label %.critedge, label %150 - -150: ; preds = %145 - %151 = getelementptr inbounds nuw i8, ptr %146, i64 8 - %152 = load i32, ptr %151, align 4, !tbaa !8 - %153 = zext i32 %152 to i64 - %154 = getelementptr inbounds nuw i8, ptr %0, i64 %153 - %155 = ptrtoint ptr %154 to i64 - %156 = add i64 %155, %149 - %.not692 = icmp ule i64 %156, %137 - %157 = icmp ugt i64 %156, %131 - %or.cond704 = and i1 %.not692, %157 - %158 = icmp ugt i64 %137, %155 - %or.cond705 = and i1 %158, %or.cond704 + br i1 %or.cond703, label %.critedge, label %148 + +148: ; preds = %143 + %149 = getelementptr inbounds nuw i8, ptr %144, i64 8 + %150 = load i32, ptr %149, align 4, !tbaa !8 + %151 = zext i32 %150 to i64 + %152 = getelementptr inbounds nuw i8, ptr %0, i64 %151 + %153 = ptrtoint ptr %152 to i64 + %154 = add i64 %153, %147 + %.not692 = icmp ule i64 %154, %135 + %155 = icmp ugt i64 %154, %131 + %or.cond704 = and i1 %.not692, %155 + %156 = icmp ugt i64 %135, %153 + %or.cond705 = and i1 %156, %or.cond704 br i1 %or.cond705, label %.lr.ph, label %.critedge -.critedge: ; preds = %150, %145 - %159 = trunc nuw nsw i64 %indvars.iv to i32 - tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.12, i32 noundef %159) #8 +.critedge: ; preds = %148, %143 + %157 = trunc nuw nsw i64 %indvars.iv to i32 + tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.12, i32 noundef %157) #8 br label %.critedge713 -.lr.ph: ; preds = %150, %.lr.ph - %.0536754 = phi i32 [ %.1537, %.lr.ph ], [ %113, %150 ] - %.0538753 = phi ptr [ %167, %.lr.ph ], [ %154, %150 ] - %.0539752 = phi i32 [ %160, %.lr.ph ], [ %148, %150 ] - %160 = add i32 %.0539752, -1 - %161 = and i32 %.0536754, 1 - %.not694 = icmp eq i32 %161, 0 - %162 = lshr i32 %.0536754, 1 - %163 = xor i32 %162, -314331343 - %.1537 = select i1 %.not694, i32 %163, i32 %162 - %164 = load i8, ptr %.0538753, align 1, !tbaa !10 - %165 = trunc i32 %.1537 to i8 - %166 = xor i8 %164, %165 - store i8 %166, ptr %.0538753, align 1, !tbaa !10 - %167 = getelementptr inbounds nuw i8, ptr %.0538753, i64 1 - %.not693 = icmp eq i32 %160, 0 +.lr.ph: ; preds = %148, %.lr.ph + %.0536754 = phi i32 [ %.1537, %.lr.ph ], [ %113, %148 ] + %.0538753 = phi ptr [ %165, %.lr.ph ], [ %152, %148 ] + %.0539752 = phi i32 [ %158, %.lr.ph ], [ %146, %148 ] + %158 = add i32 %.0539752, -1 + %159 = and i32 %.0536754, 1 + %.not694 = icmp eq i32 %159, 0 + %160 = lshr i32 %.0536754, 1 + %161 = xor i32 %160, -314331343 + %.1537 = select i1 %.not694, i32 %161, i32 %160 + %162 = load i8, ptr %.0538753, align 1, !tbaa !10 + %163 = trunc i32 %.1537 to i8 + %164 = xor i8 %162, %163 + store i8 %164, ptr %.0538753, align 1, !tbaa !10 + %165 = getelementptr inbounds nuw i8, ptr %.0538753, i64 1 + %.not693 = icmp eq i32 %158, 0 br i1 %.not693, label %.loopexit738, label %.lr.ph .loopexit738: ; preds = %.lr.ph, %.lr.ph757 - %168 = lshr i32 %.0557756, 1 + %166 = lshr i32 %.0557756, 1 %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 %.lr.ph757 -._crit_edge: ; preds = %.loopexit738, %141 +._crit_edge: ; preds = %.loopexit738, %139 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.13) #8 - %169 = getelementptr inbounds nuw i8, ptr %126, i64 1604 - %170 = load i32, ptr %169, align 1, !tbaa !10 - %.not652 = icmp eq i32 %170, 384 - br i1 %.not652, label %172, label %171 + %167 = getelementptr inbounds nuw i8, ptr %.fr804, i64 1604 + %168 = load i32, ptr %167, align 1, !tbaa !10 + %.not652 = icmp eq i32 %168, 384 + br i1 %.not652, label %170, label %169 -171: ; preds = %._crit_edge +169: ; preds = %._crit_edge tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.2) #8 br label %.critedge713 -172: ; preds = %._crit_edge - %173 = getelementptr inbounds nuw i8, ptr %126, i64 1616 - %174 = load i32, ptr %173, align 1, !tbaa !10 - tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.8, i32 noundef %174, i32 noundef 384) #8 - %175 = icmp ult i32 %1, 384 - %.not653 = icmp slt i64 %133, -10451 - %or.cond = or i1 %175, %.not653 - br i1 %or.cond, label %182, label %176 - -176: ; preds = %172 - %177 = getelementptr inbounds nuw i8, ptr %126, i64 10451 - %178 = ptrtoint ptr %177 to i64 - %179 = add i64 %178, 384 - %.not654 = icmp ule i64 %179, %137 - %180 = icmp ugt i64 %179, %131 - %or.cond706 = and i1 %.not654, %180 - %181 = icmp ugt i64 %137, %178 - %or.cond707 = and i1 %181, %or.cond706 - br i1 %or.cond707, label %.preheader736, label %182 - -182: ; preds = %176, %172 +170: ; preds = %._crit_edge + %171 = getelementptr inbounds nuw i8, ptr %.fr804, i64 1616 + %172 = load i32, ptr %171, align 1, !tbaa !10 + tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.8, i32 noundef %172, i32 noundef 384) #8 + %173 = getelementptr inbounds nuw i8, ptr %.fr804, i64 10451 + %174 = icmp ult i32 %1, 384 + %.not653 = icmp ult ptr %173, %0 + %or.cond = select i1 %174, i1 true, i1 %.not653 + br i1 %or.cond, label %180, label %175 + +175: ; preds = %170 + %176 = ptrtoint ptr %173 to i64 + %177 = add i64 %176, 384 + %.not654 = icmp ule i64 %177, %135 + %178 = icmp ugt i64 %177, %131 + %or.cond706 = and i1 %.not654, %178 + %179 = icmp ugt i64 %135, %176 + %or.cond707 = and i1 %179, %or.cond706 + br i1 %or.cond707, label %.preheader736, label %180 + +180: ; preds = %175, %170 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.7) #8 br label %.critedge713 -.preheader736: ; preds = %176, %.preheader736 - %.2549760 = phi i32 [ %183, %.preheader736 ], [ 384, %176 ] - %.2568759 = phi i32 [ %.3569, %.preheader736 ], [ %174, %176 ] - %.2582758 = phi ptr [ %190, %.preheader736 ], [ %177, %176 ] - %183 = add nsw i32 %.2549760, -1 - %184 = and i32 %.2568759, 1 - %.not687 = icmp eq i32 %184, 0 - %185 = lshr i32 %.2568759, 1 - %186 = xor i32 %185, -314331342 - %.3569 = select i1 %.not687, i32 %185, i32 %186 - %187 = load i8, ptr %.2582758, align 1, !tbaa !10 - %188 = trunc i32 %.3569 to i8 - %189 = xor i8 %187, %188 - store i8 %189, ptr %.2582758, align 1, !tbaa !10 - %190 = getelementptr inbounds nuw i8, ptr %.2582758, i64 1 - %.not655 = icmp eq i32 %183, 0 - br i1 %.not655, label %191, label %.preheader736 - -191: ; preds = %.preheader736 - %192 = getelementptr inbounds nuw i8, ptr %126, i64 10461 - %193 = load i32, ptr %192, align 1, !tbaa !10 - %.not656 = icmp eq i32 %193, 417 - br i1 %.not656, label %195, label %194 - -194: ; preds = %191 +.preheader736: ; preds = %175, %.preheader736 + %.2549760 = phi i32 [ %181, %.preheader736 ], [ 384, %175 ] + %.2568759 = phi i32 [ %.3569, %.preheader736 ], [ %172, %175 ] + %.2582758 = phi ptr [ %188, %.preheader736 ], [ %173, %175 ] + %181 = add nsw i32 %.2549760, -1 + %182 = and i32 %.2568759, 1 + %.not687 = icmp eq i32 %182, 0 + %183 = lshr i32 %.2568759, 1 + %184 = xor i32 %183, -314331342 + %.3569 = select i1 %.not687, i32 %183, i32 %184 + %185 = load i8, ptr %.2582758, align 1, !tbaa !10 + %186 = trunc i32 %.3569 to i8 + %187 = xor i8 %185, %186 + store i8 %187, ptr %.2582758, align 1, !tbaa !10 + %188 = getelementptr inbounds nuw i8, ptr %.2582758, i64 1 + %.not655 = icmp eq i32 %181, 0 + br i1 %.not655, label %189, label %.preheader736 + +189: ; preds = %.preheader736 + %190 = getelementptr inbounds nuw i8, ptr %.fr804, i64 10461 + %191 = load i32, ptr %190, align 1, !tbaa !10 + %.not656 = icmp eq i32 %191, 417 + br i1 %.not656, label %193, label %192 + +192: ; preds = %189 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.2) #8 br label %.critedge713 -195: ; preds = %191 +193: ; preds = %189 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.14, i32 noundef 417) #8 - %196 = getelementptr inbounds nuw i8, ptr %126, i64 10476 - %197 = icmp ult i32 %1, 417 - %.not657 = icmp slt i64 %133, -1748 - %or.cond726 = or i1 %197, %.not657 - br i1 %or.cond726, label %204, label %198 - -198: ; preds = %195 - %199 = getelementptr inbounds nuw i8, ptr %126, i64 1748 - %200 = ptrtoint ptr %199 to i64 - %201 = add i64 %200, 417 - %.not658 = icmp ule i64 %201, %137 - %202 = icmp ugt i64 %201, %131 - %or.cond708 = and i1 %.not658, %202 - %203 = icmp ugt i64 %137, %200 - %or.cond709 = and i1 %203, %or.cond708 - br i1 %or.cond709, label %.preheader735, label %204 - -204: ; preds = %198, %195 + %194 = getelementptr inbounds nuw i8, ptr %.fr804, i64 10476 + %195 = getelementptr inbounds nuw i8, ptr %.fr804, i64 1748 + %196 = icmp ult i32 %1, 417 + %.not657 = icmp ult ptr %195, %0 + %or.cond726 = select i1 %196, i1 true, i1 %.not657 + br i1 %or.cond726, label %202, label %197 + +197: ; preds = %193 + %198 = ptrtoint ptr %195 to i64 + %199 = add i64 %198, 417 + %.not658 = icmp ule i64 %199, %135 + %200 = icmp ugt i64 %199, %131 + %or.cond708 = and i1 %.not658, %200 + %201 = icmp ugt i64 %135, %198 + %or.cond709 = and i1 %201, %or.cond708 + br i1 %or.cond709, label %.preheader735, label %202 + +202: ; preds = %197, %193 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.15) #8 br label %.critedge713 -.preheader735: ; preds = %198, %209 - %.3550762 = phi i32 [ %210, %209 ], [ 417, %198 ] - %.0583761 = phi ptr [ %211, %209 ], [ %199, %198 ] +.preheader735: ; preds = %197, %207 + %.3550762 = phi i32 [ %208, %207 ], [ 417, %197 ] + %.0583761 = phi ptr [ %209, %207 ], [ %195, %197 ] call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #8 - %205 = load i8, ptr %.0583761, align 1, !tbaa !10 - %206 = trunc i32 %.3550762 to i8 - %207 = call fastcc signext i8 @exec86(i8 noundef zeroext %205, i8 noundef zeroext %206, ptr noundef nonnull %196, ptr noundef %8) - store i8 %207, ptr %.0583761, align 1, !tbaa !10 - %208 = load i32, ptr %8, align 4, !tbaa !11 - %.not686 = icmp eq i32 %208, 0 - br i1 %.not686, label %209, label %.thread + store i32 0, ptr %8, align 4, !tbaa !11 + %203 = load i8, ptr %.0583761, align 1, !tbaa !10 + %204 = trunc i32 %.3550762 to i8 + %205 = call fastcc signext i8 @exec86(i8 noundef zeroext %203, i8 noundef zeroext %204, ptr noundef nonnull %194, ptr noundef %8) + store i8 %205, ptr %.0583761, align 1, !tbaa !10 + %206 = load i32, ptr %8, align 4, !tbaa !11 + %.not686 = icmp eq i32 %206, 0 + br i1 %.not686, label %207, label %.thread .thread: ; preds = %.preheader735 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.16) #8 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #8 br label %.critedge713 -209: ; preds = %.preheader735 - %210 = add nsw i32 %.3550762, -1 - %211 = getelementptr inbounds nuw i8, ptr %.0583761, i64 1 +207: ; preds = %.preheader735 + %208 = add nsw i32 %.3550762, -1 + %209 = getelementptr inbounds nuw i8, ptr %.0583761, i64 1 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #8 - %.not659 = icmp eq i32 %210, 0 - br i1 %.not659, label %212, label %.preheader735 - -212: ; preds = %209 - %213 = getelementptr inbounds nuw i8, ptr %126, i64 1777 - %214 = load i32, ptr %213, align 1, !tbaa !10 - tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.17, i32 noundef %214) #8 - %215 = getelementptr inbounds nuw i8, ptr %126, i64 1877 - br i1 %143, label %.lr.ph770, label %._crit_edge771 - -.lr.ph770: ; preds = %212 - %216 = ptrtoint ptr %215 to i64 - %217 = add i64 %216, 36 - %.not683 = icmp ule i64 %217, %137 - %218 = icmp ugt i64 %217, %131 - %or.cond710 = and i1 %.not683, %218 - %219 = icmp ugt i64 %137, %216 - %or.cond711 = and i1 %219, %or.cond710 - %wide.trip.count814 = zext nneg i32 %3 to i64 - br label %220 - -220: ; preds = %.lr.ph770, %.loopexit734 - %indvars.iv811 = phi i64 [ 0, %.lr.ph770 ], [ %indvars.iv.next812, %.loopexit734 ] - %.1558768 = phi i32 [ %214, %.lr.ph770 ], [ %238, %.loopexit734 ] - %221 = and i32 %.1558768, 1 - %.not681 = icmp eq i32 %221, 0 - br i1 %.not681, label %.loopexit734, label %222 - -222: ; preds = %220 - br i1 %or.cond711, label %.preheader733, label %230 - -.preheader733: ; preds = %222 - %223 = getelementptr inbounds nuw %struct.cli_exe_section, ptr %2, i64 %indvars.iv811 - %224 = getelementptr inbounds nuw i8, ptr %223, i64 12 - %225 = load i32, ptr %224, align 4, !tbaa !3 - %.not684763 = icmp eq i32 %225, 0 + %.not659 = icmp eq i32 %208, 0 + br i1 %.not659, label %210, label %.preheader735 + +210: ; preds = %207 + %211 = getelementptr inbounds nuw i8, ptr %.fr804, i64 1777 + %212 = load i32, ptr %211, align 1, !tbaa !10 + tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.17, i32 noundef %212) #8 + %213 = getelementptr i8, ptr %.fr804, i64 1877 + br i1 %141, label %.lr.ph770, label %._crit_edge771 + +.lr.ph770: ; preds = %210 + %.not682 = icmp ult ptr %213, %0 + %214 = ptrtoint ptr %213 to i64 + %215 = add i64 %214, 36 + %.not683 = icmp ule i64 %215, %135 + %216 = icmp ugt i64 %215, %131 + %or.cond710 = and i1 %.not683, %216 + %217 = icmp ugt i64 %135, %214 + %or.cond711 = and i1 %217, %or.cond710 + br i1 %.not682, label %.lr.ph770.split.us, label %.lr.ph770.split.preheader + +.lr.ph770.split.preheader: ; preds = %.lr.ph770 + %wide.trip.count817 = zext nneg i32 %3 to i64 + br label %.lr.ph770.split + +.lr.ph770.split.us: ; preds = %.lr.ph770, %219 + %.1558768.us = phi i32 [ %220, %219 ], [ %212, %.lr.ph770 ] + %.1571767.us = phi i32 [ %221, %219 ], [ 0, %.lr.ph770 ] + %218 = and i32 %.1558768.us, 1 + %.not681.us = icmp eq i32 %218, 0 + br i1 %.not681.us, label %219, label %.split.us + +219: ; preds = %.lr.ph770.split.us + %220 = lshr exact i32 %.1558768.us, 1 + %221 = add nuw nsw i32 %.1571767.us, 1 + %exitcond819.not = icmp eq i32 %221, %3 + br i1 %exitcond819.not, label %._crit_edge771, label %.lr.ph770.split.us + +.lr.ph770.split: ; preds = %.lr.ph770.split.preheader, %.loopexit734 + %indvars.iv814 = phi i64 [ 0, %.lr.ph770.split.preheader ], [ %indvars.iv.next815, %.loopexit734 ] + %.1558768 = phi i32 [ %212, %.lr.ph770.split.preheader ], [ %238, %.loopexit734 ] + %222 = and i32 %.1558768, 1 + %.not681 = icmp eq i32 %222, 0 + br i1 %.not681, label %.loopexit734, label %223 + +223: ; preds = %.lr.ph770.split + br i1 %or.cond711, label %.preheader733, label %.split.us + +.preheader733: ; preds = %223 + %224 = getelementptr inbounds nuw %struct.cli_exe_section, ptr %2, i64 %indvars.iv814 + %225 = getelementptr inbounds nuw i8, ptr %224, i64 12 + %226 = load i32, ptr %225, align 4, !tbaa !3 + %.not684763 = icmp eq i32 %226, 0 br i1 %.not684763, label %.loopexit734, label %.lr.ph766.preheader .lr.ph766.preheader: ; preds = %.preheader733 - %226 = getelementptr inbounds nuw i8, ptr %223, i64 8 - %227 = load i32, ptr %226, align 4, !tbaa !8 - %228 = zext i32 %227 to i64 - %229 = getelementptr inbounds nuw i8, ptr %0, i64 %228 + %227 = getelementptr inbounds nuw i8, ptr %224, i64 8 + %228 = load i32, ptr %227, align 4, !tbaa !8 + %229 = zext i32 %228 to i64 + %230 = getelementptr inbounds nuw i8, ptr %0, i64 %229 br label %.lr.ph766 -230: ; preds = %222 +.split.us: ; preds = %223, %.lr.ph770.split.us tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.18) #8 br label %.critedge713 .lr.ph766: ; preds = %.lr.ph766.preheader, %235 - %.0535765 = phi i32 [ %236, %235 ], [ %225, %.lr.ph766.preheader ] - %.2585764 = phi ptr [ %237, %235 ], [ %229, %.lr.ph766.preheader ] + %.0535765 = phi i32 [ %236, %235 ], [ %226, %.lr.ph766.preheader ] + %.2585764 = phi ptr [ %237, %235 ], [ %230, %.lr.ph766.preheader ] call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #8 + store i32 0, ptr %9, align 4, !tbaa !11 %231 = load i8, ptr %.2585764, align 1, !tbaa !10 %232 = trunc i32 %.0535765 to i8 - %233 = call fastcc signext i8 @exec86(i8 noundef zeroext %231, i8 noundef zeroext %232, ptr noundef nonnull %215, ptr noundef %9) + %233 = call fastcc signext i8 @exec86(i8 noundef zeroext %231, i8 noundef zeroext %232, ptr noundef nonnull %213, ptr noundef %9) store i8 %233, ptr %.2585764, align 1, !tbaa !10 %234 = load i32, ptr %9, align 4, !tbaa !11 %.not685 = icmp eq i32 %234, 0 @@ -548,30 +566,30 @@ define range(i32 0, 3) i32 @unspin(ptr noundef %0, i32 noundef %1, ptr noundef r %.not684 = icmp eq i32 %236, 0 br i1 %.not684, label %.loopexit734, label %.lr.ph766 -.loopexit734: ; preds = %235, %.preheader733, %220 +.loopexit734: ; preds = %235, %.preheader733, %.lr.ph770.split %238 = lshr i32 %.1558768, 1 - %indvars.iv.next812 = add nuw nsw i64 %indvars.iv811, 1 - %exitcond815.not = icmp eq i64 %indvars.iv.next812, %wide.trip.count814 - br i1 %exitcond815.not, label %._crit_edge771, label %220 + %indvars.iv.next815 = add nuw nsw i64 %indvars.iv814, 1 + %exitcond818.not = icmp eq i64 %indvars.iv.next815, %wide.trip.count817 + br i1 %exitcond818.not, label %._crit_edge771, label %.lr.ph770.split -._crit_edge771: ; preds = %.loopexit734, %212 +._crit_edge771: ; preds = %.loopexit734, %219, %210 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.13) #8 - %239 = getelementptr inbounds nuw i8, ptr %126, i64 12385 + %239 = getelementptr inbounds nuw i8, ptr %.fr804, i64 12385 %240 = load i32, ptr %239, align 1, !tbaa !10 %241 = getelementptr inbounds nuw i8, ptr %6, i64 48 %242 = load ptr, ptr %241, align 8, !tbaa !12 %243 = getelementptr inbounds nuw i8, ptr %242, i64 72 %244 = load i64, ptr %243, align 8, !tbaa !29 %.not660 = icmp ne i64 %244, 0 - %or.cond803 = and i1 %.not660, %143 + %or.cond803 = and i1 %.not660, %141 br i1 %or.cond803, label %.lr.ph776.preheader, label %.loopexit732 .lr.ph776.preheader: ; preds = %._crit_edge771 - %wide.trip.count819 = zext nneg i32 %3 to i64 + %wide.trip.count823 = zext nneg i32 %3 to i64 br label %.lr.ph776 .lr.ph776: ; preds = %.lr.ph776.preheader, %256 - %indvars.iv816 = phi i64 [ 0, %.lr.ph776.preheader ], [ %indvars.iv.next817, %256 ] + %indvars.iv820 = phi i64 [ 0, %.lr.ph776.preheader ], [ %indvars.iv.next821, %256 ] %.0533775 = phi i64 [ 0, %.lr.ph776.preheader ], [ %.1534, %256 ] %.3560774 = phi i32 [ %240, %.lr.ph776.preheader ], [ %257, %256 ] %245 = and i32 %.3560774, 1 @@ -583,7 +601,7 @@ define range(i32 0, 3) i32 @unspin(ptr noundef %0, i32 noundef %1, ptr noundef r br i1 %247, label %.critedge713, label %248 248: ; preds = %246 - %249 = getelementptr inbounds nuw %struct.cli_exe_section, ptr %2, i64 %indvars.iv816, i32 1 + %249 = getelementptr inbounds nuw %struct.cli_exe_section, ptr %2, i64 %indvars.iv820, i32 1 %250 = load i32, ptr %249, align 4, !tbaa !48 %251 = zext i32 %250 to i64 %252 = sub nuw i64 %244, %.0533775 @@ -597,9 +615,9 @@ define range(i32 0, 3) i32 @unspin(ptr noundef %0, i32 noundef %1, ptr noundef r 256: ; preds = %254, %.lr.ph776 %.1534 = phi i64 [ %255, %254 ], [ %.0533775, %.lr.ph776 ] %257 = lshr i32 %.3560774, 1 - %indvars.iv.next817 = add nuw nsw i64 %indvars.iv816, 1 - %exitcond820.not = icmp eq i64 %indvars.iv.next817, %wide.trip.count819 - br i1 %exitcond820.not, label %.loopexit732, label %.lr.ph776 + %indvars.iv.next821 = add nuw nsw i64 %indvars.iv820, 1 + %exitcond824.not = icmp eq i64 %indvars.iv.next821, %wide.trip.count823 + br i1 %exitcond824.not, label %.loopexit732, label %.lr.ph776 .loopexit732: ; preds = %256, %._crit_edge771 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.20, i32 noundef %240) #8 @@ -609,10 +627,10 @@ define range(i32 0, 3) i32 @unspin(ptr noundef %0, i32 noundef %1, ptr noundef r br i1 %260, label %261, label %.preheader730 .preheader730: ; preds = %.loopexit732 - br i1 %143, label %.lr.ph781.preheader, label %.thread855 + br i1 %141, label %.lr.ph781.preheader, label %.thread859 .lr.ph781.preheader: ; preds = %.preheader730 - %wide.trip.count824 = zext nneg i32 %3 to i64 + %wide.trip.count828 = zext nneg i32 %3 to i64 br label %.lr.ph781 261: ; preds = %.loopexit732 @@ -620,13 +638,13 @@ define range(i32 0, 3) i32 @unspin(ptr noundef %0, i32 noundef %1, ptr noundef r br label %.critedge713 .lr.ph781: ; preds = %.lr.ph781.preheader, %300 - %indvars.iv821 = phi i64 [ 0, %.lr.ph781.preheader ], [ %indvars.iv.next822, %300 ] + %indvars.iv825 = phi i64 [ 0, %.lr.ph781.preheader ], [ %indvars.iv.next826, %300 ] %.4551780 = phi i32 [ 0, %.lr.ph781.preheader ], [ %.6553, %300 ] %.5562779 = phi i32 [ %240, %.lr.ph781.preheader ], [ %301, %300 ] %.0577777 = phi i32 [ 0, %.lr.ph781.preheader ], [ %.1578, %300 ] %262 = and i32 %.5562779, 1 %.not663 = icmp eq i32 %262, 0 - %263 = getelementptr inbounds nuw %struct.cli_exe_section, ptr %2, i64 %indvars.iv821 + %263 = getelementptr inbounds nuw %struct.cli_exe_section, ptr %2, i64 %indvars.iv825 br i1 %.not663, label %291, label %264 264: ; preds = %.lr.ph781 @@ -634,13 +652,13 @@ define range(i32 0, 3) i32 @unspin(ptr noundef %0, i32 noundef %1, ptr noundef r %266 = load i32, ptr %265, align 4, !tbaa !48 %267 = zext i32 %266 to i64 %268 = tail call ptr @cli_max_malloc(i64 noundef %267) #8 - %269 = getelementptr inbounds nuw ptr, ptr %259, i64 %indvars.iv821 + %269 = getelementptr inbounds nuw ptr, ptr %259, i64 %indvars.iv825 store ptr %268, ptr %269, align 8, !tbaa !49 %270 = icmp eq ptr %268, null - br i1 %270, label %.loopexit.thread850, label %273 + br i1 %270, label %.loopexit.thread854, label %273 -.loopexit.thread850: ; preds = %264 - %271 = trunc nuw nsw i64 %indvars.iv821 to i32 +.loopexit.thread854: ; preds = %264 + %271 = trunc nuw nsw i64 %indvars.iv825 to i32 %272 = load i32, ptr %265, align 4, !tbaa !48 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.22, i32 noundef %272) #8 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.26) #8 @@ -653,7 +671,7 @@ define range(i32 0, 3) i32 @unspin(ptr noundef %0, i32 noundef %1, ptr noundef r %276 = getelementptr inbounds nuw i8, ptr %263, i64 12 %277 = load i32, ptr %276, align 4, !tbaa !3 %278 = load i32, ptr %265, align 4, !tbaa !48 - %279 = trunc nuw nsw i64 %indvars.iv821 to i32 + %279 = trunc nuw nsw i64 %indvars.iv825 to i32 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.23, i32 noundef %279, i32 noundef %277, i32 noundef %278) #8 %280 = getelementptr inbounds nuw i8, ptr %263, i64 8 %281 = load i32, ptr %280, align 4, !tbaa !8 @@ -678,9 +696,9 @@ define range(i32 0, 3) i32 @unspin(ptr noundef %0, i32 noundef %1, ptr noundef r %295 = load i32, ptr %294, align 4, !tbaa !8 %296 = zext i32 %295 to i64 %297 = getelementptr inbounds nuw i8, ptr %0, i64 %296 - %298 = getelementptr inbounds nuw ptr, ptr %259, i64 %indvars.iv821 + %298 = getelementptr inbounds nuw ptr, ptr %259, i64 %indvars.iv825 store ptr %297, ptr %298, align 8, !tbaa !49 - %299 = trunc nuw nsw i64 %indvars.iv821 to i32 + %299 = trunc nuw nsw i64 %indvars.iv825 to i32 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.25, i32 noundef %299) #8 br label %300 @@ -689,67 +707,67 @@ define range(i32 0, 3) i32 @unspin(ptr noundef %0, i32 noundef %1, ptr noundef r %.6553 = phi i32 [ %290, %289 ], [ %.4551780, %273 ], [ %.4551780, %291 ] %.1578 = add i32 %.pn, %.0577777 %301 = lshr i32 %.5562779, 1 - %indvars.iv.next822 = add nuw nsw i64 %indvars.iv821, 1 - %exitcond825.not = icmp eq i64 %indvars.iv.next822, %wide.trip.count824 - br i1 %exitcond825.not, label %.loopexit, label %.lr.ph781 + %indvars.iv.next826 = add nuw nsw i64 %indvars.iv825, 1 + %exitcond829.not = icmp eq i64 %indvars.iv.next826, %wide.trip.count828 + br i1 %exitcond829.not, label %.loopexit, label %.lr.ph781 .loopexit: ; preds = %300 %302 = icmp eq i32 %.6553, 0 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.26) #8 br i1 %302, label %309, label %.preheader729 -.preheader729: ; preds = %.loopexit.thread850, %.loopexit - %.3573741854 = phi i32 [ %271, %.loopexit.thread850 ], [ %3, %.loopexit ] - %.not804 = icmp eq i32 %.3573741854, 0 - br i1 %.not804, label %._crit_edge787, label %.lr.ph786.preheader +.preheader729: ; preds = %.loopexit.thread854, %.loopexit + %.3573741858 = phi i32 [ %271, %.loopexit.thread854 ], [ %3, %.loopexit ] + %.not805 = icmp eq i32 %.3573741858, 0 + br i1 %.not805, label %._crit_edge787, label %.lr.ph786.preheader .lr.ph786.preheader: ; preds = %.preheader729 - %wide.trip.count829 = zext i32 %.3573741854 to i64 + %wide.trip.count833 = zext i32 %.3573741858 to i64 br label %.lr.ph786 .lr.ph786: ; preds = %.lr.ph786.preheader, %307 - %indvars.iv826 = phi i64 [ 0, %.lr.ph786.preheader ], [ %indvars.iv.next827, %307 ] + %indvars.iv830 = phi i64 [ 0, %.lr.ph786.preheader ], [ %indvars.iv.next831, %307 ] %.0554784 = phi i32 [ %240, %.lr.ph786.preheader ], [ %308, %307 ] %303 = and i32 %.0554784, 1 %.not680 = icmp eq i32 %303, 0 br i1 %.not680, label %307, label %304 304: ; preds = %.lr.ph786 - %305 = getelementptr inbounds nuw ptr, ptr %259, i64 %indvars.iv826 + %305 = getelementptr inbounds nuw ptr, ptr %259, i64 %indvars.iv830 %306 = load ptr, ptr %305, align 8, !tbaa !49 tail call void @free(ptr noundef %306) #8 br label %307 307: ; preds = %304, %.lr.ph786 %308 = lshr i32 %.0554784, 1 - %indvars.iv.next827 = add nuw nsw i64 %indvars.iv826, 1 - %exitcond830.not = icmp eq i64 %indvars.iv.next827, %wide.trip.count829 - br i1 %exitcond830.not, label %._crit_edge787, label %.lr.ph786 + %indvars.iv.next831 = add nuw nsw i64 %indvars.iv830, 1 + %exitcond834.not = icmp eq i64 %indvars.iv.next831, %wide.trip.count833 + br i1 %exitcond834.not, label %._crit_edge787, label %.lr.ph786 ._crit_edge787: ; preds = %307, %.preheader729 tail call void @free(ptr noundef %259) #8 br label %.critedge713 309: ; preds = %.loopexit - %310 = getelementptr inbounds nuw i8, ptr %126, i64 12270 + %310 = getelementptr inbounds nuw i8, ptr %.fr804, i64 12270 %311 = load i32, ptr %310, align 1, !tbaa !10 %.not665 = icmp eq i32 %311, 0 br i1 %.not665, label %399, label %.lr.ph789.preheader -.thread855: ; preds = %.preheader730 +.thread859: ; preds = %.preheader730 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.26) #8 - %312 = getelementptr inbounds nuw i8, ptr %126, i64 12270 + %312 = getelementptr inbounds nuw i8, ptr %.fr804, i64 12270 %313 = load i32, ptr %312, align 1, !tbaa !10 - %.not665857 = icmp eq i32 %313, 0 - br i1 %.not665857, label %399, label %._crit_edge790 + %.not665861 = icmp eq i32 %313, 0 + br i1 %.not665861, label %399, label %._crit_edge790 .lr.ph789.preheader: ; preds = %309 - %wide.trip.count834 = zext nneg i32 %3 to i64 + %wide.trip.count838 = zext nneg i32 %3 to i64 br label %.lr.ph789 .lr.ph789: ; preds = %.lr.ph789.preheader, %336 - %indvars.iv831 = phi i64 [ 0, %.lr.ph789.preheader ], [ %indvars.iv.next832, %336 ] - %314 = getelementptr inbounds nuw %struct.cli_exe_section, ptr %2, i64 %indvars.iv831 + %indvars.iv835 = phi i64 [ 0, %.lr.ph789.preheader ], [ %indvars.iv.next836, %336 ] + %314 = getelementptr inbounds nuw %struct.cli_exe_section, ptr %2, i64 %indvars.iv835 %315 = load i32, ptr %314, align 4, !tbaa !9 %.not666 = icmp ugt i32 %315, %311 br i1 %.not666, label %336, label %316 @@ -789,18 +807,18 @@ define range(i32 0, 3) i32 @unspin(ptr noundef %0, i32 noundef %1, ptr noundef r br i1 %or.cond715, label %._crit_edge790.loopexit, label %336 336: ; preds = %.lr.ph789, %316, %321, %325, %326 - %indvars.iv.next832 = add nuw nsw i64 %indvars.iv831, 1 - %exitcond835.not = icmp eq i64 %indvars.iv.next832, %wide.trip.count834 - br i1 %exitcond835.not, label %._crit_edge790.thread, label %.lr.ph789 + %indvars.iv.next836 = add nuw nsw i64 %indvars.iv835, 1 + %exitcond839.not = icmp eq i64 %indvars.iv.next836, %wide.trip.count838 + br i1 %exitcond839.not, label %._crit_edge790.thread, label %.lr.ph789 ._crit_edge790.loopexit: ; preds = %326 - %337 = trunc nuw nsw i64 %indvars.iv831 to i32 + %337 = trunc nuw nsw i64 %indvars.iv835 to i32 br label %._crit_edge790 -._crit_edge790: ; preds = %._crit_edge790.loopexit, %.thread855 - %.0577743849858860 = phi i32 [ 0, %.thread855 ], [ %.1578, %._crit_edge790.loopexit ] - %338 = phi i32 [ %313, %.thread855 ], [ %311, %._crit_edge790.loopexit ] - %.4574.lcssa = phi i32 [ 0, %.thread855 ], [ %337, %._crit_edge790.loopexit ] +._crit_edge790: ; preds = %._crit_edge790.loopexit, %.thread859 + %.0577743853862864 = phi i32 [ 0, %.thread859 ], [ %.1578, %._crit_edge790.loopexit ] + %338 = phi i32 [ %313, %.thread859 ], [ %311, %._crit_edge790.loopexit ] + %.4574.lcssa = phi i32 [ 0, %.thread859 ], [ %337, %._crit_edge790.loopexit ] %.not671 = icmp eq i32 %.4574.lcssa, %3 br i1 %.not671, label %._crit_edge790.thread, label %339 @@ -868,7 +886,7 @@ define range(i32 0, 3) i32 @unspin(ptr noundef %0, i32 noundef %1, ptr noundef r tail call void @free(ptr noundef nonnull %353) #8 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.28) #8 %388 = load i32, ptr %380, align 4, !tbaa !3 - %389 = add i32 %388, %.0577743849858860 + %389 = add i32 %388, %.0577743853862864 br label %399 390: ; preds = %354 @@ -877,24 +895,24 @@ define range(i32 0, 3) i32 @unspin(ptr noundef %0, i32 noundef %1, ptr noundef r %392 = or i32 %340, %240 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.29) #8 %393 = load i32, ptr %348, align 4, !tbaa !48 - %394 = add i32 %393, %.0577743849858860 + %394 = add i32 %393, %.0577743853862864 br label %399 395: ; preds = %343 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.30) #8 %396 = getelementptr inbounds nuw i8, ptr %345, i64 12 %397 = load i32, ptr %396, align 4, !tbaa !3 - %398 = add i32 %397, %.0577743849858860 + %398 = add i32 %397, %.0577743853862864 br label %399 ._crit_edge790.thread: ; preds = %336, %339, %._crit_edge790 - %.0577743849858860864 = phi i32 [ %.0577743849858860, %339 ], [ %.0577743849858860, %._crit_edge790 ], [ %.1578, %336 ] + %.0577743853862864868 = phi i32 [ %.0577743853862864, %339 ], [ %.0577743853862864, %._crit_edge790 ], [ %.1578, %336 ] tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.31) #8 br label %399 -399: ; preds = %.thread855, %._crit_edge790.thread, %387, %390, %395, %309 - %.2579 = phi i32 [ %389, %387 ], [ %394, %390 ], [ %398, %395 ], [ %.0577743849858860864, %._crit_edge790.thread ], [ %.1578, %309 ], [ 0, %.thread855 ] - %.1555 = phi i32 [ %240, %387 ], [ %392, %390 ], [ %240, %395 ], [ %240, %._crit_edge790.thread ], [ %240, %309 ], [ %240, %.thread855 ] +399: ; preds = %.thread859, %._crit_edge790.thread, %387, %390, %395, %309 + %.2579 = phi i32 [ %389, %387 ], [ %394, %390 ], [ %398, %395 ], [ %.0577743853862864868, %._crit_edge790.thread ], [ %.1578, %309 ], [ 0, %.thread859 ] + %.1555 = phi i32 [ %240, %387 ], [ %392, %390 ], [ %240, %395 ], [ %240, %._crit_edge790.thread ], [ %240, %309 ], [ %240, %.thread859 ] %400 = sext i32 %.2579 to i64 %401 = tail call ptr @cli_max_malloc(i64 noundef %400) #8 %.not674 = icmp eq ptr %401, null @@ -907,21 +925,21 @@ define range(i32 0, 3) i32 @unspin(ptr noundef %0, i32 noundef %1, ptr noundef r br i1 %.not675, label %.thread723, label %.preheader .preheader: ; preds = %402 - br i1 %143, label %.lr.ph797.preheader, label %._crit_edge798 + br i1 %141, label %.lr.ph797.preheader, label %._crit_edge798 .lr.ph797.preheader: ; preds = %.preheader - %wide.trip.count839 = zext nneg i32 %3 to i64 + %wide.trip.count843 = zext nneg i32 %3 to i64 br label %.lr.ph797 .lr.ph797: ; preds = %.lr.ph797.preheader, %434 - %indvars.iv836 = phi i64 [ 0, %.lr.ph797.preheader ], [ %indvars.iv.next837, %434 ] + %indvars.iv840 = phi i64 [ 0, %.lr.ph797.preheader ], [ %indvars.iv.next841, %434 ] %.0530796 = phi ptr [ %401, %.lr.ph797.preheader ], [ %431, %434 ] %.7564795 = phi i32 [ %.1555, %.lr.ph797.preheader ], [ %435, %434 ] - %.not678 = icmp eq i64 %indvars.iv836, 0 + %.not678 = icmp eq i64 %indvars.iv840, 0 br i1 %.not678, label %412, label %405 405: ; preds = %.lr.ph797 - %406 = getelementptr %struct.cli_exe_section, ptr %404, i64 %indvars.iv836 + %406 = getelementptr %struct.cli_exe_section, ptr %404, i64 %indvars.iv840 %407 = getelementptr i8, ptr %406, i64 -28 %408 = load i32, ptr %407, align 4, !tbaa !8 %409 = getelementptr i8, ptr %406, i64 -24 @@ -931,25 +949,25 @@ define range(i32 0, 3) i32 @unspin(ptr noundef %0, i32 noundef %1, ptr noundef r 412: ; preds = %.lr.ph797, %405 %413 = phi i32 [ %411, %405 ], [ 0, %.lr.ph797 ] - %414 = getelementptr inbounds nuw %struct.cli_exe_section, ptr %404, i64 %indvars.iv836 + %414 = getelementptr inbounds nuw %struct.cli_exe_section, ptr %404, i64 %indvars.iv840 %415 = getelementptr inbounds nuw i8, ptr %414, i64 8 store i32 %413, ptr %415, align 4, !tbaa !8 %416 = and i32 %.7564795, 1 %.not679 = icmp eq i32 %416, 0 - %417 = getelementptr inbounds nuw %struct.cli_exe_section, ptr %2, i64 %indvars.iv836, i32 1 - %418 = getelementptr inbounds nuw %struct.cli_exe_section, ptr %2, i64 %indvars.iv836, i32 3 + %417 = getelementptr inbounds nuw %struct.cli_exe_section, ptr %2, i64 %indvars.iv840, i32 1 + %418 = getelementptr inbounds nuw %struct.cli_exe_section, ptr %2, i64 %indvars.iv840, i32 3 %.in = select i1 %.not679, ptr %418, ptr %417 %419 = load i32, ptr %.in, align 4, !tbaa !11 %420 = getelementptr inbounds nuw i8, ptr %414, i64 12 store i32 %419, ptr %420, align 4, !tbaa !3 - %421 = getelementptr inbounds nuw %struct.cli_exe_section, ptr %2, i64 %indvars.iv836 + %421 = getelementptr inbounds nuw %struct.cli_exe_section, ptr %2, i64 %indvars.iv840 %422 = load i32, ptr %421, align 4, !tbaa !9 store i32 %422, ptr %414, align 4, !tbaa !9 %423 = getelementptr inbounds nuw i8, ptr %421, i64 4 %424 = load i32, ptr %423, align 4, !tbaa !48 %425 = getelementptr inbounds nuw i8, ptr %414, i64 4 store i32 %424, ptr %425, align 4, !tbaa !48 - %426 = getelementptr inbounds nuw ptr, ptr %259, i64 %indvars.iv836 + %426 = getelementptr inbounds nuw ptr, ptr %259, i64 %indvars.iv840 %427 = load ptr, ptr %426, align 8, !tbaa !49 %428 = zext i32 %419 to i64 tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %.0530796, ptr align 1 %427, i64 %428, i1 false) @@ -965,9 +983,9 @@ define range(i32 0, 3) i32 @unspin(ptr noundef %0, i32 noundef %1, ptr noundef r 434: ; preds = %432, %412 %435 = lshr i32 %.7564795, 1 - %indvars.iv.next837 = add nuw nsw i64 %indvars.iv836, 1 - %exitcond840.not = icmp eq i64 %indvars.iv.next837, %wide.trip.count839 - br i1 %exitcond840.not, label %._crit_edge798, label %.lr.ph797 + %indvars.iv.next841 = add nuw nsw i64 %indvars.iv840, 1 + %exitcond844.not = icmp eq i64 %indvars.iv.next841, %wide.trip.count843 + br i1 %exitcond844.not, label %._crit_edge798, label %.lr.ph797 ._crit_edge798: ; preds = %434, %.preheader %436 = tail call i32 @cli_rebuildpe(ptr noundef nonnull %401, ptr noundef nonnull %404, i32 noundef %3, i32 noundef 4194304, i32 noundef 4096, i32 noundef 0, i32 noundef 0, i32 noundef %5) #8 @@ -993,28 +1011,28 @@ define range(i32 0, 3) i32 @unspin(ptr noundef %0, i32 noundef %1, ptr noundef r tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.33, i32 noundef %.1555) #8 %440 = and i32 %.1555, 1 %.not677 = icmp ne i32 %440, 0 - %or.cond869.not = select i1 %143, i1 %.not677, i1 false - br i1 %or.cond869.not, label %.lr.ph801.split.preheader, label %._crit_edge802 + %or.cond875.not = select i1 %141, i1 %.not677, i1 false + br i1 %or.cond875.not, label %.lr.ph801.split.preheader, label %._crit_edge802 .lr.ph801.split.preheader: ; preds = %439 - %wide.trip.count844 = zext nneg i32 %3 to i64 + %wide.trip.count848 = zext nneg i32 %3 to i64 br label %.lr.ph801.split .lr.ph801.split: ; preds = %.lr.ph801.split.preheader, %.lr.ph801.split - %indvars.iv841 = phi i64 [ 0, %.lr.ph801.split.preheader ], [ %indvars.iv.next842, %.lr.ph801.split ] - %441 = getelementptr inbounds nuw ptr, ptr %259, i64 %indvars.iv841 + %indvars.iv845 = phi i64 [ 0, %.lr.ph801.split.preheader ], [ %indvars.iv.next846, %.lr.ph801.split ] + %441 = getelementptr inbounds nuw ptr, ptr %259, i64 %indvars.iv845 %442 = load ptr, ptr %441, align 8, !tbaa !49 tail call void @free(ptr noundef %442) #8 - %indvars.iv.next842 = add nuw nsw i64 %indvars.iv841, 1 - %exitcond845.not = icmp eq i64 %indvars.iv.next842, %wide.trip.count844 - br i1 %exitcond845.not, label %._crit_edge802, label %.lr.ph801.split + %indvars.iv.next846 = add nuw nsw i64 %indvars.iv845, 1 + %exitcond849.not = icmp eq i64 %indvars.iv.next846, %wide.trip.count848 + br i1 %exitcond849.not, label %._crit_edge802, label %.lr.ph801.split ._crit_edge802: ; preds = %.lr.ph801.split, %439 tail call void @free(ptr noundef %259) #8 br label %.critedge713 -.critedge713: ; preds = %248, %246, %438, %.thread718, %.thread, %230, %.critedge, %._crit_edge802, %._crit_edge787, %261, %204, %194, %182, %171, %140, %109, %91, %87, %57, %43, %39, %33, %17 - %.0531 = phi i32 [ 1, %17 ], [ 1, %33 ], [ 1, %39 ], [ 1, %43 ], [ 1, %91 ], [ 1, %109 ], [ 1, %171 ], [ 1, %194 ], [ 1, %261 ], [ 1, %._crit_edge787 ], [ 1, %._crit_edge802 ], [ %.0, %438 ], [ 1, %204 ], [ 1, %182 ], [ 1, %140 ], [ 1, %87 ], [ 1, %57 ], [ 1, %.critedge ], [ 1, %230 ], [ 1, %.thread ], [ 1, %.thread718 ], [ 2, %246 ], [ 2, %248 ] +.critedge713: ; preds = %248, %246, %438, %.thread718, %.thread, %.split.us, %.critedge, %._crit_edge802, %._crit_edge787, %261, %202, %192, %180, %169, %138, %109, %91, %87, %57, %43, %39, %33, %17 + %.0531 = phi i32 [ 1, %17 ], [ 1, %33 ], [ 1, %39 ], [ 1, %43 ], [ 1, %91 ], [ 1, %109 ], [ 1, %169 ], [ 1, %192 ], [ 1, %261 ], [ 1, %._crit_edge787 ], [ 1, %._crit_edge802 ], [ %.0, %438 ], [ 1, %202 ], [ 1, %180 ], [ 1, %138 ], [ 1, %87 ], [ 1, %57 ], [ 1, %.critedge ], [ 1, %.split.us ], [ 1, %.thread ], [ 1, %.thread718 ], [ 2, %246 ], [ 2, %248 ] ret i32 %.0531 } diff --git a/bench/clamav/optimized/upx.ll b/bench/clamav/optimized/upx.ll index e1572c34f68..f7e9f2b8fc0 100644 --- a/bench/clamav/optimized/upx.ll +++ b/bench/clamav/optimized/upx.ll @@ -515,18 +515,16 @@ define internal fastcc range(i32 0, 2) i32 @pefromupx(ptr noundef %0, i32 nounde %15 = zext i32 %14 to i64 %switch = icmp ult i32 %14, 2 %16 = zext i32 %4 to i64 - %17 = zext i32 %6 to i64 - %18 = sub nsw i64 0, %17 - %.neg579 = sub nsw i64 %17, %16 - %invariant.op = add nsw i64 %.neg579, 2 - %19 = ptrtoint ptr %0 to i64 - %20 = getelementptr inbounds nuw i8, ptr %0, i64 %16 - %21 = getelementptr inbounds i8, ptr %20, i64 %18 - %invariant.gep = getelementptr i8, ptr %21, i64 -2 - %22 = add i64 %15, %19 + %17 = getelementptr inbounds nuw i8, ptr %0, i64 %16 + %18 = zext i32 %6 to i64 + %19 = sub nsw i64 0, %18 + %20 = getelementptr inbounds i8, ptr %17, i64 %19 + %invariant.gep = getelementptr i8, ptr %20, i64 -2 + %21 = ptrtoint ptr %0 to i64 + %22 = add i64 %15, %21 %23 = sub i32 %4, %6 - %invariant.op506 = add i32 %23, -2 - %invariant.op507 = add i32 %23, -1 + %invariant.op = add i32 %23, -2 + %invariant.op506 = add i32 %23, -1 br i1 %switch, label %.lr.ph.split.us, label %.lr.ph.split .lr.ph.split.us: ; preds = %.lr.ph, %.lr.ph.split.us @@ -546,22 +544,22 @@ define internal fastcc range(i32 0, 2) i32 @pefromupx(ptr noundef %0, i32 nounde %30 = phi i32 [ %52, %48 ], [ %13, %.lr.ph ] %31 = phi i32 [ %49, %48 ], [ 1, %.lr.ph ] %32 = zext i32 %30 to i64 - %.not352 = icmp sgt i64 %invariant.op, %32 + %gep = getelementptr i8, ptr %invariant.gep, i64 %32 + %.not352 = icmp ult ptr %gep, %0 br i1 %.not352, label %48, label %33 33: ; preds = %.lr.ph.split - %gep = getelementptr i8, ptr %invariant.gep, i64 %32 %34 = ptrtoint ptr %gep to i64 %35 = add i64 %34, 2 %.not353 = icmp ule i64 %35, %22 - %36 = icmp ugt i64 %35, %19 + %36 = icmp ugt i64 %35, %21 %or.cond390 = and i1 %.not353, %36 %37 = icmp ugt i64 %22, %34 %or.cond391 = and i1 %37, %or.cond390 br i1 %or.cond391, label %38, label %48 38: ; preds = %33 - %.reass = add i32 %30, %invariant.op506 + %.reass = add i32 %30, %invariant.op %39 = zext i32 %.reass to i64 %40 = getelementptr inbounds nuw i8, ptr %0, i64 %39 %41 = load i8, ptr %40, align 1, !tbaa !3 @@ -569,12 +567,12 @@ define internal fastcc range(i32 0, 2) i32 @pefromupx(ptr noundef %0, i32 nounde br i1 %42, label %43, label %48 43: ; preds = %38 - %.reass508 = add i32 %30, %invariant.op507 - %44 = zext i32 %.reass508 to i64 + %.reass507 = add i32 %30, %invariant.op506 + %44 = zext i32 %.reass507 to i64 %45 = getelementptr inbounds nuw i8, ptr %0, i64 %44 %46 = load i8, ptr %45, align 1, !tbaa !3 %47 = icmp eq i8 %46, -66 - br i1 %47, label %.loopexit.loopexit584, label %48 + br i1 %47, label %.loopexit.loopexit582, label %48 48: ; preds = %43, %38, %33, %.lr.ph.split %49 = add i32 %31, 1 @@ -592,7 +590,7 @@ define internal fastcc range(i32 0, 2) i32 @pefromupx(ptr noundef %0, i32 nounde 55: ; preds = %._crit_edge.thread, %._crit_edge %.in = phi i32 [ %29, %._crit_edge.thread ], [ %53, %._crit_edge ] - %.lcssa502604 = phi i32 [ %25, %._crit_edge.thread ], [ %.lcssa502, %._crit_edge ] + %.lcssa502602 = phi i32 [ %25, %._crit_edge.thread ], [ %.lcssa502, %._crit_edge ] %56 = zext i32 %4 to i64 %57 = zext i32 %6 to i64 %58 = ptrtoint ptr %0 to i64 @@ -628,17 +626,17 @@ define internal fastcc range(i32 0, 2) i32 @pefromupx(ptr noundef %0, i32 nounde %78 = ptrtoint ptr %75 to i64 %79 = sub i64 %77, %78 %80 = tail call ptr @cli_memstr(ptr noundef %75, i64 noundef %79, ptr noundef nonnull @.str.1, i64 noundef 2) #8 - %.not358511 = icmp eq ptr %80, null - br i1 %.not358511, label %.thread453, label %.lr.ph513 + %.not358510 = icmp eq ptr %80, null + br i1 %.not358510, label %.thread453, label %.lr.ph512 -.lr.ph513: ; preds = %71, %95 +.lr.ph512: ; preds = %71, %95 %81 = phi ptr [ %99, %95 ], [ %80, %71 ] %82 = getelementptr inbounds nuw i8, ptr %81, i64 6 %83 = load i8, ptr %82, align 1, !tbaa !3 %84 = icmp eq i8 %83, -117 br i1 %84, label %85, label %95 -85: ; preds = %.lr.ph513 +85: ; preds = %.lr.ph512 %86 = getelementptr inbounds nuw i8, ptr %81, i64 7 %87 = load i8, ptr %86, align 1, !tbaa !3 %88 = icmp eq i8 %87, 7 @@ -653,22 +651,22 @@ define internal fastcc range(i32 0, 2) i32 @pefromupx(ptr noundef %0, i32 nounde %94 = add i32 %93, %6 br label %.loopexit -95: ; preds = %85, %.lr.ph513 +95: ; preds = %85, %.lr.ph512 %96 = getelementptr inbounds nuw i8, ptr %81, i64 1 %97 = ptrtoint ptr %96 to i64 %98 = sub i64 %77, %97 %99 = tail call ptr @cli_memstr(ptr noundef nonnull %96, i64 noundef %98, ptr noundef nonnull @.str.1, i64 noundef 2) #8 %.not358 = icmp eq ptr %99, null - br i1 %.not358, label %.thread453, label %.lr.ph513 + br i1 %.not358, label %.thread453, label %.lr.ph512 -.loopexit.loopexit584: ; preds = %43 +.loopexit.loopexit582: ; preds = %43 %.pre = zext i32 %1 to i64 br label %.loopexit -.loopexit: ; preds = %.loopexit.loopexit584, %89 - %.pre-phi = phi i64 [ %.pre, %.loopexit.loopexit584 ], [ %76, %89 ] - %100 = phi i32 [ %31, %.loopexit.loopexit584 ], [ %.lcssa502604, %89 ] - %.0441 = phi i32 [ %30, %.loopexit.loopexit584 ], [ %94, %89 ] +.loopexit: ; preds = %.loopexit.loopexit582, %89 + %.pre-phi = phi i64 [ %.pre, %.loopexit.loopexit582 ], [ %76, %89 ] + %100 = phi i32 [ %31, %.loopexit.loopexit582 ], [ %.lcssa502602, %89 ] + %.0441 = phi i32 [ %30, %.loopexit.loopexit582 ], [ %94, %89 ] %101 = icmp ne i32 %.0441, 0 %102 = icmp ugt i32 %1, 3 %or.cond8 = and i1 %102, %101 @@ -713,21 +711,21 @@ define internal fastcc range(i32 0, 2) i32 @pefromupx(ptr noundef %0, i32 nounde %125 = sext i32 %121 to i64 %126 = getelementptr inbounds i8, ptr %2, i64 %125 %switch415 = icmp ult i32 %122, 8 - br i1 %switch415, label %.critedge.thread, label %.lr.ph525 + br i1 %switch415, label %.critedge.thread, label %.lr.ph524 -.lr.ph525: ; preds = %124 +.lr.ph524: ; preds = %124 %127 = zext i32 %122 to i64 %128 = add i64 %127, %10 - %.not363530 = icmp slt i32 %121, 0 - br i1 %.not363530, label %.critedge, label %.lr.ph532 + %.not363529 = icmp slt i32 %121, 0 + br i1 %.not363529, label %.critedge, label %.lr.ph531 .critedge.thread: ; preds = %124 %129 = getelementptr inbounds nuw i8, ptr %126, i64 4 br label %checkpe.exit -.lr.ph532: ; preds = %.lr.ph525, %.critedge10 - %.1281523531 = phi ptr [ %152, %.critedge10 ], [ %126, %.lr.ph525 ] - %130 = ptrtoint ptr %.1281523531 to i64 +.lr.ph531: ; preds = %.lr.ph524, %.critedge10 + %.1281522530 = phi ptr [ %152, %.critedge10 ], [ %126, %.lr.ph524 ] + %130 = ptrtoint ptr %.1281522530 to i64 %131 = add i64 %130, 8 %.not364 = icmp ule i64 %131, %128 %132 = icmp ugt i64 %131, %10 @@ -736,19 +734,19 @@ define internal fastcc range(i32 0, 2) i32 @pefromupx(ptr noundef %0, i32 nounde %or.cond399 = and i1 %133, %or.cond398 br i1 %or.cond399, label %134, label %.critedge -134: ; preds = %.lr.ph532 - %135 = load i32, ptr %.1281523531, align 1, !tbaa !3 +134: ; preds = %.lr.ph531 + %135 = load i32, ptr %.1281522530, align 1, !tbaa !3 %.not365 = icmp eq i32 %135, 0 br i1 %.not365, label %.critedge, label %136 136: ; preds = %134 - %137 = getelementptr inbounds nuw i8, ptr %.1281523531, i64 8 - %.not369514 = icmp ult ptr %137, %2 - br i1 %.not369514, label %.critedge10, label %.lr.ph517 + %137 = getelementptr inbounds nuw i8, ptr %.1281522530, i64 8 + %.not369513 = icmp ult ptr %137, %2 + br i1 %.not369513, label %.critedge10, label %.lr.ph516 -.lr.ph517: ; preds = %136, %.critedge12 - %.2282515 = phi ptr [ %151, %.critedge12 ], [ %137, %136 ] - %138 = ptrtoint ptr %.2282515 to i64 +.lr.ph516: ; preds = %136, %.critedge12 + %.2282514 = phi ptr [ %151, %.critedge12 ], [ %137, %136 ] + %138 = ptrtoint ptr %.2282514 to i64 %139 = add i64 %138, 2 %.not370 = icmp ule i64 %139, %128 %140 = icmp ugt i64 %139, %10 @@ -757,18 +755,18 @@ define internal fastcc range(i32 0, 2) i32 @pefromupx(ptr noundef %0, i32 nounde %or.cond401 = and i1 %141, %or.cond400 br i1 %or.cond401, label %142, label %.critedge10 -142: ; preds = %.lr.ph517 - %143 = load i8, ptr %.2282515, align 1, !tbaa !3 +142: ; preds = %.lr.ph516 + %143 = load i8, ptr %.2282514, align 1, !tbaa !3 %.not371 = icmp eq i8 %143, 0 br i1 %.not371, label %.critedge10, label %.preheader.preheader .preheader.preheader: ; preds = %142 - %scevgep = getelementptr i8, ptr %.2282515, i64 1 + %scevgep = getelementptr i8, ptr %.2282514, i64 1 %.not374 = icmp ult ptr %scevgep, %2 br label %.preheader .preheader: ; preds = %.preheader.preheader, %149 - %.2282.pn = phi ptr [ %.3283, %149 ], [ %.2282515, %.preheader.preheader ] + %.2282.pn = phi ptr [ %.3283, %149 ], [ %.2282514, %.preheader.preheader ] %.3283 = getelementptr inbounds nuw i8, ptr %.2282.pn, i64 1 br i1 %.not374, label %.critedge12, label %144 @@ -790,16 +788,16 @@ define internal fastcc range(i32 0, 2) i32 @pefromupx(ptr noundef %0, i32 nounde .critedge12: ; preds = %144, %.preheader, %149 %151 = getelementptr inbounds nuw i8, ptr %.2282.pn, i64 2 %.not369 = icmp ult ptr %151, %2 - br i1 %.not369, label %.critedge10, label %.lr.ph517 + br i1 %.not369, label %.critedge10, label %.lr.ph516 -.critedge10: ; preds = %142, %.critedge12, %.lr.ph517, %136 - %.2282.lcssa = phi ptr [ %137, %136 ], [ %.2282515, %.lr.ph517 ], [ %151, %.critedge12 ], [ %.2282515, %142 ] +.critedge10: ; preds = %142, %.critedge12, %.lr.ph516, %136 + %.2282.lcssa = phi ptr [ %137, %136 ], [ %.2282514, %.lr.ph516 ], [ %151, %.critedge12 ], [ %.2282514, %142 ] %152 = getelementptr inbounds nuw i8, ptr %.2282.lcssa, i64 1 %.not363 = icmp ult ptr %152, %2 - br i1 %.not363, label %.critedge, label %.lr.ph532 + br i1 %.not363, label %.critedge, label %.lr.ph531 -.critedge: ; preds = %.lr.ph532, %.critedge10, %134, %.lr.ph525 - %.1281.lcssa499 = phi ptr [ %126, %.lr.ph525 ], [ %.1281523531, %.lr.ph532 ], [ %152, %.critedge10 ], [ %.1281523531, %134 ] +.critedge: ; preds = %.lr.ph531, %.critedge10, %134, %.lr.ph524 + %.1281.lcssa499 = phi ptr [ %126, %.lr.ph524 ], [ %.1281522530, %.lr.ph531 ], [ %152, %.critedge10 ], [ %.1281522530, %134 ] %153 = getelementptr inbounds nuw i8, ptr %.1281.lcssa499, i64 4 %154 = icmp ult i32 %122, 248 %.not.i = icmp ult ptr %153, %2 @@ -867,7 +865,7 @@ checkpe.exit: ; preds = %.critedge.thread, % br label %.thread453 .thread453: ; preds = %95, %71, %._crit_edge, %60, %55, %checkpe.exit, %123, %113, %103, %.loopexit - %.1446 = phi i32 [ %100, %103 ], [ %.6451, %checkpe.exit ], [ %100, %123 ], [ %100, %113 ], [ %100, %.loopexit ], [ %.lcssa502604, %55 ], [ %.lcssa502604, %60 ], [ %.lcssa502, %._crit_edge ], [ %.lcssa502604, %71 ], [ %.lcssa502604, %95 ] + %.1446 = phi i32 [ %100, %103 ], [ %.6451, %checkpe.exit ], [ %100, %123 ], [ %100, %113 ], [ %100, %.loopexit ], [ %.lcssa502602, %55 ], [ %.lcssa502602, %60 ], [ %.lcssa502, %._crit_edge ], [ %.lcssa502602, %71 ], [ %.lcssa502602, %95 ] %.1 = phi i32 [ %.0441, %103 ], [ %.5443, %checkpe.exit ], [ %.0441, %123 ], [ %.0441, %113 ], [ %.0441, %.loopexit ], [ 0, %55 ], [ 0, %60 ], [ 0, %._crit_edge ], [ 0, %71 ], [ 0, %95 ] %.0288 = phi i32 [ 0, %103 ], [ %121, %checkpe.exit ], [ %121, %123 ], [ 0, %113 ], [ 0, %.loopexit ], [ 0, %55 ], [ 0, %60 ], [ 0, %._crit_edge ], [ 0, %71 ], [ 0, %95 ] %.0280 = phi ptr [ null, %103 ], [ %spec.select, %checkpe.exit ], [ null, %123 ], [ null, %113 ], [ null, %.loopexit ], [ null, %55 ], [ null, %60 ], [ null, %._crit_edge ], [ null, %71 ], [ null, %95 ] @@ -875,9 +873,9 @@ checkpe.exit: ; preds = %.critedge.thread, % %184 = icmp eq ptr %.0280, null %185 = icmp ugt i32 %8, 288 %or.cond14 = and i1 %185, %184 - br i1 %or.cond14, label %.lr.ph545, label %230 + br i1 %or.cond14, label %.lr.ph544, label %230 -.lr.ph545: ; preds = %.thread453 +.lr.ph544: ; preds = %.thread453 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.3) #8 %186 = add i32 %8, -288 %187 = zext i32 %186 to i64 @@ -885,25 +883,25 @@ checkpe.exit: ; preds = %.critedge.thread, % %189 = icmp ugt i32 %188, 247 %190 = zext i32 %188 to i64 %191 = add i64 %190, %10 - br i1 %189, label %.lr.ph545.split.us.preheader, label %.lr.ph545.split.preheader + br i1 %189, label %.lr.ph544.split.us.preheader, label %.lr.ph544.split.preheader -.lr.ph545.split.us.preheader: ; preds = %.lr.ph545 +.lr.ph544.split.us.preheader: ; preds = %.lr.ph544 %192 = getelementptr inbounds nuw i8, ptr %2, i64 %187 - br label %.lr.ph545.split.us + br label %.lr.ph544.split.us -.lr.ph545.split.preheader: ; preds = %.lr.ph545 +.lr.ph544.split.preheader: ; preds = %.lr.ph544 %193 = add i64 %10, %187 %194 = add i64 %193, -1 %195 = tail call i64 @llvm.usub.sat.i64(i64 %10, i64 %194) %196 = sub i64 0, %195 - %scevgep601 = getelementptr i8, ptr %2, i64 %196 + %scevgep599 = getelementptr i8, ptr %2, i64 %196 br label %checkpe.exit429 -.lr.ph545.split.us: ; preds = %.lr.ph545.split.us.preheader, %224 - %.5285543.us = phi ptr [ %225, %224 ], [ %192, %.lr.ph545.split.us.preheader ] - %.3542.us = phi i32 [ %.6444.ph.us, %224 ], [ %.1, %.lr.ph545.split.us.preheader ] - %.3448541.us = phi i32 [ %.7452.ph.us, %224 ], [ %.1446, %.lr.ph545.split.us.preheader ] - %197 = ptrtoint ptr %.5285543.us to i64 +.lr.ph544.split.us: ; preds = %.lr.ph544.split.us.preheader, %224 + %.5285542.us = phi ptr [ %225, %224 ], [ %192, %.lr.ph544.split.us.preheader ] + %.3541.us = phi i32 [ %.6444.ph.us, %224 ], [ %.1, %.lr.ph544.split.us.preheader ] + %.3448540.us = phi i32 [ %.7452.ph.us, %224 ], [ %.1446, %.lr.ph544.split.us.preheader ] + %197 = ptrtoint ptr %.5285542.us to i64 %198 = add i64 %197, 248 %.not47.i418.us = icmp ule i64 %198, %191 %199 = icmp ugt i64 %198, %10 @@ -912,23 +910,23 @@ checkpe.exit: ; preds = %.critedge.thread, % %or.cond54.i420.us = and i1 %200, %or.cond.i419.us br i1 %or.cond54.i420.us, label %201, label %224 -201: ; preds = %.lr.ph545.split.us - %202 = load i32, ptr %.5285543.us, align 1, !tbaa !3 +201: ; preds = %.lr.ph544.split.us + %202 = load i32, ptr %.5285542.us, align 1, !tbaa !3 %.not48.i421.us = icmp eq i32 %202, 17744 br i1 %.not48.i421.us, label %203, label %224 203: ; preds = %201 - %204 = getelementptr inbounds nuw i8, ptr %.5285543.us, i64 56 + %204 = getelementptr inbounds nuw i8, ptr %.5285542.us, i64 56 %205 = load i32, ptr %204, align 1, !tbaa !3 %.not49.i422.us = icmp eq i32 %205, 0 br i1 %.not49.i422.us, label %224, label %206 206: ; preds = %203 - %207 = getelementptr inbounds nuw i8, ptr %.5285543.us, i64 248 - %208 = getelementptr inbounds nuw i8, ptr %.5285543.us, i64 6 + %207 = getelementptr inbounds nuw i8, ptr %.5285542.us, i64 248 + %208 = getelementptr inbounds nuw i8, ptr %.5285542.us, i64 6 %209 = load i8, ptr %208, align 1, !tbaa !3 %210 = zext i8 %209 to i32 - %211 = getelementptr inbounds nuw i8, ptr %.5285543.us, i64 7 + %211 = getelementptr inbounds nuw i8, ptr %.5285542.us, i64 7 %212 = load i8, ptr %211, align 1, !tbaa !3 %213 = zext i8 %212 to i32 %214 = shl nuw nsw i32 %213, 8 @@ -952,18 +950,18 @@ checkpe.exit: ; preds = %.critedge.thread, % %or.cond56.i427.us = and i1 %223, %or.cond55.i426.us br i1 %or.cond56.i427.us, label %checkpe.exit429, label %224 -224: ; preds = %218, %216, %206, %203, %201, %.lr.ph545.split.us - %.7452.ph.us = phi i32 [ %.3448541.us, %.lr.ph545.split.us ], [ %.3448541.us, %201 ], [ %215, %218 ], [ %215, %216 ], [ 0, %206 ], [ %.3448541.us, %203 ] - %.6444.ph.us = phi i32 [ %.3542.us, %.lr.ph545.split.us ], [ %.3542.us, %201 ], [ %205, %218 ], [ %205, %216 ], [ %205, %206 ], [ 0, %203 ] - %225 = getelementptr inbounds i8, ptr %.5285543.us, i64 -1 +224: ; preds = %218, %216, %206, %203, %201, %.lr.ph544.split.us + %.7452.ph.us = phi i32 [ %.3448540.us, %.lr.ph544.split.us ], [ %.3448540.us, %201 ], [ %215, %218 ], [ %215, %216 ], [ 0, %206 ], [ %.3448540.us, %203 ] + %.6444.ph.us = phi i32 [ %.3541.us, %.lr.ph544.split.us ], [ %.3541.us, %201 ], [ %205, %218 ], [ %205, %216 ], [ %205, %206 ], [ 0, %203 ] + %225 = getelementptr inbounds i8, ptr %.5285542.us, i64 -1 %226 = icmp ugt ptr %225, %2 - br i1 %226, label %.lr.ph545.split.us, label %checkpe.exit429 + br i1 %226, label %.lr.ph544.split.us, label %checkpe.exit429 -checkpe.exit429: ; preds = %224, %218, %.lr.ph545.split.preheader - %.5285.lcssa = phi ptr [ %scevgep601, %.lr.ph545.split.preheader ], [ %.5285543.us, %218 ], [ %225, %224 ] - %.4449 = phi i32 [ %.1446, %.lr.ph545.split.preheader ], [ %215, %218 ], [ %.7452.ph.us, %224 ] - %.4442 = phi i32 [ %.1, %.lr.ph545.split.preheader ], [ %205, %218 ], [ %.6444.ph.us, %224 ] - %.3277 = phi ptr [ null, %.lr.ph545.split.preheader ], [ %207, %218 ], [ null, %224 ] +checkpe.exit429: ; preds = %224, %218, %.lr.ph544.split.preheader + %.5285.lcssa = phi ptr [ %scevgep599, %.lr.ph544.split.preheader ], [ %.5285542.us, %218 ], [ %225, %224 ] + %.4449 = phi i32 [ %.1446, %.lr.ph544.split.preheader ], [ %215, %218 ], [ %.7452.ph.us, %224 ] + %.4442 = phi i32 [ %.1, %.lr.ph544.split.preheader ], [ %205, %218 ], [ %.6444.ph.us, %224 ] + %.3277 = phi ptr [ null, %.lr.ph544.split.preheader ], [ %207, %218 ], [ null, %224 ] %227 = ptrtoint ptr %.5285.lcssa to i64 %228 = sub i64 %227, %10 %229 = trunc i64 %228 to i32 @@ -1038,40 +1036,40 @@ checkpe.exit429: ; preds = %224, %218, %.lr.ph5 259: ; preds = %249, %252 %260 = phi i32 [ %258, %252 ], [ %251, %249 ] - %.not581 = icmp eq i32 %spec.select482, 0 - br i1 %.not581, label %._crit_edge568, label %.lr.ph567 + %.not579 = icmp eq i32 %spec.select482, 0 + br i1 %.not579, label %._crit_edge567, label %.lr.ph566 -.lr.ph567: ; preds = %259 +.lr.ph566: ; preds = %259 %261 = zext i32 %.1289.fr to i64 %262 = icmp eq i32 %.1289.fr, 0 %263 = zext i32 %5 to i64 %264 = add nuw nsw i64 %261, %263 - br i1 %262, label %.split, label %.lr.ph567.split + br i1 %262, label %.split, label %.lr.ph566.split -.lr.ph567.split: ; preds = %.lr.ph567, %299 - %.4278565 = phi ptr [ %300, %299 ], [ %.1275, %.lr.ph567 ] - %.0286564 = phi i32 [ %301, %299 ], [ 0, %.lr.ph567 ] - %.0293563 = phi i32 [ %297, %299 ], [ %260, %.lr.ph567 ] - %265 = getelementptr inbounds nuw i8, ptr %.4278565, i64 8 +.lr.ph566.split: ; preds = %.lr.ph566, %299 + %.4278564 = phi ptr [ %300, %299 ], [ %.1275, %.lr.ph566 ] + %.0286563 = phi i32 [ %301, %299 ], [ 0, %.lr.ph566 ] + %.0293562 = phi i32 [ %297, %299 ], [ %260, %.lr.ph566 ] + %265 = getelementptr inbounds nuw i8, ptr %.4278564, i64 8 %266 = load i32, ptr %265, align 1, !tbaa !3 br i1 %.not383, label %278, label %267 -267: ; preds = %.lr.ph567.split +267: ; preds = %.lr.ph566.split %268 = udiv i32 %266, %.2 %269 = urem i32 %266, %.2 %270 = icmp ne i32 %269, 0 %271 = zext i1 %270 to i32 %272 = add i32 %268, %271 %273 = mul i32 %272, %.2 - %274 = getelementptr inbounds nuw i8, ptr %.4278565, i64 12 + %274 = getelementptr inbounds nuw i8, ptr %.4278564, i64 12 %275 = load i32, ptr %274, align 1, !tbaa !3 %.fr = freeze i32 %275 %276 = urem i32 %.fr, %.2 %277 = sub nuw i32 %.fr, %276 br label %281 -278: ; preds = %.lr.ph567.split - %279 = getelementptr inbounds nuw i8, ptr %.4278565, i64 12 +278: ; preds = %.lr.ph566.split + %279 = getelementptr inbounds nuw i8, ptr %.4278564, i64 12 %280 = load i32, ptr %279, align 1, !tbaa !3 br label %281 @@ -1095,31 +1093,31 @@ checkpe.exit429: ; preds = %224, %218, %.lr.ph5 %or.cond409 = select i1 %or.cond408, i1 %291, i1 false br i1 %or.cond409, label %292, label %.split -.split: ; preds = %281, %286, %.lr.ph567 - %.us-phi570 = phi i32 [ 0, %.lr.ph567 ], [ %.0286564, %286 ], [ %.0286564, %281 ] - tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.9, i32 noundef %.us-phi570) #8 +.split: ; preds = %281, %286, %.lr.ph566 + %.us-phi569 = phi i32 [ 0, %.lr.ph566 ], [ %.0286563, %286 ], [ %.0286563, %281 ] + tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.9, i32 noundef %.us-phi569) #8 br label %.thread472 292: ; preds = %286 - %293 = getelementptr inbounds nuw i8, ptr %.4278565, i64 8 + %293 = getelementptr inbounds nuw i8, ptr %.4278564, i64 8 store i32 %282, ptr %293, align 1, !tbaa !3 - %294 = getelementptr inbounds nuw i8, ptr %.4278565, i64 12 + %294 = getelementptr inbounds nuw i8, ptr %.4278564, i64 12 store i32 %283, ptr %294, align 1, !tbaa !3 - %295 = getelementptr inbounds nuw i8, ptr %.4278565, i64 16 + %295 = getelementptr inbounds nuw i8, ptr %.4278564, i64 16 store i32 %282, ptr %295, align 1, !tbaa !3 - %296 = getelementptr inbounds nuw i8, ptr %.4278565, i64 20 - store i32 %.0293563, ptr %296, align 1, !tbaa !3 - %297 = add i32 %282, %.0293563 - %298 = icmp ult i32 %297, %.0293563 + %296 = getelementptr inbounds nuw i8, ptr %.4278564, i64 20 + store i32 %.0293562, ptr %296, align 1, !tbaa !3 + %297 = add i32 %282, %.0293562 + %298 = icmp ult i32 %297, %.0293562 br i1 %298, label %.thread472, label %299 299: ; preds = %292 - %300 = getelementptr inbounds nuw i8, ptr %.4278565, i64 40 - %301 = add nuw i32 %.0286564, 1 + %300 = getelementptr inbounds nuw i8, ptr %.4278564, i64 40 + %301 = add nuw i32 %.0286563, 1 %exitcond.not = icmp eq i32 %301, %spec.select482 - br i1 %exitcond.not, label %._crit_edge568, label %.lr.ph567.split + br i1 %exitcond.not, label %._crit_edge567, label %.lr.ph566.split -._crit_edge568: ; preds = %299, %259 +._crit_edge567: ; preds = %299, %259 %.0293.lcssa = phi i32 [ %260, %259 ], [ %297, %299 ] %302 = getelementptr inbounds nuw i8, ptr %.4284, i64 8 store i32 1296124995, ptr %302, align 1, !tbaa !3 @@ -1130,32 +1128,32 @@ checkpe.exit429: ; preds = %224, %218, %.lr.ph5 %.not384 = icmp eq ptr %305, null br i1 %.not384, label %306, label %307 -306: ; preds = %._crit_edge568 +306: ; preds = %._crit_edge567 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.5) #8 br label %.thread472 -307: ; preds = %._crit_edge568 +307: ; preds = %._crit_edge567 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(208) %305, ptr noundef nonnull align 1 dereferenceable(208) @.str.6, i64 208, i1 false) %308 = getelementptr inbounds nuw i8, ptr %305, i64 208 %309 = mul i32 %spec.select482, 40 %310 = add i32 %309, 248 %311 = zext i32 %310 to i64 tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %308, ptr nonnull align 1 %.4284, i64 %311, i1 false) - br i1 %.not581, label %._crit_edge576, label %.lr.ph575 + br i1 %.not579, label %._crit_edge575, label %.lr.ph574 -.lr.ph575: ; preds = %307 +.lr.ph574: ; preds = %307 %312 = getelementptr inbounds nuw i8, ptr %.4284, i64 248 %313 = zext i32 %5 to i64 %314 = sub nsw i64 0, %313 - %invariant.gep577 = getelementptr i8, ptr %2, i64 %314 + %invariant.gep576 = getelementptr i8, ptr %2, i64 %314 br label %315 -315: ; preds = %.lr.ph575, %333 - %.6573 = phi ptr [ %312, %.lr.ph575 ], [ %338, %333 ] - %.1287572 = phi i32 [ 0, %.lr.ph575 ], [ %339, %333 ] - %316 = getelementptr inbounds nuw i8, ptr %.6573, i64 20 +315: ; preds = %.lr.ph574, %333 + %.6572 = phi ptr [ %312, %.lr.ph574 ], [ %338, %333 ] + %.1287571 = phi i32 [ 0, %.lr.ph574 ], [ %339, %333 ] + %316 = getelementptr inbounds nuw i8, ptr %.6572, i64 20 %317 = load i32, ptr %316, align 1, !tbaa !3 - %318 = getelementptr inbounds nuw i8, ptr %.6573, i64 16 + %318 = getelementptr inbounds nuw i8, ptr %.6572, i64 16 %319 = load i32, ptr %318, align 1, !tbaa !3 %320 = icmp ugt i32 %317, %.0293.lcssa %321 = icmp ugt i32 %319, %.0293.lcssa @@ -1170,7 +1168,7 @@ checkpe.exit429: ; preds = %224, %218, %.lr.ph5 br label %.thread472 326: ; preds = %315 - %327 = getelementptr inbounds nuw i8, ptr %.6573, i64 12 + %327 = getelementptr inbounds nuw i8, ptr %.6572, i64 12 %328 = load i32, ptr %327, align 1, !tbaa !3 %329 = sub i32 %328, %5 %330 = load i32, ptr %3, align 4, !tbaa !6 @@ -1185,26 +1183,26 @@ checkpe.exit429: ; preds = %224, %218, %.lr.ph5 %334 = zext i32 %317 to i64 %335 = getelementptr inbounds nuw i8, ptr %305, i64 %334 %336 = zext i32 %328 to i64 - %gep578 = getelementptr i8, ptr %invariant.gep577, i64 %336 + %gep577 = getelementptr i8, ptr %invariant.gep576, i64 %336 %337 = zext i32 %319 to i64 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %335, ptr align 1 %gep578, i64 %337, i1 false) - %338 = getelementptr inbounds nuw i8, ptr %.6573, i64 40 - %339 = add nuw i32 %.1287572, 1 - %exitcond602.not = icmp eq i32 %339, %spec.select482 - br i1 %exitcond602.not, label %._crit_edge576, label %315 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %335, ptr align 1 %gep577, i64 %337, i1 false) + %338 = getelementptr inbounds nuw i8, ptr %.6572, i64 40 + %339 = add nuw i32 %.1287571, 1 + %exitcond600.not = icmp eq i32 %339, %spec.select482 + br i1 %exitcond600.not, label %._crit_edge575, label %315 -._crit_edge576: ; preds = %333, %307 +._crit_edge575: ; preds = %333, %307 %340 = load i32, ptr %3, align 4, !tbaa !6 %341 = add i32 %340, 8192 %342 = icmp ugt i32 %.0293.lcssa, %341 br i1 %342, label %343, label %344 -343: ; preds = %._crit_edge576 +343: ; preds = %._crit_edge575 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.10) #8 tail call void @free(ptr noundef %305) #8 br label %.thread472 -344: ; preds = %._crit_edge576 +344: ; preds = %._crit_edge575 tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %2, ptr nonnull align 1 %305, i64 %304, i1 false) store i32 %.0293.lcssa, ptr %3, align 4, !tbaa !6 tail call void @free(ptr noundef %305) #8 diff --git a/bench/cmake/optimized/huf_compress.ll b/bench/cmake/optimized/huf_compress.ll index f22ad044713..fd8424e7ec3 100644 --- a/bench/cmake/optimized/huf_compress.ll +++ b/bench/cmake/optimized/huf_compress.ll @@ -2614,13 +2614,13 @@ HUF_compress1X_usingCTable_internal_body.exit: ; preds = %865, %HUF_compress1 } ; Function Attrs: nofree norecurse nosync nounwind memory(write, argmem: readwrite, inaccessiblemem: none) uwtable -define dso_local range(i64 -119, 262147) i64 @HUF_compress4X_usingCTable(ptr noundef %0, i64 noundef %1, ptr noundef readonly captures(none) %2, i64 noundef %3, ptr noundef readonly captures(none) %4, i32 noundef %5) local_unnamed_addr #8 { +define dso_local i64 @HUF_compress4X_usingCTable(ptr noundef %0, i64 noundef %1, ptr noundef readonly captures(none) %2, i64 noundef %3, ptr noundef readonly captures(none) %4, i32 noundef %5) local_unnamed_addr #8 { %7 = tail call fastcc i64 @HUF_compress4X_usingCTable_internal(ptr noundef %0, i64 noundef %1, ptr noundef %2, i64 noundef %3, ptr noundef %4) ret i64 %7 } ; Function Attrs: nofree norecurse nosync nounwind memory(write, argmem: readwrite, inaccessiblemem: none) uwtable -define internal fastcc range(i64 -119, 262147) i64 @HUF_compress4X_usingCTable_internal(ptr noundef %0, i64 noundef %1, ptr noundef readonly captures(none) %2, i64 noundef %3, ptr noundef readonly captures(none) %4) unnamed_addr #8 { +define internal fastcc i64 @HUF_compress4X_usingCTable_internal(ptr noundef %0, i64 noundef %1, ptr noundef readonly captures(none) %2, i64 noundef %3, ptr noundef readonly captures(none) %4) unnamed_addr #8 { %6 = add i64 %3, 3 %7 = lshr i64 %6, 2 %8 = icmp ult i64 %1, 17 @@ -2629,77 +2629,79 @@ define internal fastcc range(i64 -119, 262147) i64 @HUF_compress4X_usingCTable_i br i1 %or.cond108, label %.thread, label %10 10: ; preds = %5 - %11 = getelementptr inbounds nuw i8, ptr %0, i64 6 + %11 = getelementptr inbounds nuw i8, ptr %0, i64 %1 + %12 = getelementptr inbounds nuw i8, ptr %0, i64 6 + %13 = ptrtoint ptr %11 to i64 %gepdiff = add i64 %1, -6 - %12 = tail call fastcc i64 @HUF_compress1X_usingCTable_internal(ptr noundef nonnull %11, i64 noundef %gepdiff, ptr noundef %2, i64 noundef %7, ptr noundef %4) - %13 = icmp ult i64 %12, -119 - br i1 %13, label %14, label %.thread - -14: ; preds = %10 - %15 = add i64 %12, -65536 - %or.cond = icmp ult i64 %15, -65535 - br i1 %or.cond, label %.thread, label %16 - -16: ; preds = %14 - %17 = trunc nuw i64 %12 to i16 - store i16 %17, ptr %0, align 1, !tbaa !17 - %18 = getelementptr inbounds nuw i8, ptr %11, i64 %12 - %19 = getelementptr inbounds nuw i8, ptr %2, i64 %7 - %gepdiff127 = sub i64 %gepdiff, %12 - %20 = tail call fastcc i64 @HUF_compress1X_usingCTable_internal(ptr noundef nonnull %18, i64 noundef %gepdiff127, ptr noundef %19, i64 noundef %7, ptr noundef %4) - %21 = icmp ult i64 %20, -119 - br i1 %21, label %22, label %.thread - -22: ; preds = %16 - %23 = add i64 %20, -65536 - %or.cond6 = icmp ult i64 %23, -65535 - br i1 %or.cond6, label %.thread, label %24 - -24: ; preds = %22 - %25 = getelementptr inbounds nuw i8, ptr %0, i64 2 - %26 = trunc nuw i64 %20 to i16 - store i16 %26, ptr %25, align 1, !tbaa !17 - %27 = getelementptr inbounds nuw i8, ptr %18, i64 %20 - %28 = getelementptr inbounds nuw i8, ptr %19, i64 %7 - %29 = add nuw nsw i64 %12, %20 - %gepdiff128 = sub i64 %gepdiff, %29 - %30 = tail call fastcc i64 @HUF_compress1X_usingCTable_internal(ptr noundef nonnull %27, i64 noundef %gepdiff128, ptr noundef %28, i64 noundef %7, ptr noundef %4) - %31 = icmp ult i64 %30, -119 - br i1 %31, label %32, label %.thread - -32: ; preds = %24 - %33 = add i64 %30, -65536 - %or.cond8 = icmp ult i64 %33, -65535 - br i1 %or.cond8, label %.thread, label %34 - -34: ; preds = %32 - %35 = getelementptr inbounds nuw i8, ptr %0, i64 4 - %36 = trunc nuw i64 %30 to i16 - store i16 %36, ptr %35, align 1, !tbaa !17 - %37 = getelementptr inbounds nuw i8, ptr %27, i64 %30 - %38 = getelementptr inbounds nuw i8, ptr %28, i64 %7 - %39 = add nuw nsw i64 %29, %30 - %gepdiff129 = sub i64 %gepdiff, %39 + %14 = tail call fastcc i64 @HUF_compress1X_usingCTable_internal(ptr noundef nonnull %12, i64 noundef %gepdiff, ptr noundef %2, i64 noundef %7, ptr noundef %4) + %15 = icmp ult i64 %14, -119 + br i1 %15, label %16, label %.thread + +16: ; preds = %10 + %17 = add i64 %14, -65536 + %or.cond = icmp ult i64 %17, -65535 + br i1 %or.cond, label %.thread, label %18 + +18: ; preds = %16 + %19 = trunc nuw i64 %14 to i16 + store i16 %19, ptr %0, align 1, !tbaa !17 + %20 = getelementptr inbounds nuw i8, ptr %12, i64 %14 + %21 = getelementptr inbounds nuw i8, ptr %2, i64 %7 + %gepdiff127 = sub i64 %gepdiff, %14 + %22 = tail call fastcc i64 @HUF_compress1X_usingCTable_internal(ptr noundef nonnull %20, i64 noundef %gepdiff127, ptr noundef %21, i64 noundef %7, ptr noundef %4) + %23 = icmp ult i64 %22, -119 + br i1 %23, label %24, label %.thread + +24: ; preds = %18 + %25 = add i64 %22, -65536 + %or.cond6 = icmp ult i64 %25, -65535 + br i1 %or.cond6, label %.thread, label %26 + +26: ; preds = %24 + %27 = getelementptr inbounds nuw i8, ptr %0, i64 2 + %28 = trunc nuw i64 %22 to i16 + store i16 %28, ptr %27, align 1, !tbaa !17 + %29 = getelementptr inbounds nuw i8, ptr %20, i64 %22 + %30 = getelementptr inbounds nuw i8, ptr %21, i64 %7 + %31 = add nuw nsw i64 %14, %22 + %gepdiff128 = sub i64 %gepdiff, %31 + %32 = tail call fastcc i64 @HUF_compress1X_usingCTable_internal(ptr noundef nonnull %29, i64 noundef %gepdiff128, ptr noundef %30, i64 noundef %7, ptr noundef %4) + %33 = icmp ult i64 %32, -119 + br i1 %33, label %34, label %.thread + +34: ; preds = %26 + %35 = add i64 %32, -65536 + %or.cond8 = icmp ult i64 %35, -65535 + br i1 %or.cond8, label %.thread, label %36 + +36: ; preds = %34 + %37 = getelementptr inbounds nuw i8, ptr %0, i64 4 + %38 = trunc nuw i64 %32 to i16 + store i16 %38, ptr %37, align 1, !tbaa !17 + %39 = getelementptr inbounds nuw i8, ptr %29, i64 %32 + %40 = getelementptr inbounds nuw i8, ptr %30, i64 %7 + %41 = ptrtoint ptr %39 to i64 + %42 = sub i64 %13, %41 %.neg = mul i64 %7, -3 %gepdiff106 = add i64 %.neg, %3 - %40 = tail call fastcc i64 @HUF_compress1X_usingCTable_internal(ptr noundef nonnull %37, i64 noundef %gepdiff129, ptr noundef %38, i64 noundef %gepdiff106, ptr noundef %4) - %41 = icmp ult i64 %40, -119 - br i1 %41, label %42, label %.thread - -42: ; preds = %34 - %43 = add i64 %40, -65536 - %or.cond10 = icmp ult i64 %43, -65535 - br i1 %or.cond10, label %.thread, label %44 - -44: ; preds = %42 - %45 = add nuw nsw i64 %12, 6 - %46 = add nuw nsw i64 %45, %20 - %47 = add nuw nsw i64 %46, %30 - %48 = add nuw nsw i64 %47, %40 + %43 = tail call fastcc i64 @HUF_compress1X_usingCTable_internal(ptr noundef nonnull %39, i64 noundef %42, ptr noundef %40, i64 noundef %gepdiff106, ptr noundef %4) + %44 = icmp ult i64 %43, -119 + br i1 %44, label %45, label %.thread + +45: ; preds = %36 + %46 = add i64 %43, -65536 + %or.cond10 = icmp ult i64 %46, -65535 + br i1 %or.cond10, label %.thread, label %47 + +47: ; preds = %45 + %48 = getelementptr inbounds nuw i8, ptr %39, i64 %43 + %49 = ptrtoint ptr %48 to i64 + %50 = ptrtoint ptr %0 to i64 + %51 = sub i64 %49, %50 br label %.thread -.thread: ; preds = %42, %34, %32, %24, %22, %16, %14, %10, %5, %44 - %.0 = phi i64 [ %48, %44 ], [ 0, %5 ], [ 0, %14 ], [ %12, %10 ], [ 0, %22 ], [ %20, %16 ], [ 0, %32 ], [ %30, %24 ], [ 0, %42 ], [ %40, %34 ] +.thread: ; preds = %45, %36, %34, %26, %24, %18, %16, %10, %5, %47 + %.0 = phi i64 [ %51, %47 ], [ 0, %5 ], [ 0, %16 ], [ %14, %10 ], [ 0, %24 ], [ %22, %18 ], [ 0, %34 ], [ %32, %26 ], [ 0, %45 ], [ %43, %36 ] ret i64 %.0 } diff --git a/bench/cmake/optimized/zstd_decompress.ll b/bench/cmake/optimized/zstd_decompress.ll index 0784b1c902b..81c928461e1 100644 --- a/bench/cmake/optimized/zstd_decompress.ll +++ b/bench/cmake/optimized/zstd_decompress.ll @@ -2415,43 +2415,44 @@ define dso_local i64 @ZSTD_loadDEntropy(ptr noundef %0, ptr noundef %1, i64 noun 15: ; preds = %3 %16 = getelementptr inbounds nuw i8, ptr %1, i64 8 %17 = getelementptr inbounds nuw i8, ptr %0, i64 10264 + %18 = ptrtoint ptr %13 to i64 %gepdiff = add i64 %2, -8 - %18 = tail call i64 @HUF_readDTableX2_wksp(ptr noundef nonnull %17, ptr noundef nonnull %16, i64 noundef %gepdiff, ptr noundef %0, i64 noundef 10264, i32 noundef 0) #15 - %19 = icmp ult i64 %18, -119 - %20 = getelementptr inbounds nuw i8, ptr %16, i64 %18 - br i1 %19, label %21, label %.loopexit + %19 = tail call i64 @HUF_readDTableX2_wksp(ptr noundef nonnull %17, ptr noundef nonnull %16, i64 noundef %gepdiff, ptr noundef %0, i64 noundef 10264, i32 noundef 0) #15 + %20 = icmp ult i64 %19, -119 + %21 = getelementptr inbounds nuw i8, ptr %16, i64 %19 + br i1 %20, label %22, label %.loopexit -21: ; preds = %15 +22: ; preds = %15 call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %4) #15 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #15 store i32 31, ptr %5, align 4, !tbaa !41 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #15 - %gepdiff103 = sub i64 %gepdiff, %18 - %22 = call i64 @FSE_readNCount(ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef nonnull %20, i64 noundef %gepdiff103) #15 - %23 = icmp ult i64 %22, -119 - br i1 %23, label %24, label %.thread - -24: ; preds = %21 - %25 = load i32, ptr %5, align 4, !tbaa !41 - %26 = icmp ugt i32 %25, 31 - br i1 %26, label %.thread, label %27 - -27: ; preds = %24 - %28 = load i32, ptr %6, align 4, !tbaa !41 - %29 = icmp ugt i32 %28, 8 - br i1 %29, label %.thread, label %30 - -.thread: ; preds = %21, %24, %27 + %gepdiff103 = sub i64 %gepdiff, %19 + %23 = call i64 @FSE_readNCount(ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef nonnull %21, i64 noundef %gepdiff103) #15 + %24 = icmp ult i64 %23, -119 + br i1 %24, label %25, label %.thread + +25: ; preds = %22 + %26 = load i32, ptr %5, align 4, !tbaa !41 + %27 = icmp ugt i32 %26, 31 + br i1 %27, label %.thread, label %28 + +28: ; preds = %25 + %29 = load i32, ptr %6, align 4, !tbaa !41 + %30 = icmp ugt i32 %29, 8 + br i1 %30, label %.thread, label %31 + +.thread: ; preds = %22, %25, %28 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #15 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #15 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %4) #15 br label %.loopexit -30: ; preds = %27 - %31 = getelementptr inbounds nuw i8, ptr %0, i64 4104 - %32 = getelementptr inbounds nuw i8, ptr %0, i64 26664 - call void @ZSTD_buildFSETable(ptr noundef nonnull %31, ptr noundef nonnull %4, i32 noundef %25, ptr noundef nonnull @OF_base, ptr noundef nonnull @OF_bits, i32 noundef %28, ptr noundef nonnull %32, i64 noundef 628, i32 noundef 0) #15 - %33 = getelementptr inbounds nuw i8, ptr %20, i64 %22 +31: ; preds = %28 + %32 = getelementptr inbounds nuw i8, ptr %0, i64 4104 + %33 = getelementptr inbounds nuw i8, ptr %0, i64 26664 + call void @ZSTD_buildFSETable(ptr noundef nonnull %32, ptr noundef nonnull %4, i32 noundef %26, ptr noundef nonnull @OF_base, ptr noundef nonnull @OF_bits, i32 noundef %29, ptr noundef nonnull %33, i64 noundef 628, i32 noundef 0) #15 + %34 = getelementptr inbounds nuw i8, ptr %21, i64 %23 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #15 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #15 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %4) #15 @@ -2459,32 +2460,32 @@ define dso_local i64 @ZSTD_loadDEntropy(ptr noundef %0, ptr noundef %1, i64 noun call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #15 store i32 52, ptr %8, align 4, !tbaa !41 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #15 - %34 = add i64 %18, %22 - %gepdiff104 = sub i64 %gepdiff, %34 - %35 = call i64 @FSE_readNCount(ptr noundef nonnull %7, ptr noundef nonnull %8, ptr noundef nonnull %9, ptr noundef nonnull %33, i64 noundef %gepdiff104) #15 - %36 = icmp ult i64 %35, -119 - br i1 %36, label %37, label %.thread93 - -37: ; preds = %30 - %38 = load i32, ptr %8, align 4, !tbaa !41 - %39 = icmp ugt i32 %38, 52 - br i1 %39, label %.thread93, label %40 - -40: ; preds = %37 - %41 = load i32, ptr %9, align 4, !tbaa !41 - %42 = icmp ugt i32 %41, 9 - br i1 %42, label %.thread93, label %43 - -.thread93: ; preds = %30, %37, %40 + %35 = add i64 %19, %23 + %gepdiff104 = sub i64 %gepdiff, %35 + %36 = call i64 @FSE_readNCount(ptr noundef nonnull %7, ptr noundef nonnull %8, ptr noundef nonnull %9, ptr noundef nonnull %34, i64 noundef %gepdiff104) #15 + %37 = icmp ult i64 %36, -119 + br i1 %37, label %38, label %.thread93 + +38: ; preds = %31 + %39 = load i32, ptr %8, align 4, !tbaa !41 + %40 = icmp ugt i32 %39, 52 + br i1 %40, label %.thread93, label %41 + +41: ; preds = %38 + %42 = load i32, ptr %9, align 4, !tbaa !41 + %43 = icmp ugt i32 %42, 9 + br i1 %43, label %.thread93, label %44 + +.thread93: ; preds = %31, %38, %41 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #15 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #15 call void @llvm.lifetime.end.p0(i64 106, ptr nonnull %7) #15 br label %.loopexit -43: ; preds = %40 - %44 = getelementptr inbounds nuw i8, ptr %0, i64 6160 - call void @ZSTD_buildFSETable(ptr noundef nonnull %44, ptr noundef nonnull %7, i32 noundef %38, ptr noundef nonnull @ML_base, ptr noundef nonnull @ML_bits, i32 noundef %41, ptr noundef nonnull %32, i64 noundef 628, i32 noundef 0) #15 - %45 = getelementptr inbounds nuw i8, ptr %33, i64 %35 +44: ; preds = %41 + %45 = getelementptr inbounds nuw i8, ptr %0, i64 6160 + call void @ZSTD_buildFSETable(ptr noundef nonnull %45, ptr noundef nonnull %7, i32 noundef %39, ptr noundef nonnull @ML_base, ptr noundef nonnull @ML_bits, i32 noundef %42, ptr noundef nonnull %33, i64 noundef 628, i32 noundef 0) #15 + %46 = getelementptr inbounds nuw i8, ptr %34, i64 %36 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #15 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #15 call void @llvm.lifetime.end.p0(i64 106, ptr nonnull %7) #15 @@ -2492,71 +2493,70 @@ define dso_local i64 @ZSTD_loadDEntropy(ptr noundef %0, ptr noundef %1, i64 noun call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #15 store i32 35, ptr %11, align 4, !tbaa !41 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #15 - %46 = add i64 %34, %35 - %gepdiff105 = sub i64 %gepdiff, %46 - %47 = call i64 @FSE_readNCount(ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull %45, i64 noundef %gepdiff105) #15 - %48 = icmp ult i64 %47, -119 - br i1 %48, label %49, label %.thread97 - -49: ; preds = %43 - %50 = load i32, ptr %11, align 4, !tbaa !41 - %51 = icmp ugt i32 %50, 35 - br i1 %51, label %.thread97, label %52 - -52: ; preds = %49 - %53 = load i32, ptr %12, align 4, !tbaa !41 - %54 = icmp ugt i32 %53, 9 - br i1 %54, label %.thread97, label %55 - -.thread97: ; preds = %43, %49, %52 + %47 = ptrtoint ptr %46 to i64 + %48 = sub i64 %18, %47 + %49 = call i64 @FSE_readNCount(ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull %46, i64 noundef %48) #15 + %50 = icmp ult i64 %49, -119 + br i1 %50, label %51, label %.thread97 + +51: ; preds = %44 + %52 = load i32, ptr %11, align 4, !tbaa !41 + %53 = icmp ugt i32 %52, 35 + br i1 %53, label %.thread97, label %54 + +54: ; preds = %51 + %55 = load i32, ptr %12, align 4, !tbaa !41 + %56 = icmp ugt i32 %55, 9 + br i1 %56, label %.thread97, label %57 + +.thread97: ; preds = %44, %51, %54 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #15 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #15 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %10) #15 br label %.loopexit -55: ; preds = %52 - call void @ZSTD_buildFSETable(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %50, ptr noundef nonnull @LL_base, ptr noundef nonnull @LL_bits, i32 noundef %53, ptr noundef nonnull %32, i64 noundef 628, i32 noundef 0) #15 - %56 = getelementptr inbounds nuw i8, ptr %45, i64 %47 +57: ; preds = %54 + call void @ZSTD_buildFSETable(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %52, ptr noundef nonnull @LL_base, ptr noundef nonnull @LL_bits, i32 noundef %55, ptr noundef nonnull %33, i64 noundef 628, i32 noundef 0) #15 + %58 = getelementptr inbounds nuw i8, ptr %46, i64 %49 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #15 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #15 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %10) #15 - %57 = getelementptr inbounds nuw i8, ptr %56, i64 12 - %58 = icmp ugt ptr %57, %13 - br i1 %58, label %.loopexit, label %59 - -59: ; preds = %55 - %.neg116 = add i64 %2, -20 - %60 = add i64 %46, %47 - %gepdiff106 = sub i64 %.neg116, %60 - %61 = getelementptr inbounds nuw i8, ptr %0, i64 26652 - br label %62 - -62: ; preds = %59, %.critedge - %indvars.iv = phi i64 [ 0, %59 ], [ %indvars.iv.next, %.critedge ] - %.469123 = phi ptr [ %56, %59 ], [ %66, %.critedge ] - %.469.val = load i32, ptr %.469123, align 1, !tbaa !41 - %63 = icmp eq i32 %.469.val, 0 - %64 = zext i32 %.469.val to i64 - %65 = icmp ult i64 %gepdiff106, %64 - %or.cond = or i1 %63, %65 + %59 = getelementptr inbounds nuw i8, ptr %58, i64 12 + %60 = icmp ugt ptr %59, %13 + br i1 %60, label %.loopexit, label %61 + +61: ; preds = %57 + %62 = ptrtoint ptr %59 to i64 + %63 = sub i64 %18, %62 + %64 = getelementptr inbounds nuw i8, ptr %0, i64 26652 + br label %65 + +65: ; preds = %61, %.critedge + %indvars.iv = phi i64 [ 0, %61 ], [ %indvars.iv.next, %.critedge ] + %.469111 = phi ptr [ %58, %61 ], [ %69, %.critedge ] + %.469.val = load i32, ptr %.469111, align 1, !tbaa !41 + %66 = icmp eq i32 %.469.val, 0 + %67 = zext i32 %.469.val to i64 + %68 = icmp ult i64 %63, %67 + %or.cond = select i1 %66, i1 true, i1 %68 br i1 %or.cond, label %.loopexit, label %.critedge -.critedge: ; preds = %62 - %66 = getelementptr inbounds nuw i8, ptr %.469123, i64 4 - %67 = getelementptr inbounds nuw [3 x i32], ptr %61, i64 0, i64 %indvars.iv - store i32 %.469.val, ptr %67, align 4, !tbaa !41 +.critedge: ; preds = %65 + %69 = getelementptr inbounds nuw i8, ptr %.469111, i64 4 + %70 = getelementptr inbounds nuw [3 x i32], ptr %64, i64 0, i64 %indvars.iv + store i32 %.469.val, ptr %70, align 4, !tbaa !41 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond = icmp eq i64 %indvars.iv.next, 3 - br i1 %exitcond, label %68, label %62, !llvm.loop !114 + br i1 %exitcond, label %71, label %65, !llvm.loop !114 -68: ; preds = %.critedge - %69 = ptrtoint ptr %66 to i64 - %70 = ptrtoint ptr %1 to i64 - %71 = sub i64 %69, %70 +71: ; preds = %.critedge + %72 = ptrtoint ptr %69 to i64 + %73 = ptrtoint ptr %1 to i64 + %74 = sub i64 %72, %73 br label %.loopexit -.loopexit: ; preds = %62, %.thread97, %.thread93, %.thread, %55, %3, %15, %68 - %.0 = phi i64 [ %71, %68 ], [ -30, %15 ], [ -30, %3 ], [ -30, %55 ], [ -30, %.thread ], [ -30, %.thread93 ], [ -30, %.thread97 ], [ -30, %62 ] +.loopexit: ; preds = %65, %.thread97, %.thread93, %.thread, %57, %3, %15, %71 + %.0 = phi i64 [ %74, %71 ], [ -30, %15 ], [ -30, %3 ], [ -30, %57 ], [ -30, %.thread ], [ -30, %.thread93 ], [ -30, %.thread97 ], [ -30, %65 ] ret i64 %.0 } diff --git a/bench/darktable/optimized/export.ll b/bench/darktable/optimized/export.ll index 9269f1bc628..a1f00a79ed7 100644 --- a/bench/darktable/optimized/export.ll +++ b/bench/darktable/optimized/export.ll @@ -2939,289 +2939,285 @@ define void @init_presets(ptr noundef readonly captures(none) %0) local_unnamed_ 86: ; preds = %67 %87 = getelementptr i8, ptr %80, i64 %81 %88 = getelementptr i8, ptr %87, i64 1 - %89 = add i64 %69, 40 - %90 = add i64 %89, %72 - %91 = add i64 %90, %75 - %92 = add i64 %91, %78 - %93 = add i64 %92, %81 - %94 = add i64 %93, 1 - %95 = load i32, ptr %88, align 4, !tbaa !116 - %96 = getelementptr i8, ptr %87, i64 5 - %97 = load i32, ptr %96, align 4, !tbaa !116 - %98 = getelementptr i8, ptr %87, i64 9 - %99 = load i32, ptr %98, align 4, !tbaa !116 - %100 = getelementptr i8, ptr %87, i64 13 - %101 = load i32, ptr %100, align 4, !tbaa !116 - %102 = getelementptr i8, ptr %87, i64 17 - %103 = sext i32 %99 to i64 - %104 = getelementptr inbounds i8, ptr %102, i64 %103 - %105 = sext i32 %101 to i64 - %106 = getelementptr inbounds nuw i8, ptr %82, i64 48 - %107 = load ptr, ptr %106, align 8, !tbaa !132 + %89 = ptrtoint ptr %88 to i64 + %90 = ptrtoint ptr %33 to i64 + %91 = sub i64 %89, %90 + %92 = load i32, ptr %88, align 4, !tbaa !116 + %93 = getelementptr i8, ptr %87, i64 5 + %94 = load i32, ptr %93, align 4, !tbaa !116 + %95 = getelementptr i8, ptr %87, i64 9 + %96 = load i32, ptr %95, align 4, !tbaa !116 + %97 = getelementptr i8, ptr %87, i64 13 + %98 = load i32, ptr %97, align 4, !tbaa !116 + %99 = getelementptr i8, ptr %87, i64 17 + %100 = sext i32 %96 to i64 + %101 = getelementptr inbounds i8, ptr %99, i64 %100 + %102 = sext i32 %98 to i64 + %103 = getelementptr inbounds nuw i8, ptr %82, i64 48 + %104 = load ptr, ptr %103, align 8, !tbaa !132 + %105 = call i32 (...) %104() #19 + %106 = getelementptr inbounds nuw i8, ptr %83, i64 48 + %107 = load ptr, ptr %106, align 8, !tbaa !133 %108 = call i32 (...) %107() #19 - %109 = getelementptr inbounds nuw i8, ptr %83, i64 48 - %110 = load ptr, ptr %109, align 8, !tbaa !133 - %111 = call i32 (...) %110() #19 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #19 - store i32 %108, ptr %4, align 4, !tbaa !116 + store i32 %105, ptr %4, align 4, !tbaa !116 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #19 store i64 0, ptr %5, align 8, !tbaa !134 - %112 = call noalias ptr @malloc(i64 noundef %103) #22 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %112, ptr align 1 %102, i64 %103, i1 false) - %113 = icmp slt i32 %95, %108 - br i1 %113, label %.lr.ph, label %._crit_edge + %109 = call noalias ptr @malloc(i64 noundef %100) #22 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %109, ptr align 1 %99, i64 %100, i1 false) + %110 = icmp slt i32 %92, %105 + br i1 %110, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %86 - %114 = getelementptr inbounds nuw i8, ptr %82, i64 104 - %115 = load ptr, ptr %114, align 8, !tbaa !135 - %.not183231 = icmp eq ptr %115, null + %111 = getelementptr inbounds nuw i8, ptr %82, i64 104 + %112 = load ptr, ptr %111, align 8, !tbaa !135 + %.not183231 = icmp eq ptr %112, null br i1 %.not183231, label %.loopexit, label %.lr.ph235 -116: ; preds = %120 - %117 = load ptr, ptr %114, align 8, !tbaa !135 - %.not183 = icmp eq ptr %117, null +113: ; preds = %117 + %114 = load ptr, ptr %111, align 8, !tbaa !135 + %.not183 = icmp eq ptr %114, null br i1 %.not183, label %.loopexit, label %.lr.ph235 -.lr.ph235: ; preds = %.lr.ph, %116 - %118 = phi ptr [ %117, %116 ], [ %115, %.lr.ph ] - %.0161196234 = phi ptr [ %119, %116 ], [ %112, %.lr.ph ] - %.0159197233 = phi i32 [ %122, %116 ], [ %95, %.lr.ph ] - %.0157198232 = phi i64 [ %121, %116 ], [ %103, %.lr.ph ] - %119 = call ptr %118(ptr noundef nonnull %82, ptr noundef %.0161196234, i64 noundef %.0157198232, i32 noundef %.0159197233, ptr noundef nonnull %4, ptr noundef nonnull %5) #19 - %.not184 = icmp eq ptr %119, null - br i1 %.not184, label %.loopexit, label %120 +.lr.ph235: ; preds = %.lr.ph, %113 + %115 = phi ptr [ %114, %113 ], [ %112, %.lr.ph ] + %.0161196234 = phi ptr [ %116, %113 ], [ %109, %.lr.ph ] + %.0159197233 = phi i32 [ %119, %113 ], [ %92, %.lr.ph ] + %.0157198232 = phi i64 [ %118, %113 ], [ %100, %.lr.ph ] + %116 = call ptr %115(ptr noundef nonnull %82, ptr noundef %.0161196234, i64 noundef %.0157198232, i32 noundef %.0159197233, ptr noundef nonnull %4, ptr noundef nonnull %5) #19 + %.not184 = icmp eq ptr %116, null + br i1 %.not184, label %.loopexit, label %117 -120: ; preds = %.lr.ph235 +117: ; preds = %.lr.ph235 call void @free(ptr noundef %.0161196234) #19 - %121 = load i64, ptr %5, align 8, !tbaa !134 - %122 = load i32, ptr %4, align 4, !tbaa !116 - %123 = icmp slt i32 %122, %108 - br i1 %123, label %116, label %._crit_edge - -._crit_edge: ; preds = %120, %86 - %.0157.lcssa = phi i64 [ %103, %86 ], [ %121, %120 ] - %.0153.lcssa = phi ptr [ null, %86 ], [ %119, %120 ] - store i32 %111, ptr %4, align 4, !tbaa !116 + %118 = load i64, ptr %5, align 8, !tbaa !134 + %119 = load i32, ptr %4, align 4, !tbaa !116 + %120 = icmp slt i32 %119, %105 + br i1 %120, label %113, label %._crit_edge + +._crit_edge: ; preds = %117, %86 + %.0157.lcssa = phi i64 [ %100, %86 ], [ %118, %117 ] + %.0153.lcssa = phi ptr [ null, %86 ], [ %116, %117 ] + store i32 %108, ptr %4, align 4, !tbaa !116 store i64 0, ptr %5, align 8, !tbaa !134 - %124 = call noalias ptr @malloc(i64 noundef %105) #22 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %124, ptr align 1 %104, i64 %105, i1 false) - %125 = icmp slt i32 %97, %111 - br i1 %125, label %.lr.ph206, label %._crit_edge207 + %121 = call noalias ptr @malloc(i64 noundef %102) #22 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %121, ptr align 1 %101, i64 %102, i1 false) + %122 = icmp slt i32 %94, %108 + br i1 %122, label %.lr.ph206, label %._crit_edge207 .lr.ph206: ; preds = %._crit_edge - %126 = getelementptr inbounds nuw i8, ptr %83, i64 144 - %127 = load ptr, ptr %126, align 8, !tbaa !136 - %.not181238 = icmp eq ptr %127, null + %123 = getelementptr inbounds nuw i8, ptr %83, i64 144 + %124 = load ptr, ptr %123, align 8, !tbaa !136 + %.not181238 = icmp eq ptr %124, null br i1 %.not181238, label %.loopexit, label %.lr.ph242 -128: ; preds = %132 - %129 = load ptr, ptr %126, align 8, !tbaa !136 - %.not181 = icmp eq ptr %129, null +125: ; preds = %129 + %126 = load ptr, ptr %123, align 8, !tbaa !136 + %.not181 = icmp eq ptr %126, null br i1 %.not181, label %.loopexit, label %.lr.ph242 -.lr.ph242: ; preds = %.lr.ph206, %128 - %130 = phi ptr [ %129, %128 ], [ %127, %.lr.ph206 ] - %.1162201241 = phi ptr [ %131, %128 ], [ %124, %.lr.ph206 ] - %.1160202240 = phi i32 [ %134, %128 ], [ %97, %.lr.ph206 ] - %.0158203239 = phi i64 [ %133, %128 ], [ %105, %.lr.ph206 ] - %131 = call ptr %130(ptr noundef nonnull %83, ptr noundef %.1162201241, i64 noundef %.0158203239, i32 noundef %.1160202240, ptr noundef nonnull %4, ptr noundef nonnull %5) #19 - %.not182 = icmp eq ptr %131, null - br i1 %.not182, label %.loopexit, label %132 +.lr.ph242: ; preds = %.lr.ph206, %125 + %127 = phi ptr [ %126, %125 ], [ %124, %.lr.ph206 ] + %.1162201241 = phi ptr [ %128, %125 ], [ %121, %.lr.ph206 ] + %.1160202240 = phi i32 [ %131, %125 ], [ %94, %.lr.ph206 ] + %.0158203239 = phi i64 [ %130, %125 ], [ %102, %.lr.ph206 ] + %128 = call ptr %127(ptr noundef nonnull %83, ptr noundef %.1162201241, i64 noundef %.0158203239, i32 noundef %.1160202240, ptr noundef nonnull %4, ptr noundef nonnull %5) #19 + %.not182 = icmp eq ptr %128, null + br i1 %.not182, label %.loopexit, label %129 -132: ; preds = %.lr.ph242 +129: ; preds = %.lr.ph242 call void @free(ptr noundef %.1162201241) #19 - %133 = load i64, ptr %5, align 8, !tbaa !134 - %134 = load i32, ptr %4, align 4, !tbaa !116 - %135 = icmp slt i32 %134, %111 - br i1 %135, label %128, label %._crit_edge207.thread + %130 = load i64, ptr %5, align 8, !tbaa !134 + %131 = load i32, ptr %4, align 4, !tbaa !116 + %132 = icmp slt i32 %131, %108 + br i1 %132, label %125, label %._crit_edge207.thread -._crit_edge207.thread: ; preds = %132 - %136 = icmp ne ptr %.0153.lcssa, null - br label %137 +._crit_edge207.thread: ; preds = %129 + %133 = icmp ne ptr %.0153.lcssa, null + br label %134 ._crit_edge207: ; preds = %._crit_edge %.not226 = icmp eq ptr %.0153.lcssa, null - br i1 %.not226, label %224, label %137 - -137: ; preds = %._crit_edge207.thread, %._crit_edge207 - %138 = phi i1 [ %136, %._crit_edge207.thread ], [ true, %._crit_edge207 ] - %.1156.lcssa221 = phi ptr [ %131, %._crit_edge207.thread ], [ null, %._crit_edge207 ] - %.0158.lcssa220 = phi i64 [ %133, %._crit_edge207.thread ], [ %105, %._crit_edge207 ] - %139 = add nsw i32 %101, %99 - %140 = sext i32 %139 to i64 - %141 = sub nsw i64 %36, %140 - %142 = add i64 %.0157.lcssa, %141 - %143 = add i64 %142, %.0158.lcssa220 - %144 = call noalias ptr @malloc(i64 noundef %143) #22 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %144, ptr align 1 %33, i64 %94, i1 false) - %145 = getelementptr inbounds nuw i8, ptr %144, i64 %94 - store i32 %108, ptr %145, align 1 - %146 = getelementptr i8, ptr %144, i64 %93 - %147 = getelementptr i8, ptr %146, i64 5 - store i32 %111, ptr %147, align 1 - %148 = getelementptr i8, ptr %146, i64 9 + br i1 %.not226, label %220, label %134 + +134: ; preds = %._crit_edge207.thread, %._crit_edge207 + %135 = phi i1 [ %133, %._crit_edge207.thread ], [ true, %._crit_edge207 ] + %.1156.lcssa221 = phi ptr [ %128, %._crit_edge207.thread ], [ null, %._crit_edge207 ] + %.0158.lcssa220 = phi i64 [ %130, %._crit_edge207.thread ], [ %102, %._crit_edge207 ] + %136 = add nsw i32 %98, %96 + %137 = sext i32 %136 to i64 + %138 = sub nsw i64 %36, %137 + %139 = add i64 %.0157.lcssa, %138 + %140 = add i64 %139, %.0158.lcssa220 + %141 = call noalias ptr @malloc(i64 noundef %140) #22 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %141, ptr align 1 %33, i64 %91, i1 false) + %142 = getelementptr inbounds nuw i8, ptr %141, i64 %91 + store i32 %105, ptr %142, align 1 + %143 = getelementptr i8, ptr %142, i64 4 + store i32 %108, ptr %143, align 1 + %144 = getelementptr i8, ptr %142, i64 8 %.0.extract.trunc61 = trunc i64 %.0157.lcssa to i32 - store i32 %.0.extract.trunc61, ptr %148, align 1 - %149 = getelementptr i8, ptr %146, i64 13 + store i32 %.0.extract.trunc61, ptr %144, align 1 + %145 = getelementptr i8, ptr %142, i64 12 %.0.extract.trunc = trunc i64 %.0158.lcssa220 to i32 - store i32 %.0.extract.trunc, ptr %149, align 1 - %150 = add i64 %93, 17 - %151 = getelementptr inbounds nuw i8, ptr %144, i64 %150 - br i1 %138, label %152, label %153 - -152: ; preds = %137 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %151, ptr nonnull align 1 %.0153.lcssa, i64 %.0157.lcssa, i1 false) - br label %154 - -153: ; preds = %137 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %151, ptr align 1 %102, i64 %103, i1 false) - br label %154 - -154: ; preds = %153, %152 - %155 = getelementptr i8, ptr %144, i64 %.0157.lcssa - %156 = getelementptr i8, ptr %155, i64 %150 - br i1 %125, label %157, label %158 - -157: ; preds = %154 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %156, ptr nonnull align 1 %.1156.lcssa221, i64 %.0158.lcssa220, i1 false) - br label %159 + store i32 %.0.extract.trunc, ptr %145, align 1 + %146 = add i64 %91, 16 + %147 = getelementptr inbounds nuw i8, ptr %141, i64 %146 + br i1 %135, label %148, label %149 + +148: ; preds = %134 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %147, ptr nonnull align 1 %.0153.lcssa, i64 %.0157.lcssa, i1 false) + br label %150 + +149: ; preds = %134 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %147, ptr align 1 %99, i64 %100, i1 false) + br label %150 + +150: ; preds = %149, %148 + %151 = getelementptr i8, ptr %141, i64 %.0157.lcssa + %152 = getelementptr i8, ptr %151, i64 %146 + br i1 %122, label %153, label %154 + +153: ; preds = %150 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %152, ptr nonnull align 1 %.1156.lcssa221, i64 %.0158.lcssa220, i1 false) + br label %155 + +154: ; preds = %150 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %152, ptr align 1 %101, i64 %102, i1 false) + br label %155 + +155: ; preds = %154, %153 + call void (ptr, ...) @dt_print_ext(ptr noundef nonnull @.str.109, ptr noundef %38, i32 noundef %92, i32 noundef %94, i32 noundef %105, i32 noundef %108) #19 + call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #19 + %156 = load i32, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 8), align 8, !tbaa !104 + %157 = and i32 %156, 256 + %.not177 = icmp eq i32 %157, 0 + br i1 %.not177, label %159, label %158 -158: ; preds = %154 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %156, ptr align 1 %104, i64 %105, i1 false) +158: ; preds = %155 + call void (ptr, ...) @dt_print_ext(ptr noundef nonnull @.str.103, ptr noundef nonnull @.str.28, i32 noundef 2006, ptr noundef nonnull @__FUNCTION__.init_presets, ptr noundef nonnull @.str.110) #19 br label %159 -159: ; preds = %158, %157 - call void (ptr, ...) @dt_print_ext(ptr noundef nonnull @.str.109, ptr noundef %38, i32 noundef %95, i32 noundef %97, i32 noundef %108, i32 noundef %111) #19 - call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #19 - %160 = load i32, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 8), align 8, !tbaa !104 - %161 = and i32 %160, 256 - %.not177 = icmp eq i32 %161, 0 - br i1 %.not177, label %163, label %162 +159: ; preds = %158, %155 + %160 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 136), align 8, !tbaa !118 + %161 = call ptr @dt_database_get(ptr noundef %160) #19 + %162 = call i32 @sqlite3_prepare_v2(ptr noundef %161, ptr noundef nonnull @.str.110, i32 noundef -1, ptr noundef nonnull %6, ptr noundef null) #19 + %.not178 = icmp eq i32 %162, 0 + br i1 %.not178, label %169, label %163 + +163: ; preds = %159 + %164 = load ptr, ptr @stderr, align 8, !tbaa !119 + %165 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 136), align 8, !tbaa !118 + %166 = call ptr @dt_database_get(ptr noundef %165) #19 + %167 = call ptr @sqlite3_errmsg(ptr noundef %166) #19 + %168 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %164, ptr noundef nonnull @.str.105, ptr noundef nonnull @.str.28, i32 noundef 2006, ptr noundef nonnull @__FUNCTION__.init_presets, ptr noundef nonnull @.str.110, ptr noundef %167) #23 + br label %169 + +169: ; preds = %163, %159 + %170 = load ptr, ptr %6, align 8, !tbaa !121 + %171 = trunc i64 %140 to i32 + %172 = call i32 @sqlite3_bind_blob(ptr noundef %170, i32 noundef 1, ptr noundef nonnull %141, i32 noundef %171, ptr noundef nonnull inttoptr (i64 -1 to ptr)) #19 + %.not179 = icmp eq i32 %172, 0 + br i1 %.not179, label %179, label %173 + +173: ; preds = %169 + %174 = load ptr, ptr @stderr, align 8, !tbaa !119 + %175 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 136), align 8, !tbaa !118 + %176 = call ptr @dt_database_get(ptr noundef %175) #19 + %177 = call ptr @sqlite3_errmsg(ptr noundef %176) #19 + %178 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %174, ptr noundef nonnull @.str.108, ptr noundef nonnull @.str.28, i32 noundef 2008, ptr noundef nonnull @__FUNCTION__.init_presets, ptr noundef %177) #23 + br label %179 -162: ; preds = %159 - call void (ptr, ...) @dt_print_ext(ptr noundef nonnull @.str.103, ptr noundef nonnull @.str.28, i32 noundef 2006, ptr noundef nonnull @__FUNCTION__.init_presets, ptr noundef nonnull @.str.110) #19 - br label %163 - -163: ; preds = %162, %159 - %164 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 136), align 8, !tbaa !118 - %165 = call ptr @dt_database_get(ptr noundef %164) #19 - %166 = call i32 @sqlite3_prepare_v2(ptr noundef %165, ptr noundef nonnull @.str.110, i32 noundef -1, ptr noundef nonnull %6, ptr noundef null) #19 - %.not178 = icmp eq i32 %166, 0 - br i1 %.not178, label %173, label %167 - -167: ; preds = %163 - %168 = load ptr, ptr @stderr, align 8, !tbaa !119 - %169 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 136), align 8, !tbaa !118 - %170 = call ptr @dt_database_get(ptr noundef %169) #19 - %171 = call ptr @sqlite3_errmsg(ptr noundef %170) #19 - %172 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %168, ptr noundef nonnull @.str.105, ptr noundef nonnull @.str.28, i32 noundef 2006, ptr noundef nonnull @__FUNCTION__.init_presets, ptr noundef nonnull @.str.110, ptr noundef %171) #23 - br label %173 - -173: ; preds = %167, %163 - %174 = load ptr, ptr %6, align 8, !tbaa !121 - %175 = trunc i64 %143 to i32 - %176 = call i32 @sqlite3_bind_blob(ptr noundef %174, i32 noundef 1, ptr noundef nonnull %144, i32 noundef %175, ptr noundef nonnull inttoptr (i64 -1 to ptr)) #19 - %.not179 = icmp eq i32 %176, 0 - br i1 %.not179, label %183, label %177 - -177: ; preds = %173 - %178 = load ptr, ptr @stderr, align 8, !tbaa !119 - %179 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 136), align 8, !tbaa !118 - %180 = call ptr @dt_database_get(ptr noundef %179) #19 - %181 = call ptr @sqlite3_errmsg(ptr noundef %180) #19 - %182 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %178, ptr noundef nonnull @.str.108, ptr noundef nonnull @.str.28, i32 noundef 2008, ptr noundef nonnull @__FUNCTION__.init_presets, ptr noundef %181) #23 - br label %183 - -183: ; preds = %177, %173 - %184 = load ptr, ptr %6, align 8, !tbaa !121 - %185 = call i32 @sqlite3_bind_int(ptr noundef %184, i32 noundef 2, i32 noundef %29) #19 - %.not180 = icmp eq i32 %185, 0 - br i1 %.not180, label %192, label %186 - -186: ; preds = %183 - %187 = load ptr, ptr @stderr, align 8, !tbaa !119 - %188 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 136), align 8, !tbaa !118 - %189 = call ptr @dt_database_get(ptr noundef %188) #19 - %190 = call ptr @sqlite3_errmsg(ptr noundef %189) #19 - %191 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %187, ptr noundef nonnull @.str.108, ptr noundef nonnull @.str.28, i32 noundef 2009, ptr noundef nonnull @__FUNCTION__.init_presets, ptr noundef %190) #23 - br label %192 - -192: ; preds = %186, %183 - %193 = load ptr, ptr %6, align 8, !tbaa !121 - %194 = call i32 @sqlite3_step(ptr noundef %193) #19 - %195 = load ptr, ptr %6, align 8, !tbaa !121 - %196 = call i32 @sqlite3_finalize(ptr noundef %195) #19 +179: ; preds = %173, %169 + %180 = load ptr, ptr %6, align 8, !tbaa !121 + %181 = call i32 @sqlite3_bind_int(ptr noundef %180, i32 noundef 2, i32 noundef %29) #19 + %.not180 = icmp eq i32 %181, 0 + br i1 %.not180, label %188, label %182 + +182: ; preds = %179 + %183 = load ptr, ptr @stderr, align 8, !tbaa !119 + %184 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 136), align 8, !tbaa !118 + %185 = call ptr @dt_database_get(ptr noundef %184) #19 + %186 = call ptr @sqlite3_errmsg(ptr noundef %185) #19 + %187 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %183, ptr noundef nonnull @.str.108, ptr noundef nonnull @.str.28, i32 noundef 2009, ptr noundef nonnull @__FUNCTION__.init_presets, ptr noundef %186) #23 + br label %188 + +188: ; preds = %182, %179 + %189 = load ptr, ptr %6, align 8, !tbaa !121 + %190 = call i32 @sqlite3_step(ptr noundef %189) #19 + %191 = load ptr, ptr %6, align 8, !tbaa !121 + %192 = call i32 @sqlite3_finalize(ptr noundef %191) #19 call void @free(ptr noundef %.0153.lcssa) #19 call void @free(ptr noundef %.1156.lcssa221) #19 - call void @free(ptr noundef nonnull %144) #19 + call void @free(ptr noundef nonnull %141) #19 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #19 - br label %224 + br label %220 -.loopexit: ; preds = %.lr.ph235, %116, %.lr.ph242, %128, %.lr.ph, %.lr.ph206 - %.0155 = phi ptr [ null, %.lr.ph206 ], [ null, %.lr.ph ], [ %131, %128 ], [ null, %.lr.ph242 ], [ null, %116 ], [ null, %.lr.ph235 ] - %.1154 = phi ptr [ %.0153.lcssa, %.lr.ph206 ], [ null, %.lr.ph ], [ %.0153.lcssa, %128 ], [ %.0153.lcssa, %.lr.ph242 ], [ null, %.lr.ph235 ], [ %119, %116 ] +.loopexit: ; preds = %.lr.ph235, %113, %.lr.ph242, %125, %.lr.ph, %.lr.ph206 + %.0155 = phi ptr [ null, %.lr.ph206 ], [ null, %.lr.ph ], [ %128, %125 ], [ null, %.lr.ph242 ], [ null, %113 ], [ null, %.lr.ph235 ] + %.1154 = phi ptr [ %.0153.lcssa, %.lr.ph206 ], [ null, %.lr.ph ], [ %.0153.lcssa, %125 ], [ %.0153.lcssa, %.lr.ph242 ], [ null, %.lr.ph235 ], [ %116, %113 ] call void @free(ptr noundef %.1154) #19 call void @free(ptr noundef %.0155) #19 - call void (ptr, ...) @dt_print_ext(ptr noundef nonnull @.str.111, ptr noundef %38, i32 noundef %95, i32 noundef %97, i32 noundef %108, i32 noundef %111) #19 - %197 = load i32, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 8), align 8, !tbaa !104 - %198 = and i32 %197, 256 - %.not185 = icmp eq i32 %198, 0 - br i1 %.not185, label %200, label %199 + call void (ptr, ...) @dt_print_ext(ptr noundef nonnull @.str.111, ptr noundef %38, i32 noundef %92, i32 noundef %94, i32 noundef %105, i32 noundef %108) #19 + %193 = load i32, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 8), align 8, !tbaa !104 + %194 = and i32 %193, 256 + %.not185 = icmp eq i32 %194, 0 + br i1 %.not185, label %196, label %195 -199: ; preds = %.loopexit +195: ; preds = %.loopexit call void (ptr, ...) @dt_print_ext(ptr noundef nonnull @.str.103, ptr noundef nonnull @.str.28, i32 noundef 2030, ptr noundef nonnull @__FUNCTION__.init_presets, ptr noundef nonnull @.str.107) #19 - br label %200 - -200: ; preds = %199, %.loopexit - %201 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 136), align 8, !tbaa !118 - %202 = call ptr @dt_database_get(ptr noundef %201) #19 - %203 = call i32 @sqlite3_prepare_v2(ptr noundef %202, ptr noundef nonnull @.str.107, i32 noundef -1, ptr noundef nonnull %7, ptr noundef null) #19 - %.not186 = icmp eq i32 %203, 0 - br i1 %.not186, label %210, label %204 - -204: ; preds = %200 - %205 = load ptr, ptr @stderr, align 8, !tbaa !119 - %206 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 136), align 8, !tbaa !118 - %207 = call ptr @dt_database_get(ptr noundef %206) #19 - %208 = call ptr @sqlite3_errmsg(ptr noundef %207) #19 - %209 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %205, ptr noundef nonnull @.str.105, ptr noundef nonnull @.str.28, i32 noundef 2030, ptr noundef nonnull @__FUNCTION__.init_presets, ptr noundef nonnull @.str.107, ptr noundef %208) #23 - br label %210 - -210: ; preds = %204, %200 - %211 = load ptr, ptr %7, align 8, !tbaa !121 - %212 = call i32 @sqlite3_bind_int(ptr noundef %211, i32 noundef 1, i32 noundef %29) #19 - %.not187 = icmp eq i32 %212, 0 - br i1 %.not187, label %219, label %213 - -213: ; preds = %210 - %214 = load ptr, ptr @stderr, align 8, !tbaa !119 - %215 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 136), align 8, !tbaa !118 - %216 = call ptr @dt_database_get(ptr noundef %215) #19 - %217 = call ptr @sqlite3_errmsg(ptr noundef %216) #19 - %218 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %214, ptr noundef nonnull @.str.108, ptr noundef nonnull @.str.28, i32 noundef 2031, ptr noundef nonnull @__FUNCTION__.init_presets, ptr noundef %217) #23 - br label %219 - -219: ; preds = %213, %210 - %220 = load ptr, ptr %7, align 8, !tbaa !121 - %221 = call i32 @sqlite3_step(ptr noundef %220) #19 - %222 = load ptr, ptr %7, align 8, !tbaa !121 - %223 = call i32 @sqlite3_finalize(ptr noundef %222) #19 - br label %224 - -224: ; preds = %192, %._crit_edge207, %219 + br label %196 + +196: ; preds = %195, %.loopexit + %197 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 136), align 8, !tbaa !118 + %198 = call ptr @dt_database_get(ptr noundef %197) #19 + %199 = call i32 @sqlite3_prepare_v2(ptr noundef %198, ptr noundef nonnull @.str.107, i32 noundef -1, ptr noundef nonnull %7, ptr noundef null) #19 + %.not186 = icmp eq i32 %199, 0 + br i1 %.not186, label %206, label %200 + +200: ; preds = %196 + %201 = load ptr, ptr @stderr, align 8, !tbaa !119 + %202 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 136), align 8, !tbaa !118 + %203 = call ptr @dt_database_get(ptr noundef %202) #19 + %204 = call ptr @sqlite3_errmsg(ptr noundef %203) #19 + %205 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %201, ptr noundef nonnull @.str.105, ptr noundef nonnull @.str.28, i32 noundef 2030, ptr noundef nonnull @__FUNCTION__.init_presets, ptr noundef nonnull @.str.107, ptr noundef %204) #23 + br label %206 + +206: ; preds = %200, %196 + %207 = load ptr, ptr %7, align 8, !tbaa !121 + %208 = call i32 @sqlite3_bind_int(ptr noundef %207, i32 noundef 1, i32 noundef %29) #19 + %.not187 = icmp eq i32 %208, 0 + br i1 %.not187, label %215, label %209 + +209: ; preds = %206 + %210 = load ptr, ptr @stderr, align 8, !tbaa !119 + %211 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 136), align 8, !tbaa !118 + %212 = call ptr @dt_database_get(ptr noundef %211) #19 + %213 = call ptr @sqlite3_errmsg(ptr noundef %212) #19 + %214 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %210, ptr noundef nonnull @.str.108, ptr noundef nonnull @.str.28, i32 noundef 2031, ptr noundef nonnull @__FUNCTION__.init_presets, ptr noundef %213) #23 + br label %215 + +215: ; preds = %209, %206 + %216 = load ptr, ptr %7, align 8, !tbaa !121 + %217 = call i32 @sqlite3_step(ptr noundef %216) #19 + %218 = load ptr, ptr %7, align 8, !tbaa !121 + %219 = call i32 @sqlite3_finalize(ptr noundef %218) #19 + br label %220 + +220: ; preds = %188, %._crit_edge207, %215 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #19 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #19 br label %.critedge -.critedge: ; preds = %224, %67, %62 - %225 = load ptr, ptr %2, align 8, !tbaa !121 - %226 = call i32 @sqlite3_step(ptr noundef %225) #19 - %227 = icmp eq i32 %226, 100 - br i1 %227, label %.lr.ph211, label %._crit_edge212 +.critedge: ; preds = %220, %67, %62 + %221 = load ptr, ptr %2, align 8, !tbaa !121 + %222 = call i32 @sqlite3_step(ptr noundef %221) #19 + %223 = icmp eq i32 %222, 100 + br i1 %223, label %.lr.ph211, label %._crit_edge212 ._crit_edge212: ; preds = %.critedge, %24 - %228 = load ptr, ptr %2, align 8, !tbaa !121 - %229 = call i32 @sqlite3_finalize(ptr noundef %228) #19 + %224 = load ptr, ptr %2, align 8, !tbaa !121 + %225 = call i32 @sqlite3_finalize(ptr noundef %224) #19 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #19 ret void } @@ -3294,9 +3290,9 @@ define noalias noundef ptr @legacy_params(ptr noundef readnone captures(none) %0 23: ; preds = %7 %24 = getelementptr i8, ptr %16, i64 %17 %25 = getelementptr i8, ptr %24, i64 1 - %26 = add i64 %11, 15 - %27 = add i64 %26, %14 - %28 = add i64 %27, %17 + %26 = ptrtoint ptr %25 to i64 + %27 = ptrtoint ptr %1 to i64 + %28 = sub i64 %26, %27 tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %9, ptr nonnull align 1 %1, i64 %28, i1 false) %29 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %16, ptr noundef nonnull dereferenceable(7) @.str.112) #21 %30 = icmp eq i32 %29, 0 diff --git a/bench/darktable/optimized/print_settings.ll b/bench/darktable/optimized/print_settings.ll index f45224ec002..a8d7764ac8d 100644 --- a/bench/darktable/optimized/print_settings.ll +++ b/bench/darktable/optimized/print_settings.ll @@ -5582,9 +5582,9 @@ define noalias noundef ptr @legacy_params(ptr noundef readnone captures(none) %0 %51 = add i32 %50, 1 %52 = add nsw i32 %51, %48 %53 = sext i32 %52 to i64 - %.neg148 = add i64 %2, 8 + %.neg149 = add i64 %2, 8 %54 = add nsw i64 %20, %26 - %55 = sub i64 %.neg148, %54 + %55 = sub i64 %.neg149, %54 %56 = add i64 %55, %53 %57 = tail call noalias ptr @malloc(i64 noundef %56) #20 tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %57, ptr nonnull align 1 %1, i64 %10, i1 false) @@ -5608,10 +5608,10 @@ define noalias noundef ptr @legacy_params(ptr noundef readnone captures(none) %0 %69 = sext i32 %51 to i64 tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %68, ptr nonnull align 1 %.0130, i64 %69, i1 false) %70 = getelementptr i8, ptr %68, i64 %69 - %.neg151 = add i64 %2, -8 - %71 = add nsw i64 %59, %20 - %72 = add nsw i64 %71, %26 - %73 = sub i64 %.neg151, %72 + %71 = ptrtoint ptr %27 to i64 + %72 = ptrtoint ptr %1 to i64 + %.neg = add i64 %2, %72 + %73 = sub i64 %.neg, %71 tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %70, ptr nonnull align 1 %27, i64 %73, i1 false) br label %.sink.split @@ -5650,10 +5650,10 @@ define noalias noundef ptr @legacy_params(ptr noundef readnone captures(none) %0 br label %.sink.split .sink.split: ; preds = %45, %74, %78 - %.sink154 = phi i64 [ %79, %78 ], [ %75, %74 ], [ %56, %45 ] + %.sink151 = phi i64 [ %79, %78 ], [ %75, %74 ], [ %56, %45 ] %.sink = phi i32 [ 4, %78 ], [ 3, %74 ], [ 2, %45 ] %.0.ph = phi ptr [ %80, %78 ], [ %76, %74 ], [ %57, %45 ] - store i64 %.sink154, ptr %5, align 8, !tbaa !226 + store i64 %.sink151, ptr %5, align 8, !tbaa !226 store i32 %.sink, ptr %4, align 4, !tbaa !132 br label %91 diff --git a/bench/duckdb/optimized/huf_compress.ll b/bench/duckdb/optimized/huf_compress.ll index 37762a03a1e..bc277ee9f6f 100644 --- a/bench/duckdb/optimized/huf_compress.ll +++ b/bench/duckdb/optimized/huf_compress.ll @@ -2663,13 +2663,13 @@ _ZN11duckdb_zstdL43HUF_compress1X_usingCTable_internal_defaultEPvmPKvmPKm.exit: } ; Function Attrs: mustprogress nofree norecurse nosync nounwind memory(write, argmem: readwrite, inaccessiblemem: none) uwtable -define noundef range(i64 -119, 262147) i64 @_ZN11duckdb_zstd26HUF_compress4X_usingCTableEPvmPKvmPKmi(ptr noundef %0, i64 noundef %1, ptr noundef %2, i64 noundef %3, ptr noundef %4, i32 noundef %5) local_unnamed_addr #8 { +define noundef i64 @_ZN11duckdb_zstd26HUF_compress4X_usingCTableEPvmPKvmPKmi(ptr noundef %0, i64 noundef %1, ptr noundef %2, i64 noundef %3, ptr noundef %4, i32 noundef %5) local_unnamed_addr #8 { %7 = tail call fastcc noundef i64 @_ZN11duckdb_zstdL35HUF_compress4X_usingCTable_internalEPvmPKvmPKmi(ptr noundef %0, i64 noundef %1, ptr noundef %2, i64 noundef %3, ptr noundef %4, i32 noundef %5) ret i64 %7 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind memory(write, argmem: readwrite, inaccessiblemem: none) uwtable -define internal fastcc noundef range(i64 -119, 262147) i64 @_ZN11duckdb_zstdL35HUF_compress4X_usingCTable_internalEPvmPKvmPKmi(ptr noundef %0, i64 noundef %1, ptr noundef %2, i64 noundef %3, ptr noundef %4, i32 noundef %5) unnamed_addr #8 { +define internal fastcc noundef i64 @_ZN11duckdb_zstdL35HUF_compress4X_usingCTable_internalEPvmPKvmPKmi(ptr noundef %0, i64 noundef %1, ptr noundef %2, i64 noundef %3, ptr noundef %4, i32 noundef %5) unnamed_addr #8 { %7 = add i64 %3, 3 %8 = lshr i64 %7, 2 %9 = icmp ult i64 %1, 17 @@ -2678,77 +2678,79 @@ define internal fastcc noundef range(i64 -119, 262147) i64 @_ZN11duckdb_zstdL35H br i1 %or.cond108, label %.thread, label %11 11: ; preds = %6 - %12 = getelementptr inbounds nuw i8, ptr %0, i64 6 + %12 = getelementptr inbounds nuw i8, ptr %0, i64 %1 + %13 = getelementptr inbounds nuw i8, ptr %0, i64 6 + %14 = ptrtoint ptr %12 to i64 %gepdiff = add i64 %1, -6 - %13 = tail call fastcc noundef i64 @_ZN11duckdb_zstdL35HUF_compress1X_usingCTable_internalEPvmPKvmPKmi(ptr noundef nonnull %12, i64 noundef %gepdiff, ptr noundef %2, i64 noundef %8, ptr noundef %4, i32 noundef %5) - %14 = icmp ult i64 %13, -119 - br i1 %14, label %15, label %.thread - -15: ; preds = %11 - %16 = add i64 %13, -65536 - %or.cond = icmp ult i64 %16, -65535 - br i1 %or.cond, label %.thread, label %17 + %15 = tail call fastcc noundef i64 @_ZN11duckdb_zstdL35HUF_compress1X_usingCTable_internalEPvmPKvmPKmi(ptr noundef nonnull %13, i64 noundef %gepdiff, ptr noundef %2, i64 noundef %8, ptr noundef %4, i32 noundef %5) + %16 = icmp ult i64 %15, -119 + br i1 %16, label %17, label %.thread + +17: ; preds = %11 + %18 = add i64 %15, -65536 + %or.cond = icmp ult i64 %18, -65535 + br i1 %or.cond, label %.thread, label %19 + +19: ; preds = %17 + %20 = trunc nuw i64 %15 to i16 + store i16 %20, ptr %0, align 1, !tbaa !16 + %21 = getelementptr inbounds nuw i8, ptr %13, i64 %15 + %22 = getelementptr inbounds nuw i8, ptr %2, i64 %8 + %gepdiff127 = sub i64 %gepdiff, %15 + %23 = tail call fastcc noundef i64 @_ZN11duckdb_zstdL35HUF_compress1X_usingCTable_internalEPvmPKvmPKmi(ptr noundef nonnull %21, i64 noundef %gepdiff127, ptr noundef %22, i64 noundef %8, ptr noundef %4, i32 noundef %5) + %24 = icmp ult i64 %23, -119 + br i1 %24, label %25, label %.thread -17: ; preds = %15 - %18 = trunc nuw i64 %13 to i16 - store i16 %18, ptr %0, align 1, !tbaa !16 - %19 = getelementptr inbounds nuw i8, ptr %12, i64 %13 - %20 = getelementptr inbounds nuw i8, ptr %2, i64 %8 - %gepdiff127 = sub i64 %gepdiff, %13 - %21 = tail call fastcc noundef i64 @_ZN11duckdb_zstdL35HUF_compress1X_usingCTable_internalEPvmPKvmPKmi(ptr noundef nonnull %19, i64 noundef %gepdiff127, ptr noundef %20, i64 noundef %8, ptr noundef %4, i32 noundef %5) - %22 = icmp ult i64 %21, -119 - br i1 %22, label %23, label %.thread - -23: ; preds = %17 - %24 = add i64 %21, -65536 - %or.cond6 = icmp ult i64 %24, -65535 - br i1 %or.cond6, label %.thread, label %25 +25: ; preds = %19 + %26 = add i64 %23, -65536 + %or.cond6 = icmp ult i64 %26, -65535 + br i1 %or.cond6, label %.thread, label %27 -25: ; preds = %23 - %26 = getelementptr inbounds nuw i8, ptr %0, i64 2 - %27 = trunc nuw i64 %21 to i16 - store i16 %27, ptr %26, align 1, !tbaa !16 - %28 = getelementptr inbounds nuw i8, ptr %19, i64 %21 - %29 = getelementptr inbounds nuw i8, ptr %20, i64 %8 - %30 = add nuw nsw i64 %13, %21 - %gepdiff128 = sub i64 %gepdiff, %30 - %31 = tail call fastcc noundef i64 @_ZN11duckdb_zstdL35HUF_compress1X_usingCTable_internalEPvmPKvmPKmi(ptr noundef nonnull %28, i64 noundef %gepdiff128, ptr noundef %29, i64 noundef %8, ptr noundef %4, i32 noundef %5) - %32 = icmp ult i64 %31, -119 - br i1 %32, label %33, label %.thread - -33: ; preds = %25 - %34 = add i64 %31, -65536 - %or.cond8 = icmp ult i64 %34, -65535 - br i1 %or.cond8, label %.thread, label %35 - -35: ; preds = %33 - %36 = getelementptr inbounds nuw i8, ptr %0, i64 4 - %37 = trunc nuw i64 %31 to i16 - store i16 %37, ptr %36, align 1, !tbaa !16 - %38 = getelementptr inbounds nuw i8, ptr %28, i64 %31 - %39 = getelementptr inbounds nuw i8, ptr %29, i64 %8 - %40 = add nuw nsw i64 %30, %31 - %gepdiff129 = sub i64 %gepdiff, %40 +27: ; preds = %25 + %28 = getelementptr inbounds nuw i8, ptr %0, i64 2 + %29 = trunc nuw i64 %23 to i16 + store i16 %29, ptr %28, align 1, !tbaa !16 + %30 = getelementptr inbounds nuw i8, ptr %21, i64 %23 + %31 = getelementptr inbounds nuw i8, ptr %22, i64 %8 + %32 = add nuw nsw i64 %15, %23 + %gepdiff128 = sub i64 %gepdiff, %32 + %33 = tail call fastcc noundef i64 @_ZN11duckdb_zstdL35HUF_compress1X_usingCTable_internalEPvmPKvmPKmi(ptr noundef nonnull %30, i64 noundef %gepdiff128, ptr noundef %31, i64 noundef %8, ptr noundef %4, i32 noundef %5) + %34 = icmp ult i64 %33, -119 + br i1 %34, label %35, label %.thread + +35: ; preds = %27 + %36 = add i64 %33, -65536 + %or.cond8 = icmp ult i64 %36, -65535 + br i1 %or.cond8, label %.thread, label %37 + +37: ; preds = %35 + %38 = getelementptr inbounds nuw i8, ptr %0, i64 4 + %39 = trunc nuw i64 %33 to i16 + store i16 %39, ptr %38, align 1, !tbaa !16 + %40 = getelementptr inbounds nuw i8, ptr %30, i64 %33 + %41 = getelementptr inbounds nuw i8, ptr %31, i64 %8 + %42 = ptrtoint ptr %40 to i64 + %43 = sub i64 %14, %42 %.neg = mul i64 %8, -3 %gepdiff106 = add i64 %.neg, %3 - %41 = tail call fastcc noundef i64 @_ZN11duckdb_zstdL35HUF_compress1X_usingCTable_internalEPvmPKvmPKmi(ptr noundef nonnull %38, i64 noundef %gepdiff129, ptr noundef %39, i64 noundef %gepdiff106, ptr noundef %4, i32 noundef %5) - %42 = icmp ult i64 %41, -119 - br i1 %42, label %43, label %.thread - -43: ; preds = %35 - %44 = add i64 %41, -65536 - %or.cond10 = icmp ult i64 %44, -65535 - br i1 %or.cond10, label %.thread, label %45 - -45: ; preds = %43 - %46 = add nuw nsw i64 %13, 6 - %47 = add nuw nsw i64 %46, %21 - %48 = add nuw nsw i64 %47, %31 - %49 = add nuw nsw i64 %48, %41 + %44 = tail call fastcc noundef i64 @_ZN11duckdb_zstdL35HUF_compress1X_usingCTable_internalEPvmPKvmPKmi(ptr noundef nonnull %40, i64 noundef %43, ptr noundef %41, i64 noundef %gepdiff106, ptr noundef %4, i32 noundef %5) + %45 = icmp ult i64 %44, -119 + br i1 %45, label %46, label %.thread + +46: ; preds = %37 + %47 = add i64 %44, -65536 + %or.cond10 = icmp ult i64 %47, -65535 + br i1 %or.cond10, label %.thread, label %48 + +48: ; preds = %46 + %49 = getelementptr inbounds nuw i8, ptr %40, i64 %44 + %50 = ptrtoint ptr %49 to i64 + %51 = ptrtoint ptr %0 to i64 + %52 = sub i64 %50, %51 br label %.thread -.thread: ; preds = %43, %35, %33, %25, %23, %17, %15, %11, %6, %45 - %.0 = phi i64 [ %49, %45 ], [ 0, %6 ], [ 0, %15 ], [ %13, %11 ], [ 0, %23 ], [ %21, %17 ], [ 0, %33 ], [ %31, %25 ], [ 0, %43 ], [ %41, %35 ] +.thread: ; preds = %46, %37, %35, %27, %25, %19, %17, %11, %6, %48 + %.0 = phi i64 [ %52, %48 ], [ 0, %6 ], [ 0, %17 ], [ %15, %11 ], [ 0, %25 ], [ %23, %19 ], [ 0, %35 ], [ %33, %27 ], [ 0, %46 ], [ %44, %37 ] ret i64 %.0 } diff --git a/bench/ffmpeg/optimized/flac_picture.ll b/bench/ffmpeg/optimized/flac_picture.ll index cf592a674a9..67682293c48 100644 --- a/bench/ffmpeg/optimized/flac_picture.ll +++ b/bench/ffmpeg/optimized/flac_picture.ll @@ -33,283 +33,288 @@ define range(i32 -2147483648, 1) i32 @ff_flac_parse_picture(ptr noundef %0, ptr %12 = and i32 %11, 8 %.not118 = icmp eq i32 %12, 0 %. = select i1 %.not118, i32 0, i32 -1094995529 - br label %161 + br label %166 13: ; preds = %4 - %14 = getelementptr inbounds nuw i8, ptr %7, i64 4 - %15 = load i32, ptr %7, align 1, !tbaa !25 - %16 = tail call i32 @llvm.bswap.i32(i32 %15) - %17 = icmp ugt i32 %16, 20 - br i1 %17, label %18, label %22 - -18: ; preds = %13 - tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %0, i32 noundef 16, ptr noundef nonnull @.str.1, i32 noundef %16) #7 - %19 = getelementptr inbounds nuw i8, ptr %0, i64 212 - %20 = load i32, ptr %19, align 4, !tbaa !9 - %21 = and i32 %20, 8 - %.not = icmp eq i32 %21, 0 - br i1 %.not, label %22, label %161 - -22: ; preds = %18, %13 - %.091 = phi i32 [ %16, %13 ], [ 0, %18 ] - %23 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %24 = load i32, ptr %14, align 1, !tbaa !25 - %25 = tail call i32 @llvm.bswap.i32(i32 %24) - %26 = zext i32 %25 to i64 - %27 = add i32 %25, -64 - %or.cond = icmp ult i32 %27, -63 - br i1 %or.cond, label %28, label %32 - -28: ; preds = %22 + %14 = zext nneg i32 %2 to i64 + %15 = getelementptr inbounds nuw i8, ptr %7, i64 %14 + %16 = getelementptr inbounds nuw i8, ptr %7, i64 4 + %17 = load i32, ptr %7, align 1, !tbaa !25 + %18 = tail call i32 @llvm.bswap.i32(i32 %17) + %19 = icmp ugt i32 %18, 20 + br i1 %19, label %20, label %24 + +20: ; preds = %13 + tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %0, i32 noundef 16, ptr noundef nonnull @.str.1, i32 noundef %18) #7 + %21 = getelementptr inbounds nuw i8, ptr %0, i64 212 + %22 = load i32, ptr %21, align 4, !tbaa !9 + %23 = and i32 %22, 8 + %.not = icmp eq i32 %23, 0 + br i1 %.not, label %24, label %166 + +24: ; preds = %20, %13 + %.091 = phi i32 [ %18, %13 ], [ 0, %20 ] + %25 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %26 = load i32, ptr %16, align 1, !tbaa !25 + %27 = tail call i32 @llvm.bswap.i32(i32 %26) + %28 = zext i32 %27 to i64 + %29 = add i32 %27, -64 + %or.cond = icmp ult i32 %29, -63 + br i1 %or.cond, label %30, label %34 + +30: ; preds = %24 tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %0, i32 noundef 16, ptr noundef nonnull @.str.2) #7 - %29 = getelementptr inbounds nuw i8, ptr %0, i64 212 - %30 = load i32, ptr %29, align 4, !tbaa !9 - %31 = and i32 %30, 8 - %.not117 = icmp eq i32 %31, 0 + %31 = getelementptr inbounds nuw i8, ptr %0, i64 212 + %32 = load i32, ptr %31, align 4, !tbaa !9 + %33 = and i32 %32, 8 + %.not117 = icmp eq i32 %33, 0 %.119 = select i1 %.not117, i32 0, i32 -1094995529 - br label %161 + br label %166 -32: ; preds = %22 - %33 = add nuw nsw i32 %25, 24 +34: ; preds = %24 + %35 = add nuw nsw i32 %27, 24 + %36 = ptrtoint ptr %15 to i64 %gepdiff = add nsw i32 %2, -8 - %34 = icmp samesign ugt i32 %33, %gepdiff - br i1 %34, label %35, label %39 + %37 = icmp samesign ugt i32 %35, %gepdiff + br i1 %37, label %38, label %42 -35: ; preds = %32 +38: ; preds = %34 tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %0, i32 noundef 16, ptr noundef nonnull @.str) #7 - %36 = getelementptr inbounds nuw i8, ptr %0, i64 212 - %37 = load i32, ptr %36, align 4, !tbaa !9 - %38 = and i32 %37, 8 - %.not116 = icmp eq i32 %38, 0 + %39 = getelementptr inbounds nuw i8, ptr %0, i64 212 + %40 = load i32, ptr %39, align 4, !tbaa !9 + %41 = and i32 %40, 8 + %.not116 = icmp eq i32 %41, 0 %.120 = select i1 %.not116, i32 0, i32 -1094995529 - br label %161 - -39: ; preds = %32 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 16 %6, ptr nonnull align 1 %23, i64 %26, i1 false) - %40 = getelementptr inbounds nuw i8, ptr %23, i64 %26 - %41 = getelementptr inbounds nuw [64 x i8], ptr %6, i64 0, i64 %26 - store i8 0, ptr %41, align 1, !tbaa !25 - %42 = load i32, ptr getelementptr inbounds nuw (i8, ptr @ff_id3v2_mime_tags, i64 32), align 4, !tbaa !26 - %.not105162 = icmp eq i32 %42, 0 - br i1 %.not105162, label %._crit_edge, label %.lr.ph.preheader - -.lr.ph.preheader: ; preds = %39 - %43 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) @ff_id3v2_mime_tags, ptr noundef nonnull dereferenceable(1) %6, i64 noundef 64) #8 - %.not106167 = icmp eq i32 %43, 0 - br i1 %.not106167, label %.lr.ph._crit_edge, label %.lr.ph169 - -.lr.ph169: ; preds = %.lr.ph.preheader, %.lr.ph - %.093163168 = phi ptr [ %46, %.lr.ph ], [ @ff_id3v2_mime_tags, %.lr.ph.preheader ] - %44 = getelementptr inbounds nuw i8, ptr %.093163168, i64 68 - %45 = load i32, ptr %44, align 4, !tbaa !26 - %.not105 = icmp eq i32 %45, 0 + br label %166 + +42: ; preds = %34 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 16 %6, ptr nonnull align 1 %25, i64 %28, i1 false) + %43 = getelementptr inbounds nuw i8, ptr %25, i64 %28 + %44 = getelementptr inbounds nuw [64 x i8], ptr %6, i64 0, i64 %28 + store i8 0, ptr %44, align 1, !tbaa !25 + %45 = load i32, ptr getelementptr inbounds nuw (i8, ptr @ff_id3v2_mime_tags, i64 32), align 4, !tbaa !26 + %.not105157 = icmp eq i32 %45, 0 + br i1 %.not105157, label %._crit_edge, label %.lr.ph.preheader + +.lr.ph.preheader: ; preds = %42 + %46 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) @ff_id3v2_mime_tags, ptr noundef nonnull dereferenceable(1) %6, i64 noundef 64) #8 + %.not106162 = icmp eq i32 %46, 0 + br i1 %.not106162, label %.lr.ph._crit_edge, label %.lr.ph164 + +.lr.ph164: ; preds = %.lr.ph.preheader, %.lr.ph + %.093158163 = phi ptr [ %49, %.lr.ph ], [ @ff_id3v2_mime_tags, %.lr.ph.preheader ] + %47 = getelementptr inbounds nuw i8, ptr %.093158163, i64 68 + %48 = load i32, ptr %47, align 4, !tbaa !26 + %.not105 = icmp eq i32 %48, 0 br i1 %.not105, label %._crit_edge, label %.lr.ph, !llvm.loop !28 -.lr.ph: ; preds = %.lr.ph169 - %46 = getelementptr inbounds nuw i8, ptr %.093163168, i64 36 - %47 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %46, ptr noundef nonnull dereferenceable(1) %6, i64 noundef 64) #8 - %.not106 = icmp eq i32 %47, 0 - br i1 %.not106, label %.lr.ph._crit_edge, label %.lr.ph169, !llvm.loop !28 +.lr.ph: ; preds = %.lr.ph164 + %49 = getelementptr inbounds nuw i8, ptr %.093158163, i64 36 + %50 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %49, ptr noundef nonnull dereferenceable(1) %6, i64 noundef 64) #8 + %.not106 = icmp eq i32 %50, 0 + br i1 %.not106, label %.lr.ph._crit_edge, label %.lr.ph164, !llvm.loop !28 -._crit_edge: ; preds = %.lr.ph169, %39 +._crit_edge: ; preds = %.lr.ph164, %42 call void (ptr, i32, ptr, ...) @av_log(ptr noundef %0, i32 noundef 24, ptr noundef nonnull @.str.3, ptr noundef nonnull %6) #7 - br label %161 + br label %166 .lr.ph._crit_edge: ; preds = %.lr.ph, %.lr.ph.preheader - %.lcssa = phi i32 [ %42, %.lr.ph.preheader ], [ %45, %.lr.ph ] - %48 = load i32, ptr %40, align 1, !tbaa !25 - %49 = tail call i32 @llvm.bswap.i32(i32 %48) + %.lcssa = phi i32 [ %45, %.lr.ph.preheader ], [ %48, %.lr.ph ] + %51 = load i32, ptr %43, align 1, !tbaa !25 + %52 = tail call i32 @llvm.bswap.i32(i32 %51) %gepdiff154 = add nsw i32 %2, -32 - %50 = sub i32 %gepdiff154, %25 - %51 = icmp ugt i32 %49, %50 - br i1 %51, label %52, label %56 + %53 = sub i32 %gepdiff154, %27 + %54 = icmp ugt i32 %52, %53 + br i1 %54, label %55, label %59 -52: ; preds = %.lr.ph._crit_edge +55: ; preds = %.lr.ph._crit_edge tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %0, i32 noundef 16, ptr noundef nonnull @.str) #7 - %53 = getelementptr inbounds nuw i8, ptr %0, i64 212 - %54 = load i32, ptr %53, align 4, !tbaa !9 - %55 = and i32 %54, 8 - %.not115 = icmp eq i32 %55, 0 + %56 = getelementptr inbounds nuw i8, ptr %0, i64 212 + %57 = load i32, ptr %56, align 4, !tbaa !9 + %58 = and i32 %57, 8 + %.not115 = icmp eq i32 %58, 0 %.121 = select i1 %.not115, i32 0, i32 -1094995529 - br label %161 - -56: ; preds = %.lr.ph._crit_edge - %57 = getelementptr inbounds nuw i8, ptr %40, i64 4 - %.not107 = icmp eq i32 %48, 0 - %58 = zext i32 %49 to i64 - %59 = getelementptr inbounds nuw i8, ptr %57, i64 %58 - %60 = getelementptr inbounds nuw i8, ptr %59, i64 4 - %61 = load i32, ptr %59, align 1, !tbaa !25 - %62 = tail call i32 @llvm.bswap.i32(i32 %61) - store i8 0, ptr %59, align 1, !tbaa !25 - %63 = load i32, ptr %60, align 1, !tbaa !25 - %64 = tail call i32 @llvm.bswap.i32(i32 %63) - %65 = getelementptr inbounds nuw i8, ptr %59, i64 16 - %66 = getelementptr inbounds nuw i8, ptr %59, i64 20 - %67 = load i32, ptr %65, align 1, !tbaa !25 - %68 = tail call i32 @llvm.bswap.i32(i32 %67) - %69 = add i32 %25, %49 - %gepdiff155 = sub i32 %gepdiff154, %69 - %70 = icmp eq i32 %67, 0 - %71 = icmp ugt i32 %68, %gepdiff155 - %or.cond122 = or i1 %70, %71 - br i1 %or.cond122, label %72, label %.thread150 - -72: ; preds = %56 - %73 = icmp ugt i32 %68, 524288000 - br i1 %73, label %74, label %78 - -74: ; preds = %72 - tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %0, i32 noundef 16, ptr noundef nonnull @.str.4, i32 noundef %68) #7 - %75 = getelementptr inbounds nuw i8, ptr %0, i64 212 - %76 = load i32, ptr %75, align 4, !tbaa !9 - %77 = and i32 %76, 8 - %.not114 = icmp eq i32 %77, 0 + br label %166 + +59: ; preds = %.lr.ph._crit_edge + %60 = getelementptr inbounds nuw i8, ptr %43, i64 4 + %.not107 = icmp eq i32 %51, 0 + %61 = zext i32 %52 to i64 + %62 = getelementptr inbounds nuw i8, ptr %60, i64 %61 + %63 = getelementptr inbounds nuw i8, ptr %62, i64 4 + %64 = load i32, ptr %62, align 1, !tbaa !25 + %65 = tail call i32 @llvm.bswap.i32(i32 %64) + store i8 0, ptr %62, align 1, !tbaa !25 + %66 = load i32, ptr %63, align 1, !tbaa !25 + %67 = tail call i32 @llvm.bswap.i32(i32 %66) + %68 = getelementptr inbounds nuw i8, ptr %62, i64 16 + %69 = getelementptr inbounds nuw i8, ptr %62, i64 20 + %70 = load i32, ptr %68, align 1, !tbaa !25 + %71 = tail call i32 @llvm.bswap.i32(i32 %70) + %72 = ptrtoint ptr %69 to i64 + %73 = sub i64 %36, %72 + %74 = trunc i64 %73 to i32 + %75 = icmp eq i32 %70, 0 + %76 = icmp ugt i32 %71, %74 + %or.cond122 = select i1 %75, i1 true, i1 %76 + br i1 %or.cond122, label %77, label %.thread150 + +77: ; preds = %59 + %78 = icmp ugt i32 %71, 524288000 + br i1 %78, label %79, label %83 + +79: ; preds = %77 + tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %0, i32 noundef 16, ptr noundef nonnull @.str.4, i32 noundef %71) #7 + %80 = getelementptr inbounds nuw i8, ptr %0, i64 212 + %81 = load i32, ptr %80, align 4, !tbaa !9 + %82 = and i32 %81, 8 + %.not114 = icmp eq i32 %82, 0 %.123 = select i1 %.not114, i32 0, i32 -1094995529 - br label %161 + br label %166 -78: ; preds = %72 +83: ; preds = %77 %.not108 = icmp eq i32 %3, 0 - br i1 %.not108, label %86, label %79 - -79: ; preds = %78 - %80 = getelementptr inbounds nuw i8, ptr %0, i64 272 - %81 = load i32, ptr %80, align 8, !tbaa !30 - %82 = icmp slt i32 %81, 1 - %83 = and i32 %68, 16777215 - %84 = icmp eq i32 %83, %gepdiff155 - %85 = and i1 %84, %82 - %or.cond126 = and i1 %85, %71 - br i1 %or.cond126, label %90, label %86 - -86: ; preds = %79, %78 + br i1 %.not108, label %91, label %84 + +84: ; preds = %83 + %85 = getelementptr inbounds nuw i8, ptr %0, i64 272 + %86 = load i32, ptr %85, align 8, !tbaa !30 + %87 = icmp slt i32 %86, 1 + %88 = and i32 %71, 16777215 + %89 = icmp eq i32 %88, %74 + %90 = and i1 %76, %89 + %or.cond126 = select i1 %87, i1 %90, i1 false + br i1 %or.cond126, label %95, label %91 + +91: ; preds = %84, %83 tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %0, i32 noundef 16, ptr noundef nonnull @.str) #7 - %87 = getelementptr inbounds nuw i8, ptr %0, i64 212 - %88 = load i32, ptr %87, align 4, !tbaa !9 - %89 = and i32 %88, 8 - %.not109 = icmp eq i32 %89, 0 + %92 = getelementptr inbounds nuw i8, ptr %0, i64 212 + %93 = load i32, ptr %92, align 4, !tbaa !9 + %94 = and i32 %93, 8 + %.not109 = icmp eq i32 %94, 0 %.127 = select i1 %.not109, i32 0, i32 -1094995529 - br label %161 - -90: ; preds = %79 - tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef nonnull %0, i32 noundef 32, ptr noundef nonnull @.str.5, i32 noundef %gepdiff155, i32 noundef %68) #7 - %91 = sub nuw nsw i32 %68, %gepdiff155 - br label %108 - -.thread150: ; preds = %56 - %92 = lshr i32 %2, 4 - %93 = sub nsw i32 %2, %92 - %.not110 = icmp ult i32 %68, %93 - br i1 %.not110, label %108, label %94 - -94: ; preds = %.thread150 - %95 = add nuw nsw i32 %2, 64 - %96 = zext nneg i32 %95 to i64 - %97 = tail call ptr @av_buffer_create(ptr noundef nonnull %7, i64 noundef %96, ptr noundef nonnull @av_buffer_default_free, ptr noundef null, i32 noundef 0) #7 - store ptr %97, ptr %5, align 8, !tbaa !31 - %.not112 = icmp eq ptr %97, null - br i1 %.not112, label %161, label %98 - -98: ; preds = %94 + br label %166 + +95: ; preds = %84 + tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef nonnull %0, i32 noundef 32, ptr noundef nonnull @.str.5, i32 noundef %74, i32 noundef %71) #7 + %96 = sub nuw nsw i32 %71, %74 + br label %113 + +.thread150: ; preds = %59 + %97 = lshr i32 %2, 4 + %98 = sub nsw i32 %2, %97 + %.not110 = icmp ult i32 %71, %98 + br i1 %.not110, label %113, label %99 + +99: ; preds = %.thread150 + %100 = add nuw nsw i32 %2, 64 + %101 = zext nneg i32 %100 to i64 + %102 = tail call ptr @av_buffer_create(ptr noundef nonnull %7, i64 noundef %101, ptr noundef nonnull @av_buffer_default_free, ptr noundef null, i32 noundef 0) #7 + store ptr %102, ptr %5, align 8, !tbaa !31 + %.not112 = icmp eq ptr %102, null + br i1 %.not112, label %166, label %103 + +103: ; preds = %99 store ptr null, ptr %1, align 8, !tbaa !4 - %99 = add nuw nsw i32 %25, 32 - %100 = add i32 %99, %49 - %101 = getelementptr inbounds nuw i8, ptr %97, i64 8 - %102 = load ptr, ptr %101, align 8, !tbaa !33 - %103 = sext i32 %100 to i64 - %104 = getelementptr inbounds i8, ptr %102, i64 %103 - store ptr %104, ptr %101, align 8, !tbaa !33 - %105 = add i32 %68, 64 - %106 = zext i32 %105 to i64 - %107 = getelementptr inbounds nuw i8, ptr %97, i64 16 - store i64 %106, ptr %107, align 8, !tbaa !36 - %.pre = zext i32 %68 to i64 - br label %129 - -108: ; preds = %90, %.thread150 - %.0152 = phi i32 [ 0, %.thread150 ], [ %91, %90 ] - %109 = add i32 %68, 64 - %110 = zext i32 %109 to i64 - %111 = tail call ptr @av_buffer_alloc(i64 noundef %110) #7 - store ptr %111, ptr %5, align 8, !tbaa !31 - %.not111 = icmp eq ptr %111, null - br i1 %.not111, label %161, label %112 - -112: ; preds = %108 - %113 = getelementptr inbounds nuw i8, ptr %111, i64 8 - %114 = load ptr, ptr %113, align 8, !tbaa !33 - br i1 %or.cond122, label %117, label %115 - -115: ; preds = %112 - %116 = zext i32 %68 to i64 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %114, ptr nonnull align 1 %66, i64 %116, i1 false) - br label %129 - -117: ; preds = %112 - %118 = zext i32 %gepdiff155 to i64 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %114, ptr nonnull align 1 %66, i64 %118, i1 false) - %119 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %120 = load ptr, ptr %119, align 8, !tbaa !37 - %121 = load ptr, ptr %113, align 8, !tbaa !33 - %122 = zext i32 %68 to i64 - %123 = getelementptr inbounds nuw i8, ptr %121, i64 %122 - %124 = zext nneg i32 %.0152 to i64 - %125 = sub nsw i64 0, %124 - %126 = getelementptr inbounds i8, ptr %123, i64 %125 - %127 = tail call i32 @avio_read(ptr noundef %120, ptr noundef nonnull %126, i32 noundef %.0152) #7 - %128 = icmp ult i32 %127, %.0152 - br i1 %128, label %160, label %129 - -129: ; preds = %115, %117, %98 - %.pre-phi = phi i64 [ %116, %115 ], [ %122, %117 ], [ %.pre, %98 ] - %130 = phi ptr [ %111, %115 ], [ %111, %117 ], [ %97, %98 ] - %131 = getelementptr inbounds nuw i8, ptr %130, i64 8 - %132 = load ptr, ptr %131, align 8, !tbaa !33 - %133 = getelementptr inbounds nuw i8, ptr %132, i64 %.pre-phi - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %133, i8 0, i64 64, i1 false) - %134 = load ptr, ptr %131, align 8, !tbaa !33 - %135 = load i64, ptr %134, align 1, !tbaa !25 - %136 = call i32 @ff_add_attached_pic(ptr noundef %0, ptr noundef null, ptr noundef null, ptr noundef nonnull %5, i32 noundef 0) #7 - %137 = icmp slt i32 %136, 0 - br i1 %137, label %160, label %138 - -138: ; preds = %129 - %139 = icmp eq i64 %135, 727905341920923785 - %spec.select = select i1 %139, i32 61, i32 %.lcssa - %140 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %141 = load ptr, ptr %140, align 8, !tbaa !38 - %142 = getelementptr inbounds nuw i8, ptr %0, i64 44 - %143 = load i32, ptr %142, align 4, !tbaa !39 - %144 = add i32 %143, -1 - %145 = zext i32 %144 to i64 - %146 = getelementptr inbounds nuw ptr, ptr %141, i64 %145 - %147 = load ptr, ptr %146, align 8, !tbaa !40 - %148 = getelementptr inbounds nuw i8, ptr %147, i64 16 - %149 = load ptr, ptr %148, align 8, !tbaa !42 - %150 = getelementptr inbounds nuw i8, ptr %149, i64 4 - store i32 %spec.select, ptr %150, align 4, !tbaa !48 - %151 = getelementptr inbounds nuw i8, ptr %149, i64 72 - store i32 %62, ptr %151, align 8, !tbaa !51 - %152 = getelementptr inbounds nuw i8, ptr %149, i64 76 - store i32 %64, ptr %152, align 4, !tbaa !52 - %153 = getelementptr inbounds nuw i8, ptr %147, i64 80 - %154 = zext nneg i32 %.091 to i64 - %155 = getelementptr inbounds nuw [21 x ptr], ptr @ff_id3v2_picture_types, i64 0, i64 %154 - %156 = load ptr, ptr %155, align 8, !tbaa !4 - %157 = call i32 @av_dict_set(ptr noundef nonnull %153, ptr noundef nonnull @.str.6, ptr noundef %156, i32 noundef 0) #7 - br i1 %.not107, label %161, label %158 - -158: ; preds = %138 - %159 = call i32 @av_dict_set(ptr noundef nonnull %153, ptr noundef nonnull @.str.7, ptr noundef nonnull %57, i32 noundef 0) #7 - br label %161 - -160: ; preds = %129, %117 - %.092 = phi i32 [ -1094995529, %117 ], [ %136, %129 ] + %104 = ptrtoint ptr %7 to i64 + %105 = sub i64 %72, %104 + %106 = getelementptr inbounds nuw i8, ptr %102, i64 8 + %107 = load ptr, ptr %106, align 8, !tbaa !33 + %sext = shl i64 %105, 32 + %108 = ashr exact i64 %sext, 32 + %109 = getelementptr inbounds i8, ptr %107, i64 %108 + store ptr %109, ptr %106, align 8, !tbaa !33 + %110 = add i32 %71, 64 + %111 = zext i32 %110 to i64 + %112 = getelementptr inbounds nuw i8, ptr %102, i64 16 + store i64 %111, ptr %112, align 8, !tbaa !36 + %.pre = zext i32 %71 to i64 + br label %134 + +113: ; preds = %95, %.thread150 + %.0152 = phi i32 [ 0, %.thread150 ], [ %96, %95 ] + %114 = add i32 %71, 64 + %115 = zext i32 %114 to i64 + %116 = tail call ptr @av_buffer_alloc(i64 noundef %115) #7 + store ptr %116, ptr %5, align 8, !tbaa !31 + %.not111 = icmp eq ptr %116, null + br i1 %.not111, label %166, label %117 + +117: ; preds = %113 + %118 = getelementptr inbounds nuw i8, ptr %116, i64 8 + %119 = load ptr, ptr %118, align 8, !tbaa !33 + br i1 %or.cond122, label %122, label %120 + +120: ; preds = %117 + %121 = zext i32 %71 to i64 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %119, ptr nonnull align 1 %69, i64 %121, i1 false) + br label %134 + +122: ; preds = %117 + %123 = and i64 %73, 4294967295 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %119, ptr nonnull align 1 %69, i64 %123, i1 false) + %124 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %125 = load ptr, ptr %124, align 8, !tbaa !37 + %126 = load ptr, ptr %118, align 8, !tbaa !33 + %127 = zext i32 %71 to i64 + %128 = getelementptr inbounds nuw i8, ptr %126, i64 %127 + %129 = zext nneg i32 %.0152 to i64 + %130 = sub nsw i64 0, %129 + %131 = getelementptr inbounds i8, ptr %128, i64 %130 + %132 = tail call i32 @avio_read(ptr noundef %125, ptr noundef nonnull %131, i32 noundef %.0152) #7 + %133 = icmp ult i32 %132, %.0152 + br i1 %133, label %165, label %134 + +134: ; preds = %120, %122, %103 + %.pre-phi = phi i64 [ %121, %120 ], [ %127, %122 ], [ %.pre, %103 ] + %135 = phi ptr [ %116, %120 ], [ %116, %122 ], [ %102, %103 ] + %136 = getelementptr inbounds nuw i8, ptr %135, i64 8 + %137 = load ptr, ptr %136, align 8, !tbaa !33 + %138 = getelementptr inbounds nuw i8, ptr %137, i64 %.pre-phi + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %138, i8 0, i64 64, i1 false) + %139 = load ptr, ptr %136, align 8, !tbaa !33 + %140 = load i64, ptr %139, align 1, !tbaa !25 + %141 = call i32 @ff_add_attached_pic(ptr noundef %0, ptr noundef null, ptr noundef null, ptr noundef nonnull %5, i32 noundef 0) #7 + %142 = icmp slt i32 %141, 0 + br i1 %142, label %165, label %143 + +143: ; preds = %134 + %144 = icmp eq i64 %140, 727905341920923785 + %spec.select = select i1 %144, i32 61, i32 %.lcssa + %145 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %146 = load ptr, ptr %145, align 8, !tbaa !38 + %147 = getelementptr inbounds nuw i8, ptr %0, i64 44 + %148 = load i32, ptr %147, align 4, !tbaa !39 + %149 = add i32 %148, -1 + %150 = zext i32 %149 to i64 + %151 = getelementptr inbounds nuw ptr, ptr %146, i64 %150 + %152 = load ptr, ptr %151, align 8, !tbaa !40 + %153 = getelementptr inbounds nuw i8, ptr %152, i64 16 + %154 = load ptr, ptr %153, align 8, !tbaa !42 + %155 = getelementptr inbounds nuw i8, ptr %154, i64 4 + store i32 %spec.select, ptr %155, align 4, !tbaa !48 + %156 = getelementptr inbounds nuw i8, ptr %154, i64 72 + store i32 %65, ptr %156, align 8, !tbaa !51 + %157 = getelementptr inbounds nuw i8, ptr %154, i64 76 + store i32 %67, ptr %157, align 4, !tbaa !52 + %158 = getelementptr inbounds nuw i8, ptr %152, i64 80 + %159 = zext nneg i32 %.091 to i64 + %160 = getelementptr inbounds nuw [21 x ptr], ptr @ff_id3v2_picture_types, i64 0, i64 %159 + %161 = load ptr, ptr %160, align 8, !tbaa !4 + %162 = call i32 @av_dict_set(ptr noundef nonnull %158, ptr noundef nonnull @.str.6, ptr noundef %161, i32 noundef 0) #7 + br i1 %.not107, label %166, label %163 + +163: ; preds = %143 + %164 = call i32 @av_dict_set(ptr noundef nonnull %158, ptr noundef nonnull @.str.7, ptr noundef nonnull %60, i32 noundef 0) #7 + br label %166 + +165: ; preds = %134, %122 + %.092 = phi i32 [ -1094995529, %122 ], [ %141, %134 ] call void @av_buffer_unref(ptr noundef nonnull %5) #7 - br label %161 + br label %166 -161: ; preds = %138, %158, %108, %94, %86, %74, %52, %35, %28, %18, %9, %160, %._crit_edge - %.090 = phi i32 [ 0, %._crit_edge ], [ %.092, %160 ], [ %., %9 ], [ -1094995529, %18 ], [ %.119, %28 ], [ %.120, %35 ], [ %.121, %52 ], [ %.123, %74 ], [ %.127, %86 ], [ -12, %94 ], [ -12, %108 ], [ 0, %158 ], [ 0, %138 ] +166: ; preds = %143, %163, %113, %99, %91, %79, %55, %38, %30, %20, %9, %165, %._crit_edge + %.090 = phi i32 [ 0, %._crit_edge ], [ %.092, %165 ], [ %., %9 ], [ -1094995529, %20 ], [ %.119, %30 ], [ %.120, %38 ], [ %.121, %55 ], [ %.123, %79 ], [ %.127, %91 ], [ -12, %99 ], [ -12, %113 ], [ 0, %163 ], [ 0, %143 ] call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %6) #7 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #7 ret i32 %.090 diff --git a/bench/freetype/optimized/type1.ll b/bench/freetype/optimized/type1.ll index a4462dbf003..f17a0afa5cd 100644 --- a/bench/freetype/optimized/type1.ll +++ b/bench/freetype/optimized/type1.ll @@ -5365,145 +5365,142 @@ define internal fastcc i32 @T1_Read_PFM(ptr noundef %0, ptr noundef readonly cap %46 = getelementptr inbounds nuw i8, ptr %45, i64 %38 %47 = getelementptr inbounds nuw i8, ptr %46, i64 %42 %48 = getelementptr inbounds nuw i8, ptr %47, i64 %44 - %49 = or i64 %37, %33 - %50 = or i64 %49, %41 - %51 = or i64 %50, %44 - %52 = icmp eq i64 %51, 0 - br i1 %52, label %.thread87, label %53 + %49 = icmp eq ptr %48, %8 + br i1 %49, label %.thread87, label %50 -53: ; preds = %29 +50: ; preds = %29 %.ptr = getelementptr inbounds nuw i8, ptr %48, i64 2 - %54 = icmp ugt ptr %.ptr, %10 - br i1 %54, label %.thread.sink.split, label %55 - -55: ; preds = %53 - %56 = getelementptr inbounds nuw i8, ptr %48, i64 1 - %57 = load i8, ptr %56, align 1, !tbaa !95 + %51 = icmp ugt ptr %.ptr, %10 + br i1 %51, label %.thread.sink.split, label %52 + +52: ; preds = %50 + %53 = getelementptr inbounds nuw i8, ptr %48, i64 1 + %54 = load i8, ptr %53, align 1, !tbaa !95 + %55 = zext i8 %54 to i32 + %56 = shl nuw nsw i32 %55, 8 + %57 = load i8, ptr %48, align 1, !tbaa !95 %58 = zext i8 %57 to i32 - %59 = shl nuw nsw i32 %58, 8 - %60 = load i8, ptr %48, align 1, !tbaa !95 - %61 = zext i8 %60 to i32 - %62 = or disjoint i32 %59, %61 - %63 = getelementptr inbounds nuw i8, ptr %2, i64 80 - store i32 %62, ptr %63, align 8, !tbaa !249 - %64 = shl nuw nsw i32 %62, 2 - %65 = zext nneg i32 %64 to i64 - %66 = getelementptr inbounds nuw i8, ptr %.ptr, i64 %65 - %67 = icmp ugt ptr %66, %10 - br i1 %67, label %.thread.sink.split, label %68 - -68: ; preds = %55 - %69 = icmp eq i32 %62, 0 - br i1 %69, label %.thread87, label %70 - -70: ; preds = %68 - %71 = zext nneg i32 %62 to i64 - %72 = call ptr @ft_mem_qrealloc(ptr noundef %6, i64 noundef 16, i64 noundef 0, i64 noundef %71, ptr noundef null, ptr noundef nonnull %4) #16 - %73 = getelementptr inbounds nuw i8, ptr %2, i64 72 - store ptr %72, ptr %73, align 8, !tbaa !245 - %74 = load i32, ptr %4, align 4, !tbaa !19 - %.not = icmp eq i32 %74, 0 - br i1 %.not, label %75, label %.thread - -75: ; preds = %70 - %76 = load i32, ptr %63, align 8, !tbaa !249 - %77 = shl i32 %76, 2 - %78 = zext i32 %77 to i64 - %79 = getelementptr inbounds nuw i8, ptr %48, i64 %78 - %.ptr80 = getelementptr inbounds nuw i8, ptr %79, i64 2 - %80 = getelementptr inbounds nuw i8, ptr %0, i64 168 - %81 = load ptr, ptr %80, align 8, !tbaa !446 - %82 = getelementptr inbounds nuw i8, ptr %0, i64 72 - %83 = load i32, ptr %82, align 8, !tbaa !447 - %84 = icmp sgt i32 %83, 0 - br i1 %84, label %.lr.ph, label %.loopexit - -.lr.ph: ; preds = %75 - %85 = getelementptr inbounds nuw i8, ptr %0, i64 80 - %86 = load ptr, ptr %85, align 8, !tbaa !448 - %wide.trip.count = zext nneg i32 %83 to i64 - br label %88 - -87: ; preds = %88 + %59 = or disjoint i32 %56, %58 + %60 = getelementptr inbounds nuw i8, ptr %2, i64 80 + store i32 %59, ptr %60, align 8, !tbaa !249 + %61 = shl nuw nsw i32 %59, 2 + %62 = zext nneg i32 %61 to i64 + %63 = getelementptr inbounds nuw i8, ptr %.ptr, i64 %62 + %64 = icmp ugt ptr %63, %10 + br i1 %64, label %.thread.sink.split, label %65 + +65: ; preds = %52 + %66 = icmp eq i32 %59, 0 + br i1 %66, label %.thread87, label %67 + +67: ; preds = %65 + %68 = zext nneg i32 %59 to i64 + %69 = call ptr @ft_mem_qrealloc(ptr noundef %6, i64 noundef 16, i64 noundef 0, i64 noundef %68, ptr noundef null, ptr noundef nonnull %4) #16 + %70 = getelementptr inbounds nuw i8, ptr %2, i64 72 + store ptr %69, ptr %70, align 8, !tbaa !245 + %71 = load i32, ptr %4, align 4, !tbaa !19 + %.not = icmp eq i32 %71, 0 + br i1 %.not, label %72, label %.thread + +72: ; preds = %67 + %73 = load i32, ptr %60, align 8, !tbaa !249 + %74 = shl i32 %73, 2 + %75 = zext i32 %74 to i64 + %76 = getelementptr inbounds nuw i8, ptr %48, i64 %75 + %.ptr80 = getelementptr inbounds nuw i8, ptr %76, i64 2 + %77 = getelementptr inbounds nuw i8, ptr %0, i64 168 + %78 = load ptr, ptr %77, align 8, !tbaa !446 + %79 = getelementptr inbounds nuw i8, ptr %0, i64 72 + %80 = load i32, ptr %79, align 8, !tbaa !447 + %81 = icmp sgt i32 %80, 0 + br i1 %81, label %.lr.ph, label %.loopexit + +.lr.ph: ; preds = %72 + %82 = getelementptr inbounds nuw i8, ptr %0, i64 80 + %83 = load ptr, ptr %82, align 8, !tbaa !448 + %wide.trip.count = zext nneg i32 %80 to i64 + br label %85 + +84: ; preds = %85 %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 %.loopexit, label %88, !llvm.loop !449 - -88: ; preds = %.lr.ph, %87 - %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %87 ] - %89 = getelementptr inbounds nuw ptr, ptr %86, i64 %indvars.iv - %90 = load ptr, ptr %89, align 8, !tbaa !450 - %91 = getelementptr inbounds nuw i8, ptr %90, i64 12 - %92 = load i16, ptr %91, align 4, !tbaa !235 - %93 = icmp eq i16 %92, 7 - br i1 %93, label %94, label %87 - -94: ; preds = %88 - store ptr %90, ptr %80, align 8, !tbaa !446 + br i1 %exitcond.not, label %.loopexit, label %85, !llvm.loop !449 + +85: ; preds = %.lr.ph, %84 + %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %84 ] + %86 = getelementptr inbounds nuw ptr, ptr %83, i64 %indvars.iv + %87 = load ptr, ptr %86, align 8, !tbaa !450 + %88 = getelementptr inbounds nuw i8, ptr %87, i64 12 + %89 = load i16, ptr %88, align 4, !tbaa !235 + %90 = icmp eq i16 %89, 7 + br i1 %90, label %91, label %84 + +91: ; preds = %85 + store ptr %87, ptr %77, align 8, !tbaa !446 br label %.loopexit -.loopexit: ; preds = %87, %75, %94 - %.not81 = icmp eq i32 %77, 0 - br i1 %.not81, label %111, label %.lr.ph79 +.loopexit: ; preds = %84, %72, %91 + %.not81 = icmp eq i32 %74, 0 + br i1 %.not81, label %108, label %.lr.ph79 .lr.ph79: ; preds = %.loopexit, %.lr.ph79 - %.06878 = phi ptr [ %109, %.lr.ph79 ], [ %.ptr, %.loopexit ] - %.06977 = phi ptr [ %108, %.lr.ph79 ], [ %72, %.loopexit ] - %95 = load i8, ptr %.06878, align 1, !tbaa !95 - %96 = zext i8 %95 to i64 - %97 = call i32 @FT_Get_Char_Index(ptr noundef %0, i64 noundef %96) #16 - store i32 %97, ptr %.06977, align 4, !tbaa !326 - %98 = getelementptr inbounds nuw i8, ptr %.06878, i64 1 - %99 = load i8, ptr %98, align 1, !tbaa !95 - %100 = zext i8 %99 to i64 - %101 = call i32 @FT_Get_Char_Index(ptr noundef %0, i64 noundef %100) #16 - %102 = getelementptr inbounds nuw i8, ptr %.06977, i64 4 - store i32 %101, ptr %102, align 4, !tbaa !328 - %103 = getelementptr inbounds nuw i8, ptr %.06878, i64 2 - %104 = load i16, ptr %103, align 1 - %105 = sext i16 %104 to i32 - %106 = getelementptr inbounds nuw i8, ptr %.06977, i64 8 - store i32 %105, ptr %106, align 4, !tbaa !329 - %107 = getelementptr inbounds nuw i8, ptr %.06977, i64 12 - store i32 0, ptr %107, align 4, !tbaa !330 - %108 = getelementptr inbounds nuw i8, ptr %.06977, i64 16 - %109 = getelementptr inbounds nuw i8, ptr %.06878, i64 4 - %110 = icmp ult ptr %109, %.ptr80 - br i1 %110, label %.lr.ph79, label %._crit_edge.loopexit, !llvm.loop !451 + %.06878 = phi ptr [ %106, %.lr.ph79 ], [ %.ptr, %.loopexit ] + %.06977 = phi ptr [ %105, %.lr.ph79 ], [ %69, %.loopexit ] + %92 = load i8, ptr %.06878, align 1, !tbaa !95 + %93 = zext i8 %92 to i64 + %94 = call i32 @FT_Get_Char_Index(ptr noundef %0, i64 noundef %93) #16 + store i32 %94, ptr %.06977, align 4, !tbaa !326 + %95 = getelementptr inbounds nuw i8, ptr %.06878, i64 1 + %96 = load i8, ptr %95, align 1, !tbaa !95 + %97 = zext i8 %96 to i64 + %98 = call i32 @FT_Get_Char_Index(ptr noundef %0, i64 noundef %97) #16 + %99 = getelementptr inbounds nuw i8, ptr %.06977, i64 4 + store i32 %98, ptr %99, align 4, !tbaa !328 + %100 = getelementptr inbounds nuw i8, ptr %.06878, i64 2 + %101 = load i16, ptr %100, align 1 + %102 = sext i16 %101 to i32 + %103 = getelementptr inbounds nuw i8, ptr %.06977, i64 8 + store i32 %102, ptr %103, align 4, !tbaa !329 + %104 = getelementptr inbounds nuw i8, ptr %.06977, i64 12 + store i32 0, ptr %104, align 4, !tbaa !330 + %105 = getelementptr inbounds nuw i8, ptr %.06977, i64 16 + %106 = getelementptr inbounds nuw i8, ptr %.06878, i64 4 + %107 = icmp ult ptr %106, %.ptr80 + br i1 %107, label %.lr.ph79, label %._crit_edge.loopexit, !llvm.loop !451 ._crit_edge.loopexit: ; preds = %.lr.ph79 - %.pre = load ptr, ptr %73, align 8, !tbaa !245 - %.pre84 = load i32, ptr %63, align 8, !tbaa !249 - br label %111 - -111: ; preds = %.loopexit, %._crit_edge.loopexit - %112 = phi i32 [ %.pre84, %._crit_edge.loopexit ], [ %76, %.loopexit ] - %113 = phi ptr [ %.pre, %._crit_edge.loopexit ], [ %72, %.loopexit ] - store ptr %81, ptr %80, align 8, !tbaa !446 - %114 = zext i32 %112 to i64 - call void @qsort(ptr noundef %113, i64 noundef %114, i64 noundef 16, ptr noundef nonnull @compare_kern_pairs) #16 + %.pre = load ptr, ptr %70, align 8, !tbaa !245 + %.pre84 = load i32, ptr %60, align 8, !tbaa !249 + br label %108 + +108: ; preds = %.loopexit, %._crit_edge.loopexit + %109 = phi i32 [ %.pre84, %._crit_edge.loopexit ], [ %73, %.loopexit ] + %110 = phi ptr [ %.pre, %._crit_edge.loopexit ], [ %69, %.loopexit ] + store ptr %78, ptr %77, align 8, !tbaa !446 + %111 = zext i32 %109 to i64 + call void @qsort(ptr noundef %110, i64 noundef %111, i64 noundef 16, ptr noundef nonnull @compare_kern_pairs) #16 %.pr.pre = load i32, ptr %4, align 4, !tbaa !19 - %115 = icmp eq i32 %.pr.pre, 0 - br i1 %115, label %.thread87, label %.thread + %112 = icmp eq i32 %.pr.pre, 0 + br i1 %112, label %.thread87, label %.thread -.thread.sink.split: ; preds = %55, %53, %3 +.thread.sink.split: ; preds = %52, %50, %3 store i32 2, ptr %4, align 4, !tbaa !19 br label %.thread -.thread: ; preds = %.thread.sink.split, %70, %111 - %116 = getelementptr inbounds nuw i8, ptr %2, i64 72 - %117 = load ptr, ptr %116, align 8, !tbaa !245 - call void @ft_mem_free(ptr noundef %6, ptr noundef %117) #16 - store ptr null, ptr %116, align 8, !tbaa !245 - %118 = getelementptr inbounds nuw i8, ptr %2, i64 80 - store i32 0, ptr %118, align 8, !tbaa !249 +.thread: ; preds = %.thread.sink.split, %67, %108 + %113 = getelementptr inbounds nuw i8, ptr %2, i64 72 + %114 = load ptr, ptr %113, align 8, !tbaa !245 + call void @ft_mem_free(ptr noundef %6, ptr noundef %114) #16 + store ptr null, ptr %113, align 8, !tbaa !245 + %115 = getelementptr inbounds nuw i8, ptr %2, i64 80 + store i32 0, ptr %115, align 8, !tbaa !249 %.pre86 = load i32, ptr %4, align 4, !tbaa !19 br label %.thread87 -.thread87: ; preds = %25, %13, %29, %68, %.thread, %111 - %119 = phi i32 [ %.pre86, %.thread ], [ 0, %111 ], [ 0, %68 ], [ 0, %29 ], [ 0, %13 ], [ 0, %25 ] +.thread87: ; preds = %25, %13, %29, %65, %.thread, %108 + %116 = phi i32 [ %.pre86, %.thread ], [ 0, %108 ], [ 0, %65 ], [ 0, %29 ], [ 0, %13 ], [ 0, %25 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #16 - ret i32 %119 + ret i32 %116 } declare hidden void @FT_Stream_ExitFrame(ptr noundef) local_unnamed_addr #5 diff --git a/bench/git/optimized/apply.ll b/bench/git/optimized/apply.ll index f08f2bcb09d..bacfc791991 100644 --- a/bench/git/optimized/apply.ll +++ b/bench/git/optimized/apply.ll @@ -9361,7 +9361,7 @@ define internal fastcc ptr @find_name_traditional(ptr noundef readonly captures( 7: ; preds = %4 %8 = tail call fastcc ptr @find_name_gnu(ptr noundef %0, ptr noundef nonnull %1, i32 noundef %3) %.not = icmp eq ptr %8, null - br i1 %.not, label %9, label %299 + br i1 %.not, label %9, label %296 9: ; preds = %7, %4 %10 = tail call ptr @strchrnul(ptr noundef nonnull %1, i32 noundef 10) #22 @@ -9562,7 +9562,7 @@ sane_tz_len.exit.i: ; preds = %31, %61, %54, %47, .thread82.i: ; preds = %124, %117, %110, %103, %96, %93, %86, %79, %76, %72, %.loopexit.i %125 = phi i64 [ %70, %117 ], [ %70, %76 ], [ %70, %79 ], [ %70, %86 ], [ %70, %93 ], [ %70, %96 ], [ %70, %103 ], [ %70, %110 ], [ %70, %72 ], [ %70, %124 ], [ 6, %.loopexit.i ] %126 = phi ptr [ %69, %117 ], [ %69, %76 ], [ %69, %79 ], [ %69, %86 ], [ %69, %93 ], [ %69, %96 ], [ %69, %103 ], [ %69, %110 ], [ %69, %72 ], [ %69, %124 ], [ %14, %.loopexit.i ] - %.091.i = phi i64 [ %.0.i, %117 ], [ %.0.i, %76 ], [ %.0.i, %79 ], [ %.0.i, %86 ], [ %.0.i, %93 ], [ %.0.i, %96 ], [ %.0.i, %103 ], [ %.0.i, %110 ], [ %.0.i, %72 ], [ %.0.i, %124 ], [ 0, %.loopexit.i ] + %.090.i = phi i64 [ %.0.i, %117 ], [ %.0.i, %76 ], [ %.0.i, %79 ], [ %.0.i, %86 ], [ %.0.i, %93 ], [ %.0.i, %96 ], [ %.0.i, %103 ], [ %.0.i, %110 ], [ %.0.i, %72 ], [ %.0.i, %124 ], [ 0, %.loopexit.i ] %127 = getelementptr i8, ptr %1, i64 %125 %128 = getelementptr i8, ptr %127, i64 -1 %129 = load i8, ptr %128, align 1, !tbaa !53 @@ -9685,9 +9685,9 @@ short_time_len.exit.i.i: ; preds = %189 short_time_len.exit.i: ; preds = %short_time_len.exit.i.i, %189, %182, %175, %168, %165, %158, %151, %148, %144, %140, %.critedge.i.i, %.thread82.i, %124, %117 %199 = phi ptr [ %69, %117 ], [ %126, %short_time_len.exit.i.i ], [ %126, %.thread82.i ], [ %69, %124 ], [ %126, %.critedge.i.i ], [ %126, %144 ], [ %126, %140 ], [ %126, %182 ], [ %126, %175 ], [ %126, %168 ], [ %126, %165 ], [ %126, %158 ], [ %126, %151 ], [ %126, %148 ], [ %126, %189 ] - %.090.i = phi i64 [ %.0.i, %117 ], [ %.091.i, %short_time_len.exit.i.i ], [ %.091.i, %.thread82.i ], [ %13, %124 ], [ %.091.i, %.critedge.i.i ], [ %.091.i, %144 ], [ %.091.i, %140 ], [ %.091.i, %182 ], [ %.091.i, %175 ], [ %.091.i, %168 ], [ %.091.i, %165 ], [ %.091.i, %158 ], [ %.091.i, %151 ], [ %.091.i, %148 ], [ %.091.i, %189 ] + %.089.i = phi i64 [ %.0.i, %117 ], [ %.090.i, %short_time_len.exit.i.i ], [ %.090.i, %.thread82.i ], [ %13, %124 ], [ %.090.i, %.critedge.i.i ], [ %.090.i, %144 ], [ %.090.i, %140 ], [ %.090.i, %182 ], [ %.090.i, %175 ], [ %.090.i, %168 ], [ %.090.i, %165 ], [ %.090.i, %158 ], [ %.090.i, %151 ], [ %.090.i, %148 ], [ %.090.i, %189 ] %.1.i = phi i64 [ 9, %117 ], [ %198, %short_time_len.exit.i.i ], [ 0, %.thread82.i ], [ 0, %124 ], [ 0, %.critedge.i.i ], [ 0, %144 ], [ 0, %140 ], [ 0, %182 ], [ 0, %175 ], [ 0, %168 ], [ 0, %165 ], [ 0, %158 ], [ 0, %151 ], [ 0, %148 ], [ 0, %189 ] - %200 = add i64 %.1.i, %.090.i + %200 = add i64 %.1.i, %.089.i %201 = sub i64 %13, %200 %202 = icmp ult i64 %201, 8 br i1 %202, label %diff_timestamp_len.exit.thread, label %203 @@ -9796,73 +9796,69 @@ date_len.exit.i: ; preds = %261, %254, %252 %268 = ptrtoint ptr %204 to i64 %269 = ptrtoint ptr %.0.i74.i to i64 %270 = sub i64 %268, %269 - %271 = add i64 %270, %200 - %272 = icmp eq i64 %13, %271 - br i1 %272, label %diff_timestamp_len.exit.thread, label %273 - -273: ; preds = %date_len.exit.i - %274 = sub i64 0, %.1.i - %275 = getelementptr inbounds i8, ptr %199, i64 %274 - %276 = sub i64 0, %270 - %277 = getelementptr inbounds i8, ptr %275, i64 %276 - %278 = getelementptr inbounds i8, ptr %277, i64 -1 - %279 = load i8, ptr %278, align 1, !tbaa !53 - switch i8 %279, label %diff_timestamp_len.exit.thread [ - i8 9, label %280 - i8 32, label %281 + %271 = sub i64 0, %.1.i + %272 = getelementptr inbounds i8, ptr %199, i64 %271 + %273 = sub i64 0, %270 + %274 = getelementptr inbounds i8, ptr %272, i64 %273 + %275 = icmp eq ptr %274, %1 + br i1 %275, label %diff_timestamp_len.exit.thread, label %276 + +276: ; preds = %date_len.exit.i + %277 = getelementptr inbounds i8, ptr %274, i64 -1 + %278 = load i8, ptr %277, align 1, !tbaa !53 + switch i8 %278, label %diff_timestamp_len.exit.thread [ + i8 9, label %279 + i8 32, label %282 ] -280: ; preds = %273 - %.neg.i = add i64 %271, 1 +279: ; preds = %276 + %280 = ptrtoint ptr %277 to i64 + %281 = sub i64 %11, %280 br label %diff_timestamp_len.exit -281: ; preds = %273 - %282 = sub i64 %13, %271 - %283 = getelementptr i8, ptr %1, i64 %282 - %284 = getelementptr i8, ptr %283, i64 -1 - %285 = load i8, ptr %284, align 1, !tbaa !53 - %.not15.i.i = icmp eq i8 %285, 32 - br i1 %.not15.i.i, label %.preheader.i76.i, label %trailing_spaces_len.exit.i +282: ; preds = %276 + %283 = ptrtoint ptr %274 to i64 + br label %.preheader.i76.i -.preheader.i76.i: ; preds = %281, %286 - %.0.i77.i = phi ptr [ %287, %286 ], [ %283, %281 ] +.preheader.i76.i: ; preds = %284, %282 + %.0.i77.i = phi ptr [ %285, %284 ], [ %274, %282 ] %.not16.i.i = icmp eq ptr %.0.i77.i, %1 - br i1 %.not16.i.i, label %trailing_spaces_len.exit.i, label %286 - -286: ; preds = %.preheader.i76.i - %287 = getelementptr inbounds i8, ptr %.0.i77.i, i64 -1 - %288 = load i8, ptr %287, align 1, !tbaa !53 - %.not17.i.i = icmp eq i8 %288, 32 - br i1 %.not17.i.i, label %.preheader.i76.i, label %289, !llvm.loop !219 - -289: ; preds = %286 - %290 = ptrtoint ptr %283 to i64 - %291 = ptrtoint ptr %.0.i77.i to i64 - %292 = sub i64 %290, %291 + br i1 %.not16.i.i, label %trailing_spaces_len.exit.i, label %284 + +284: ; preds = %.preheader.i76.i + %285 = getelementptr inbounds i8, ptr %.0.i77.i, i64 -1 + %286 = load i8, ptr %285, align 1, !tbaa !53 + %.not17.i.i = icmp eq i8 %286, 32 + br i1 %.not17.i.i, label %.preheader.i76.i, label %287, !llvm.loop !219 + +287: ; preds = %284 + %288 = ptrtoint ptr %.0.i77.i to i64 br label %trailing_spaces_len.exit.i -trailing_spaces_len.exit.i: ; preds = %.preheader.i76.i, %289, %281 - %.013.i.i = phi i64 [ %292, %289 ], [ 0, %281 ], [ %282, %.preheader.i76.i ] - %293 = add i64 %.013.i.i, %271 +trailing_spaces_len.exit.i: ; preds = %.preheader.i76.i, %287 + %.pn.i = phi i64 [ %288, %287 ], [ %12, %.preheader.i76.i ] + %.013.i.i = add i64 %270, %200 + %289 = add i64 %.013.i.i, %283 + %290 = sub i64 %289, %.pn.i br label %diff_timestamp_len.exit -diff_timestamp_len.exit: ; preds = %280, %trailing_spaces_len.exit.i - %.042.i = phi i64 [ %.neg.i, %280 ], [ %293, %trailing_spaces_len.exit.i ] +diff_timestamp_len.exit: ; preds = %279, %trailing_spaces_len.exit.i + %.042.i = phi i64 [ %281, %279 ], [ %290, %trailing_spaces_len.exit.i ] %.not26 = icmp eq i64 %.042.i, 0 - br i1 %.not26, label %diff_timestamp_len.exit.thread, label %295 + br i1 %.not26, label %diff_timestamp_len.exit.thread, label %292 -diff_timestamp_len.exit.thread: ; preds = %207, %214, %221, %224, %231, %238, %245, %short_time_len.exit.i, %203, %273, %date_len.exit.i, %9, %diff_timestamp_len.exit - %294 = tail call fastcc ptr @find_name_common(ptr noundef %0, ptr noundef nonnull %1, ptr noundef %2, i32 noundef %3, ptr noundef null, i32 noundef 2) - br label %299 +diff_timestamp_len.exit.thread: ; preds = %207, %214, %221, %224, %231, %238, %245, %short_time_len.exit.i, %203, %276, %date_len.exit.i, %9, %diff_timestamp_len.exit + %291 = tail call fastcc ptr @find_name_common(ptr noundef %0, ptr noundef nonnull %1, ptr noundef %2, i32 noundef %3, ptr noundef null, i32 noundef 2) + br label %296 -295: ; preds = %diff_timestamp_len.exit - %296 = sub i64 %13, %.042.i - %297 = getelementptr inbounds nuw i8, ptr %1, i64 %296 - %298 = tail call fastcc ptr @find_name_common(ptr noundef %0, ptr noundef nonnull %1, ptr noundef %2, i32 noundef %3, ptr noundef nonnull %297, i32 noundef 0) - br label %299 +292: ; preds = %diff_timestamp_len.exit + %293 = sub i64 %13, %.042.i + %294 = getelementptr inbounds nuw i8, ptr %1, i64 %293 + %295 = tail call fastcc ptr @find_name_common(ptr noundef %0, ptr noundef nonnull %1, ptr noundef %2, i32 noundef %3, ptr noundef nonnull %294, i32 noundef 0) + br label %296 -299: ; preds = %7, %295, %diff_timestamp_len.exit.thread - %.1 = phi ptr [ %298, %295 ], [ %294, %diff_timestamp_len.exit.thread ], [ %8, %7 ] +296: ; preds = %7, %292, %diff_timestamp_len.exit.thread + %.1 = phi ptr [ %295, %292 ], [ %291, %diff_timestamp_len.exit.thread ], [ %8, %7 ] ret ptr %.1 } diff --git a/bench/git/optimized/fast-import.ll b/bench/git/optimized/fast-import.ll index 96940d32e4e..05b8f1727f3 100644 --- a/bench/git/optimized/fast-import.ll +++ b/bench/git/optimized/fast-import.ll @@ -8059,64 +8059,65 @@ define internal fastcc ptr @parse_ident(ptr noundef %0) unnamed_addr #0 { 24: ; preds = %20 %25 = getelementptr inbounds nuw i8, ptr %17, i64 2 - %26 = add nuw nsw i64 %5, 3 - %27 = add nuw nsw i64 %26, %16 - call void @strbuf_add(ptr noundef nonnull %2, ptr noundef nonnull %spec.select, i64 noundef %27) #24 - %28 = load i32, ptr @whenspec, align 4, !tbaa !11 - switch i32 %28, label %default.unreachable [ - i32 1, label %29 - i32 2, label %33 - i32 3, label %37 - i32 4, label %41 + %26 = ptrtoint ptr %25 to i64 + %27 = ptrtoint ptr %spec.select to i64 + %28 = sub i64 %26, %27 + call void @strbuf_add(ptr noundef nonnull %2, ptr noundef nonnull %spec.select, i64 noundef %28) #24 + %29 = load i32, ptr @whenspec, align 4, !tbaa !11 + switch i32 %29, label %default.unreachable [ + i32 1, label %30 + i32 2, label %34 + i32 3, label %38 + i32 4, label %42 ] -29: ; preds = %24 - %30 = call fastcc i32 @validate_raw_date(ptr noundef nonnull %25, ptr noundef %2, i32 noundef 1) - %31 = icmp slt i32 %30, 0 - br i1 %31, label %32, label %45 +30: ; preds = %24 + %31 = call fastcc i32 @validate_raw_date(ptr noundef nonnull %25, ptr noundef %2, i32 noundef 1) + %32 = icmp slt i32 %31, 0 + br i1 %32, label %33, label %46 -32: ; preds = %29 +33: ; preds = %30 call void (ptr, ...) @die(ptr noundef nonnull @.str.116, ptr noundef nonnull %25, ptr noundef nonnull %spec.select) #25 unreachable -33: ; preds = %24 - %34 = call fastcc i32 @validate_raw_date(ptr noundef nonnull %25, ptr noundef %2, i32 noundef 0) - %35 = icmp slt i32 %34, 0 - br i1 %35, label %36, label %45 +34: ; preds = %24 + %35 = call fastcc i32 @validate_raw_date(ptr noundef nonnull %25, ptr noundef %2, i32 noundef 0) + %36 = icmp slt i32 %35, 0 + br i1 %36, label %37, label %46 -36: ; preds = %33 +37: ; preds = %34 call void (ptr, ...) @die(ptr noundef nonnull @.str.116, ptr noundef nonnull %25, ptr noundef nonnull %spec.select) #25 unreachable -37: ; preds = %24 - %38 = call i32 @parse_date(ptr noundef nonnull %25, ptr noundef nonnull %2) #24 - %39 = icmp slt i32 %38, 0 - br i1 %39, label %40, label %45 +38: ; preds = %24 + %39 = call i32 @parse_date(ptr noundef nonnull %25, ptr noundef nonnull %2) #24 + %40 = icmp slt i32 %39, 0 + br i1 %40, label %41, label %46 -40: ; preds = %37 +41: ; preds = %38 call void (ptr, ...) @die(ptr noundef nonnull @.str.117, ptr noundef nonnull %25, ptr noundef nonnull %spec.select) #25 unreachable -41: ; preds = %24 - %42 = call i32 @strcmp(ptr noundef nonnull dereferenceable(4) @.str.118, ptr noundef nonnull dereferenceable(1) %25) #26 - %.not37 = icmp eq i32 %42, 0 - br i1 %.not37, label %44, label %43 +42: ; preds = %24 + %43 = call i32 @strcmp(ptr noundef nonnull dereferenceable(4) @.str.118, ptr noundef nonnull dereferenceable(1) %25) #26 + %.not37 = icmp eq i32 %43, 0 + br i1 %.not37, label %45, label %44 -43: ; preds = %41 +44: ; preds = %42 call void (ptr, ...) @die(ptr noundef nonnull @.str.119, ptr noundef nonnull %spec.select) #25 unreachable -44: ; preds = %41 +45: ; preds = %42 call void @datestamp(ptr noundef nonnull %2) #24 - br label %45 + br label %46 default.unreachable: ; preds = %24 unreachable -45: ; preds = %37, %33, %29, %44 - %46 = call ptr @strbuf_detach(ptr noundef nonnull %2, ptr noundef null) #24 +46: ; preds = %38, %34, %30, %45 + %47 = call ptr @strbuf_detach(ptr noundef nonnull %2, ptr noundef null) #24 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) #24 - ret ptr %46 + ret ptr %47 } ; Function Attrs: nounwind uwtable diff --git a/bench/git/optimized/packfile.ll b/bench/git/optimized/packfile.ll index d864d6c5211..732543594a7 100644 --- a/bench/git/optimized/packfile.ll +++ b/bench/git/optimized/packfile.ll @@ -5185,7 +5185,7 @@ st_mult.exit: ; preds = %2 %20 = load i32, ptr %19, align 4, !tbaa !36 %21 = tail call i32 asm "bswap $0", "=r,0,~{dirflag},~{fpsr},~{flags}"(i32 %20) #24, !srcloc !41 %22 = zext i32 %21 to i64 - br label %88 + br label %93 st_mult.exit23: ; preds = %2 %23 = getelementptr inbounds nuw i8, ptr %0, i64 72 @@ -5206,7 +5206,7 @@ st_mult.exit23: ; preds = %2 36: ; preds = %st_mult.exit23 %37 = zext nneg i32 %35 to i64 - br label %88 + br label %93 st_mult.exit32: ; preds = %st_mult.exit23 %38 = shl nuw nsw i64 %25, 2 @@ -5215,61 +5215,71 @@ st_mult.exit32: ; preds = %st_mult.exit23 %41 = shl nuw nsw i64 %40, 3 %42 = getelementptr inbounds nuw i8, ptr %30, i64 %41 %43 = getelementptr inbounds nuw i8, ptr %42, i64 %38 - %44 = getelementptr inbounds nuw i8, ptr %0, i64 64 - %45 = load i64, ptr %44, align 8, !tbaa !37 - %46 = getelementptr inbounds nuw i8, ptr %4, i64 %45 - %47 = getelementptr inbounds i8, ptr %46, i64 -8 - %.not.i38 = icmp ult ptr %43, %47 - br i1 %.not.i38, label %check_pack_index_ptr.exit, label %48 + %44 = icmp ult ptr %43, %4 + br i1 %44, label %45, label %48 + +45: ; preds = %st_mult.exit32 + %46 = tail call fastcc ptr @_(ptr noundef nonnull @.str.41) + %47 = getelementptr inbounds nuw i8, ptr %0, i64 248 + tail call void (ptr, ...) @die(ptr noundef %46, ptr noundef nonnull %47) #25 + unreachable 48: ; preds = %st_mult.exit32 - %49 = tail call fastcc ptr @_(ptr noundef nonnull @.str.42) - %50 = getelementptr inbounds nuw i8, ptr %0, i64 248 - tail call void (ptr, ...) @die(ptr noundef %49, ptr noundef nonnull %50) #25 + %49 = getelementptr inbounds nuw i8, ptr %0, i64 64 + %50 = load i64, ptr %49, align 8, !tbaa !37 + %51 = getelementptr inbounds nuw i8, ptr %4, i64 %50 + %52 = getelementptr inbounds i8, ptr %51, i64 -8 + %.not.i38 = icmp ult ptr %43, %52 + br i1 %.not.i38, label %check_pack_index_ptr.exit, label %53 + +53: ; preds = %48 + %54 = tail call fastcc ptr @_(ptr noundef nonnull @.str.42) + %55 = getelementptr inbounds nuw i8, ptr %0, i64 248 + tail call void (ptr, ...) @die(ptr noundef %54, ptr noundef nonnull %55) #25 unreachable -check_pack_index_ptr.exit: ; preds = %st_mult.exit32 - %51 = load i8, ptr %43, align 1, !tbaa !12 - %52 = zext i8 %51 to i64 - %53 = shl nuw nsw i64 %52, 24 - %54 = getelementptr inbounds nuw i8, ptr %43, i64 1 - %55 = load i8, ptr %54, align 1, !tbaa !12 - %56 = zext i8 %55 to i64 - %57 = shl nuw nsw i64 %56, 16 - %58 = or disjoint i64 %57, %53 - %59 = getelementptr inbounds nuw i8, ptr %43, i64 2 +check_pack_index_ptr.exit: ; preds = %48 + %56 = load i8, ptr %43, align 1, !tbaa !12 + %57 = zext i8 %56 to i64 + %58 = shl nuw nsw i64 %57, 24 + %59 = getelementptr inbounds nuw i8, ptr %43, i64 1 %60 = load i8, ptr %59, align 1, !tbaa !12 %61 = zext i8 %60 to i64 - %62 = shl nuw nsw i64 %61, 8 - %63 = or disjoint i64 %58, %62 - %64 = getelementptr inbounds nuw i8, ptr %43, i64 3 + %62 = shl nuw nsw i64 %61, 16 + %63 = or disjoint i64 %62, %58 + %64 = getelementptr inbounds nuw i8, ptr %43, i64 2 %65 = load i8, ptr %64, align 1, !tbaa !12 %66 = zext i8 %65 to i64 - %67 = or disjoint i64 %63, %66 - %68 = shl nuw i64 %67, 32 - %69 = getelementptr inbounds nuw i8, ptr %43, i64 4 + %67 = shl nuw nsw i64 %66, 8 + %68 = or disjoint i64 %63, %67 + %69 = getelementptr inbounds nuw i8, ptr %43, i64 3 %70 = load i8, ptr %69, align 1, !tbaa !12 %71 = zext i8 %70 to i64 - %72 = shl nuw nsw i64 %71, 24 - %73 = getelementptr inbounds nuw i8, ptr %43, i64 5 - %74 = load i8, ptr %73, align 1, !tbaa !12 - %75 = zext i8 %74 to i64 - %76 = shl nuw nsw i64 %75, 16 - %77 = or disjoint i64 %76, %72 - %78 = getelementptr inbounds nuw i8, ptr %43, i64 6 + %72 = or disjoint i64 %68, %71 + %73 = shl nuw i64 %72, 32 + %74 = getelementptr inbounds nuw i8, ptr %43, i64 4 + %75 = load i8, ptr %74, align 1, !tbaa !12 + %76 = zext i8 %75 to i64 + %77 = shl nuw nsw i64 %76, 24 + %78 = getelementptr inbounds nuw i8, ptr %43, i64 5 %79 = load i8, ptr %78, align 1, !tbaa !12 %80 = zext i8 %79 to i64 - %81 = shl nuw nsw i64 %80, 8 - %82 = getelementptr inbounds nuw i8, ptr %43, i64 7 - %83 = load i8, ptr %82, align 1, !tbaa !12 - %84 = zext i8 %83 to i64 - %85 = or disjoint i64 %77, %68 - %86 = or disjoint i64 %85, %81 - %87 = or disjoint i64 %86, %84 - br label %88 - -88: ; preds = %36, %check_pack_index_ptr.exit, %st_mult.exit - %.0 = phi i64 [ %22, %st_mult.exit ], [ %87, %check_pack_index_ptr.exit ], [ %37, %36 ] + %81 = shl nuw nsw i64 %80, 16 + %82 = or disjoint i64 %81, %77 + %83 = getelementptr inbounds nuw i8, ptr %43, i64 6 + %84 = load i8, ptr %83, align 1, !tbaa !12 + %85 = zext i8 %84 to i64 + %86 = shl nuw nsw i64 %85, 8 + %87 = getelementptr inbounds nuw i8, ptr %43, i64 7 + %88 = load i8, ptr %87, align 1, !tbaa !12 + %89 = zext i8 %88 to i64 + %90 = or disjoint i64 %82, %73 + %91 = or disjoint i64 %90, %86 + %92 = or disjoint i64 %91, %89 + br label %93 + +93: ; preds = %36, %check_pack_index_ptr.exit, %st_mult.exit + %.0 = phi i64 [ %22, %st_mult.exit ], [ %92, %check_pack_index_ptr.exit ], [ %37, %36 ] ret i64 %.0 } diff --git a/bench/hyperscan/optimized/runtime.ll b/bench/hyperscan/optimized/runtime.ll index 5a283e1c56f..c5ac16b83d2 100644 --- a/bench/hyperscan/optimized/runtime.ll +++ b/bench/hyperscan/optimized/runtime.ll @@ -579,16 +579,16 @@ initSomState.exit: ; preds = %2, %13, %24 44: ; preds = %initSomState.exit %45 = getelementptr inbounds nuw i8, ptr %35, i64 9 %46 = load i8, ptr %45, align 1 - switch i8 %46, label %345 [ + switch i8 %46, label %337 [ i8 0, label %nfaRevAccelCheck.exit i8 5, label %47 - i8 6, label %109 - i8 7, label %175 - i8 8, label %238 - i8 9, label %305 - i8 10, label %314 - i8 11, label %324 - i8 12, label %334 + i8 6, label %107 + i8 7, label %171 + i8 8, label %232 + i8 9, label %297 + i8 10, label %306 + i8 11, label %316 + i8 12, label %326 ] 47: ; preds = %44 @@ -598,7 +598,7 @@ initSomState.exit: ; preds = %2, %13, %24 %51 = zext i8 %50 to i64 %52 = sub i64 %48, %51 %53 = icmp ult i64 %52, 16 - br i1 %53, label %345, label %54 + br i1 %53, label %337, label %54 54: ; preds = %47 %55 = getelementptr inbounds nuw i8, ptr %35, i64 12 @@ -625,7 +625,7 @@ initSomState.exit: ; preds = %2, %13, %24 %65 = ptrtoint ptr %.ptr173 to i64 %66 = and i64 %65, 15 %.not.i34 = icmp eq i64 %66, 0 - br i1 %.not.i34, label %.preheader252, label %67 + br i1 %.not.i34, label %.preheader244, label %67 67: ; preds = %64 %68 = getelementptr inbounds i8, ptr %.ptr173, i64 -16 @@ -646,573 +646,561 @@ initSomState.exit: ; preds = %2, %13, %24 78: ; preds = %67 %.add169 = sub nuw nsw i64 %52, %66 - %.ptr174 = getelementptr inbounds nuw i8, ptr %37, i64 %.add169 - %79 = add nuw nsw i64 %66, %51 - %80 = sub i64 %48, %79 - %.not59.i = icmp sgt i64 %80, 0 - br i1 %.not59.i, label %.preheader252, label %rvermicelliExec.exit + br label %.preheader244 -.preheader252: ; preds = %78, %64 +.preheader244: ; preds = %78, %64 %.014.i73.idx.ph = phi i64 [ %52, %64 ], [ %.add169, %78 ] - br label %81 + br label %79 -81: ; preds = %.preheader252, %83 - %.014.i73.idx = phi i64 [ %.014.i73.add, %83 ], [ %.014.i73.idx.ph, %.preheader252 ] - %82 = icmp sgt i64 %.014.i73.idx, 15 - br i1 %82, label %83, label %93 +79: ; preds = %.preheader244, %81 + %.014.i73.idx = phi i64 [ %.014.i73.add, %81 ], [ %.014.i73.idx.ph, %.preheader244 ] + %80 = icmp sgt i64 %.014.i73.idx, 15 + br i1 %80, label %81, label %91 -83: ; preds = %81 +81: ; preds = %79 %.014.i73.add = add nsw i64 %.014.i73.idx, -16 %.ptr170 = getelementptr inbounds i8, ptr %37, i64 %.014.i73.add call void @llvm.assume(i1 true) [ "align"(ptr %.ptr170, i64 16) ] - %84 = load <16 x i8>, ptr %.ptr170, align 16 - %85 = icmp eq <16 x i8> %58, %84 - %86 = bitcast <16 x i1> %85 to i16 - %.not.i75.not = icmp eq i16 %86, 0 - br i1 %.not.i75.not, label %81, label %rvermSearchAligned.exit, !prof !6 + %82 = load <16 x i8>, ptr %.ptr170, align 16 + %83 = icmp eq <16 x i8> %58, %82 + %84 = bitcast <16 x i1> %83 to i16 + %.not.i75.not = icmp eq i16 %84, 0 + br i1 %.not.i75.not, label %79, label %rvermSearchAligned.exit, !prof !6 -rvermSearchAligned.exit: ; preds = %83 +rvermSearchAligned.exit: ; preds = %81 %.014.i73.ptr.le = getelementptr inbounds nuw i8, ptr %37, i64 %.014.i73.idx - %87 = zext i16 %86 to i32 - %88 = getelementptr inbounds nuw i8, ptr %.014.i73.ptr.le, i64 15 - %89 = tail call range(i32 0, 32) i32 @llvm.ctlz.i32(i32 range(i32 1, 0) %87, i1 true) - %90 = zext nneg i32 %89 to i64 - %91 = sub nsw i64 0, %90 - %92 = getelementptr inbounds i8, ptr %88, i64 %91 + %85 = zext i16 %84 to i32 + %86 = getelementptr inbounds nuw i8, ptr %.014.i73.ptr.le, i64 15 + %87 = tail call range(i32 0, 32) i32 @llvm.ctlz.i32(i32 range(i32 1, 0) %85, i1 true) + %88 = zext nneg i32 %87 to i64 + %89 = sub nsw i64 0, %88 + %90 = getelementptr inbounds i8, ptr %86, i64 %89 br label %rvermicelliExec.exit -93: ; preds = %81 - %94 = load <16 x i8>, ptr %37, align 1 - %95 = icmp eq <16 x i8> %58, %94 - %96 = bitcast <16 x i1> %95 to i16 - %.not.i67 = icmp eq i16 %96, 0 - br i1 %.not.i67, label %rvermUnalign.exit, label %97, !prof !6 - -97: ; preds = %93 - %98 = zext i16 %96 to i32 - %99 = getelementptr inbounds nuw i8, ptr %37, i64 31 - %100 = tail call range(i32 0, 32) i32 @llvm.ctlz.i32(i32 range(i32 1, 0) %98, i1 true) - %101 = zext nneg i32 %100 to i64 - %102 = sub nsw i64 0, %101 - %103 = getelementptr inbounds i8, ptr %99, i64 %102 +91: ; preds = %79 + %92 = load <16 x i8>, ptr %37, align 1 + %93 = icmp eq <16 x i8> %58, %92 + %94 = bitcast <16 x i1> %93 to i16 + %.not.i67 = icmp eq i16 %94, 0 + br i1 %.not.i67, label %rvermUnalign.exit, label %95, !prof !6 + +95: ; preds = %91 + %96 = zext i16 %94 to i32 + %97 = getelementptr inbounds nuw i8, ptr %37, i64 31 + %98 = tail call range(i32 0, 32) i32 @llvm.ctlz.i32(i32 range(i32 1, 0) %96, i1 true) + %99 = zext nneg i32 %98 to i64 + %100 = sub nsw i64 0, %99 + %101 = getelementptr inbounds i8, ptr %97, i64 %100 br label %rvermUnalign.exit -rvermUnalign.exit: ; preds = %93, %97 - %.08.i = phi ptr [ %103, %97 ], [ null, %93 ] +rvermUnalign.exit: ; preds = %91, %95 + %.08.i = phi ptr [ %101, %95 ], [ null, %91 ] %.not62.i = icmp eq ptr %.08.i, null - %104 = getelementptr inbounds i8, ptr %37, i64 -1 - %105 = select i1 %.not62.i, ptr %104, ptr %.08.i + %102 = getelementptr inbounds i8, ptr %37, i64 -1 + %103 = select i1 %.not62.i, ptr %102, ptr %.08.i br label %rvermicelliExec.exit -rvermicelliExec.exit: ; preds = %.preheader, %61, %rvermSearchAligned.exit, %.thread, %78, %rvermUnalign.exit - %.0.i35 = phi ptr [ %.ptr174, %78 ], [ %105, %rvermUnalign.exit ], [ %92, %rvermSearchAligned.exit ], [ %77, %.thread ], [ %.046.i, %61 ], [ %.046.i, %.preheader ] - %106 = ptrtoint ptr %.0.i35 to i64 - %107 = sub i64 %51, %59 - %108 = add i64 %107, %106 - br label %345 - -109: ; preds = %44 - %110 = add i64 %39, 1 - %111 = getelementptr inbounds nuw i8, ptr %35, i64 10 - %112 = load i8, ptr %111, align 2 - %113 = zext i8 %112 to i64 - %114 = sub i64 %110, %113 - %115 = icmp ult i64 %114, 16 - br i1 %115, label %345, label %116 - -116: ; preds = %109 - %117 = getelementptr inbounds nuw i8, ptr %35, i64 12 - %118 = load i8, ptr %117, align 4 - %.ptr165 = getelementptr inbounds i8, ptr %37, i64 %114 - %119 = insertelement <16 x i8> poison, i8 %118, i64 0 - %120 = shufflevector <16 x i8> %119, <16 x i8> poison, <16 x i32> zeroinitializer - %121 = ptrtoint ptr %37 to i64 - %122 = icmp slt i64 %114, 16 - br i1 %122, label %.preheader190, label %127 - -.preheader190: ; preds = %116, %123 - %.pn.i47 = phi ptr [ %.046.i48, %123 ], [ %.ptr165, %116 ] +rvermicelliExec.exit: ; preds = %.preheader, %61, %rvermSearchAligned.exit, %.thread, %rvermUnalign.exit + %.0.i35 = phi ptr [ %103, %rvermUnalign.exit ], [ %90, %rvermSearchAligned.exit ], [ %77, %.thread ], [ %.046.i, %61 ], [ %.046.i, %.preheader ] + %104 = ptrtoint ptr %.0.i35 to i64 + %105 = sub i64 %51, %59 + %106 = add i64 %105, %104 + br label %337 + +107: ; preds = %44 + %108 = add i64 %39, 1 + %109 = getelementptr inbounds nuw i8, ptr %35, i64 10 + %110 = load i8, ptr %109, align 2 + %111 = zext i8 %110 to i64 + %112 = sub i64 %108, %111 + %113 = icmp ult i64 %112, 16 + br i1 %113, label %337, label %114 + +114: ; preds = %107 + %115 = getelementptr inbounds nuw i8, ptr %35, i64 12 + %116 = load i8, ptr %115, align 4 + %.ptr165 = getelementptr inbounds i8, ptr %37, i64 %112 + %117 = insertelement <16 x i8> poison, i8 %116, i64 0 + %118 = shufflevector <16 x i8> %117, <16 x i8> poison, <16 x i32> zeroinitializer + %119 = ptrtoint ptr %37 to i64 + %120 = icmp slt i64 %112, 16 + br i1 %120, label %.preheader182, label %125 + +.preheader182: ; preds = %114, %121 + %.pn.i47 = phi ptr [ %.046.i48, %121 ], [ %.ptr165, %114 ] %.046.i48 = getelementptr inbounds i8, ptr %.pn.i47, i64 -1 %.not63.i49 = icmp ult ptr %.046.i48, %37 - br i1 %.not63.i49, label %rvermicelliExec.exit50, label %123 - -123: ; preds = %.preheader190 - %124 = load i8, ptr %.046.i48, align 1 - %125 = and i8 %124, -33 - %126 = icmp eq i8 %125, %118 - br i1 %126, label %rvermicelliExec.exit50, label %.preheader190 - -127: ; preds = %116 - %128 = ptrtoint ptr %.ptr165 to i64 - %129 = and i64 %128, 15 - %.not.i37 = icmp eq i64 %129, 0 - br i1 %.not.i37, label %.preheader254, label %130 - -130: ; preds = %127 - %131 = getelementptr inbounds i8, ptr %.ptr165, i64 -16 - %132 = load <16 x i8>, ptr %131, align 1 - %133 = and <16 x i8> %132, splat (i8 -33) - %134 = icmp eq <16 x i8> %120, %133 - %135 = bitcast <16 x i1> %134 to i16 - %.not.i64 = icmp eq i16 %135, 0 - br i1 %.not.i64, label %142, label %.thread102, !prof !6 - -.thread102: ; preds = %130 - %136 = zext i16 %135 to i32 - %137 = getelementptr inbounds nuw i8, ptr %.ptr165, i64 15 - %138 = tail call range(i32 0, 32) i32 @llvm.ctlz.i32(i32 range(i32 1, 0) %136, i1 true) - %139 = zext nneg i32 %138 to i64 - %140 = sub nsw i64 0, %139 - %141 = getelementptr inbounds i8, ptr %137, i64 %140 + br i1 %.not63.i49, label %rvermicelliExec.exit50, label %121 + +121: ; preds = %.preheader182 + %122 = load i8, ptr %.046.i48, align 1 + %123 = and i8 %122, -33 + %124 = icmp eq i8 %123, %116 + br i1 %124, label %rvermicelliExec.exit50, label %.preheader182 + +125: ; preds = %114 + %126 = ptrtoint ptr %.ptr165 to i64 + %127 = and i64 %126, 15 + %.not.i37 = icmp eq i64 %127, 0 + br i1 %.not.i37, label %.preheader246, label %128 + +128: ; preds = %125 + %129 = getelementptr inbounds i8, ptr %.ptr165, i64 -16 + %130 = load <16 x i8>, ptr %129, align 1 + %131 = and <16 x i8> %130, splat (i8 -33) + %132 = icmp eq <16 x i8> %118, %131 + %133 = bitcast <16 x i1> %132 to i16 + %.not.i64 = icmp eq i16 %133, 0 + br i1 %.not.i64, label %140, label %.thread102, !prof !6 + +.thread102: ; preds = %128 + %134 = zext i16 %133 to i32 + %135 = getelementptr inbounds nuw i8, ptr %.ptr165, i64 15 + %136 = tail call range(i32 0, 32) i32 @llvm.ctlz.i32(i32 range(i32 1, 0) %134, i1 true) + %137 = zext nneg i32 %136 to i64 + %138 = sub nsw i64 0, %137 + %139 = getelementptr inbounds i8, ptr %135, i64 %138 br label %rvermicelliExec.exit50 -142: ; preds = %130 - %.add161 = sub nuw nsw i64 %114, %129 - %.ptr166 = getelementptr inbounds nuw i8, ptr %37, i64 %.add161 - %143 = add nuw nsw i64 %129, %113 - %144 = sub i64 %110, %143 - %.not59.i46 = icmp sgt i64 %144, 0 - br i1 %.not59.i46, label %.preheader254, label %rvermicelliExec.exit50 +140: ; preds = %128 + %.add161 = sub nuw nsw i64 %112, %127 + br label %.preheader246 -.preheader254: ; preds = %142, %127 - %.015.i.idx.ph = phi i64 [ %114, %127 ], [ %.add161, %142 ] - br label %145 +.preheader246: ; preds = %140, %125 + %.015.i.idx.ph = phi i64 [ %112, %125 ], [ %.add161, %140 ] + br label %141 -145: ; preds = %.preheader254, %147 - %.015.i.idx = phi i64 [ %.015.i.add, %147 ], [ %.015.i.idx.ph, %.preheader254 ] - %146 = icmp sgt i64 %.015.i.idx, 15 - br i1 %146, label %147, label %158 +141: ; preds = %.preheader246, %143 + %.015.i.idx = phi i64 [ %.015.i.add, %143 ], [ %.015.i.idx.ph, %.preheader246 ] + %142 = icmp sgt i64 %.015.i.idx, 15 + br i1 %142, label %143, label %154 -147: ; preds = %145 +143: ; preds = %141 %.015.i.add = add nsw i64 %.015.i.idx, -16 %.ptr162 = getelementptr inbounds i8, ptr %37, i64 %.015.i.add call void @llvm.assume(i1 true) [ "align"(ptr %.ptr162, i64 16) ] - %148 = load <16 x i8>, ptr %.ptr162, align 16 - %149 = and <16 x i8> %148, splat (i8 -33) - %150 = icmp eq <16 x i8> %120, %149 - %151 = bitcast <16 x i1> %150 to i16 - %.not.i71 = icmp eq i16 %151, 0 - br i1 %.not.i71, label %145, label %rvermSearchAlignedNocase.exit, !prof !6 - -rvermSearchAlignedNocase.exit: ; preds = %147 + %144 = load <16 x i8>, ptr %.ptr162, align 16 + %145 = and <16 x i8> %144, splat (i8 -33) + %146 = icmp eq <16 x i8> %118, %145 + %147 = bitcast <16 x i1> %146 to i16 + %.not.i71 = icmp eq i16 %147, 0 + br i1 %.not.i71, label %141, label %rvermSearchAlignedNocase.exit, !prof !6 + +rvermSearchAlignedNocase.exit: ; preds = %143 %.015.i.ptr.le = getelementptr inbounds nuw i8, ptr %37, i64 %.015.i.idx - %152 = zext i16 %151 to i32 - %153 = getelementptr inbounds nuw i8, ptr %.015.i.ptr.le, i64 15 - %154 = tail call range(i32 0, 32) i32 @llvm.ctlz.i32(i32 range(i32 1, 0) %152, i1 true) - %155 = zext nneg i32 %154 to i64 - %156 = sub nsw i64 0, %155 - %157 = getelementptr inbounds i8, ptr %153, i64 %156 + %148 = zext i16 %147 to i32 + %149 = getelementptr inbounds nuw i8, ptr %.015.i.ptr.le, i64 15 + %150 = tail call range(i32 0, 32) i32 @llvm.ctlz.i32(i32 range(i32 1, 0) %148, i1 true) + %151 = zext nneg i32 %150 to i64 + %152 = sub nsw i64 0, %151 + %153 = getelementptr inbounds i8, ptr %149, i64 %152 br label %rvermicelliExec.exit50 -158: ; preds = %145 - %159 = load <16 x i8>, ptr %37, align 1 - %160 = and <16 x i8> %159, splat (i8 -33) - %161 = icmp eq <16 x i8> %120, %160 - %162 = bitcast <16 x i1> %161 to i16 - %.not.i63 = icmp eq i16 %162, 0 - br i1 %.not.i63, label %rvermUnalignNocase.exit, label %163, !prof !6 - -163: ; preds = %158 - %164 = zext i16 %162 to i32 - %165 = getelementptr inbounds nuw i8, ptr %37, i64 31 - %166 = tail call range(i32 0, 32) i32 @llvm.ctlz.i32(i32 range(i32 1, 0) %164, i1 true) - %167 = zext nneg i32 %166 to i64 - %168 = sub nsw i64 0, %167 - %169 = getelementptr inbounds i8, ptr %165, i64 %168 +154: ; preds = %141 + %155 = load <16 x i8>, ptr %37, align 1 + %156 = and <16 x i8> %155, splat (i8 -33) + %157 = icmp eq <16 x i8> %118, %156 + %158 = bitcast <16 x i1> %157 to i16 + %.not.i63 = icmp eq i16 %158, 0 + br i1 %.not.i63, label %rvermUnalignNocase.exit, label %159, !prof !6 + +159: ; preds = %154 + %160 = zext i16 %158 to i32 + %161 = getelementptr inbounds nuw i8, ptr %37, i64 31 + %162 = tail call range(i32 0, 32) i32 @llvm.ctlz.i32(i32 range(i32 1, 0) %160, i1 true) + %163 = zext nneg i32 %162 to i64 + %164 = sub nsw i64 0, %163 + %165 = getelementptr inbounds i8, ptr %161, i64 %164 br label %rvermUnalignNocase.exit -rvermUnalignNocase.exit: ; preds = %158, %163 - %.09.i = phi ptr [ %169, %163 ], [ null, %158 ] +rvermUnalignNocase.exit: ; preds = %154, %159 + %.09.i = phi ptr [ %165, %159 ], [ null, %154 ] %.not62.i45 = icmp eq ptr %.09.i, null - %170 = getelementptr inbounds i8, ptr %37, i64 -1 - %171 = select i1 %.not62.i45, ptr %170, ptr %.09.i + %166 = getelementptr inbounds i8, ptr %37, i64 -1 + %167 = select i1 %.not62.i45, ptr %166, ptr %.09.i br label %rvermicelliExec.exit50 -rvermicelliExec.exit50: ; preds = %.preheader190, %123, %rvermSearchAlignedNocase.exit, %.thread102, %142, %rvermUnalignNocase.exit - %.0.i42 = phi ptr [ %.ptr166, %142 ], [ %171, %rvermUnalignNocase.exit ], [ %157, %rvermSearchAlignedNocase.exit ], [ %141, %.thread102 ], [ %.046.i48, %123 ], [ %.046.i48, %.preheader190 ] - %172 = ptrtoint ptr %.0.i42 to i64 - %173 = sub i64 %113, %121 - %174 = add i64 %173, %172 - br label %345 - -175: ; preds = %44 - %176 = add i64 %39, 1 - %177 = getelementptr inbounds nuw i8, ptr %35, i64 10 - %178 = load i8, ptr %177, align 2 - %179 = zext i8 %178 to i64 - %180 = sub i64 %176, %179 - %181 = icmp ult i64 %180, 17 - br i1 %181, label %345, label %182 - -182: ; preds = %175 - %183 = getelementptr inbounds nuw i8, ptr %35, i64 12 - %184 = load i8, ptr %183, align 4 - %185 = getelementptr inbounds nuw i8, ptr %35, i64 13 - %186 = load i8, ptr %185, align 1 - %.ptr157 = getelementptr inbounds i8, ptr %37, i64 %180 - %187 = insertelement <16 x i8> poison, i8 %184, i64 0 - %188 = shufflevector <16 x i8> %187, <16 x i8> poison, <16 x i32> zeroinitializer - %189 = insertelement <16 x i8> poison, i8 %186, i64 0 - %190 = shufflevector <16 x i8> %189, <16 x i8> poison, <16 x i32> zeroinitializer - %191 = ptrtoint ptr %.ptr157 to i64 - %192 = and i64 %191, 15 - %.not.i51 = icmp eq i64 %192, 0 - br i1 %.not.i51, label %.preheader257, label %193 - -193: ; preds = %182 - %194 = getelementptr inbounds i8, ptr %.ptr157, i64 -16 - %195 = load <16 x i8>, ptr %194, align 1 - %196 = icmp eq <16 x i8> %190, %195 - %197 = icmp eq <16 x i8> %188, %195 - %198 = sext <16 x i1> %197 to <16 x i8> - %199 = shufflevector <16 x i8> , <16 x i8> %198, <16 x i32> - %200 = icmp slt <16 x i8> %199, zeroinitializer - %201 = select <16 x i1> %196, <16 x i1> %200, <16 x i1> zeroinitializer - %202 = bitcast <16 x i1> %201 to i16 - %.not.i79 = icmp eq i16 %202, 0 +rvermicelliExec.exit50: ; preds = %.preheader182, %121, %rvermSearchAlignedNocase.exit, %.thread102, %rvermUnalignNocase.exit + %.0.i42 = phi ptr [ %167, %rvermUnalignNocase.exit ], [ %153, %rvermSearchAlignedNocase.exit ], [ %139, %.thread102 ], [ %.046.i48, %121 ], [ %.046.i48, %.preheader182 ] + %168 = ptrtoint ptr %.0.i42 to i64 + %169 = sub i64 %111, %119 + %170 = add i64 %169, %168 + br label %337 + +171: ; preds = %44 + %172 = add i64 %39, 1 + %173 = getelementptr inbounds nuw i8, ptr %35, i64 10 + %174 = load i8, ptr %173, align 2 + %175 = zext i8 %174 to i64 + %176 = sub i64 %172, %175 + %177 = icmp ult i64 %176, 17 + br i1 %177, label %337, label %178 + +178: ; preds = %171 + %179 = getelementptr inbounds nuw i8, ptr %35, i64 12 + %180 = load i8, ptr %179, align 4 + %181 = getelementptr inbounds nuw i8, ptr %35, i64 13 + %182 = load i8, ptr %181, align 1 + %.ptr157 = getelementptr inbounds i8, ptr %37, i64 %176 + %183 = insertelement <16 x i8> poison, i8 %180, i64 0 + %184 = shufflevector <16 x i8> %183, <16 x i8> poison, <16 x i32> zeroinitializer + %185 = insertelement <16 x i8> poison, i8 %182, i64 0 + %186 = shufflevector <16 x i8> %185, <16 x i8> poison, <16 x i32> zeroinitializer + %187 = ptrtoint ptr %.ptr157 to i64 + %188 = and i64 %187, 15 + %.not.i51 = icmp eq i64 %188, 0 + br i1 %.not.i51, label %.preheader249, label %189 + +189: ; preds = %178 + %190 = getelementptr inbounds i8, ptr %.ptr157, i64 -16 + %191 = load <16 x i8>, ptr %190, align 1 + %192 = icmp eq <16 x i8> %186, %191 + %193 = icmp eq <16 x i8> %184, %191 + %194 = sext <16 x i1> %193 to <16 x i8> + %195 = shufflevector <16 x i8> , <16 x i8> %194, <16 x i32> + %196 = icmp slt <16 x i8> %195, zeroinitializer + %197 = select <16 x i1> %192, <16 x i1> %196, <16 x i1> zeroinitializer + %198 = bitcast <16 x i1> %197 to i16 + %.not.i79 = icmp eq i16 %198, 0 br i1 %.not.i79, label %rdvermPrecondition.exit, label %rdvermPrecondition.exit.thread, !prof !6 -rdvermPrecondition.exit.thread: ; preds = %193 - %203 = zext i16 %202 to i32 - %204 = getelementptr inbounds nuw i8, ptr %.ptr157, i64 15 - %205 = tail call range(i32 0, 32) i32 @llvm.ctlz.i32(i32 range(i32 1, 0) %203, i1 true) - %206 = zext nneg i32 %205 to i64 - %207 = sub nsw i64 0, %206 - %208 = getelementptr inbounds i8, ptr %204, i64 %207 +rdvermPrecondition.exit.thread: ; preds = %189 + %199 = zext i16 %198 to i32 + %200 = getelementptr inbounds nuw i8, ptr %.ptr157, i64 15 + %201 = tail call range(i32 0, 32) i32 @llvm.ctlz.i32(i32 range(i32 1, 0) %199, i1 true) + %202 = zext nneg i32 %201 to i64 + %203 = sub nsw i64 0, %202 + %204 = getelementptr inbounds i8, ptr %200, i64 %203 br label %rvermicelliDoubleExec.exit -rdvermPrecondition.exit: ; preds = %193 - %.add153 = sub nuw nsw i64 %180, %192 +rdvermPrecondition.exit: ; preds = %189 + %.add153 = sub nuw nsw i64 %176, %188 %.ptr158 = getelementptr inbounds i8, ptr %37, i64 %.add153 - %209 = add nuw nsw i64 %192, %179 - %210 = sub i64 %176, %209 - %.not41.i = icmp sgt i64 %210, 0 - br i1 %.not41.i, label %.preheader257, label %rvermicelliDoubleExec.exit + %.not41.i = icmp sgt i64 %.add153, 0 + br i1 %.not41.i, label %.preheader249, label %rvermicelliDoubleExec.exit -.preheader257: ; preds = %rdvermPrecondition.exit, %182 - %.020.i84.idx.ph = phi i64 [ %180, %182 ], [ %.add153, %rdvermPrecondition.exit ] - br label %211 +.preheader249: ; preds = %rdvermPrecondition.exit, %178 + %.020.i84.idx.ph = phi i64 [ %176, %178 ], [ %.add153, %rdvermPrecondition.exit ] + br label %205 -211: ; preds = %.preheader257, %227 - %.020.i84.idx = phi i64 [ %.020.i84.add, %227 ], [ %.020.i84.idx.ph, %.preheader257 ] +205: ; preds = %.preheader249, %221 + %.020.i84.idx = phi i64 [ %.020.i84.add, %221 ], [ %.020.i84.idx.ph, %.preheader249 ] %.020.i84.ptr = getelementptr inbounds i8, ptr %37, i64 %.020.i84.idx - %212 = icmp sgt i64 %.020.i84.idx, 16 - br i1 %212, label %213, label %rvermicelliDoubleExec.exit + %206 = icmp sgt i64 %.020.i84.idx, 16 + br i1 %206, label %207, label %rvermicelliDoubleExec.exit -213: ; preds = %211 +207: ; preds = %205 %.020.i84.add = add nsw i64 %.020.i84.idx, -16 %.ptr154 = getelementptr inbounds i8, ptr %37, i64 %.020.i84.add call void @llvm.assume(i1 true) [ "align"(ptr %.ptr154, i64 16) ] - %214 = load <16 x i8>, ptr %.ptr154, align 16 - %215 = icmp eq <16 x i8> %190, %214 - %216 = icmp eq <16 x i8> %188, %214 - %217 = sext <16 x i1> %216 to <16 x i8> - %218 = shufflevector <16 x i8> , <16 x i8> %217, <16 x i32> - %219 = icmp slt <16 x i8> %218, zeroinitializer - %220 = select <16 x i1> %215, <16 x i1> %219, <16 x i1> zeroinitializer - %221 = bitcast <16 x i1> %220 to i16 - %222 = getelementptr inbounds i8, ptr %.020.i84.ptr, i64 -17 - %223 = load i8, ptr %222, align 1 - %224 = icmp eq i8 %223, %184 - %225 = extractelement <16 x i8> %214, i64 0 - %226 = icmp eq i8 %225, %186 - %or.cond = select i1 %224, i1 %226, i1 false - br i1 %or.cond, label %.thread122.split.loop.exit202, label %227 - -227: ; preds = %213 - %.not.i86.not = icmp eq i16 %221, 0 - br i1 %.not.i86.not, label %211, label %.thread122, !prof !7 - -.thread122.split.loop.exit202: ; preds = %213 - %228 = or i16 %221, 1 + %208 = load <16 x i8>, ptr %.ptr154, align 16 + %209 = icmp eq <16 x i8> %186, %208 + %210 = icmp eq <16 x i8> %184, %208 + %211 = sext <16 x i1> %210 to <16 x i8> + %212 = shufflevector <16 x i8> , <16 x i8> %211, <16 x i32> + %213 = icmp slt <16 x i8> %212, zeroinitializer + %214 = select <16 x i1> %209, <16 x i1> %213, <16 x i1> zeroinitializer + %215 = bitcast <16 x i1> %214 to i16 + %216 = getelementptr inbounds i8, ptr %.020.i84.ptr, i64 -17 + %217 = load i8, ptr %216, align 1 + %218 = icmp eq i8 %217, %180 + %219 = extractelement <16 x i8> %208, i64 0 + %220 = icmp eq i8 %219, %182 + %or.cond = select i1 %218, i1 %220, i1 false + br i1 %or.cond, label %.thread122.split.loop.exit194, label %221 + +221: ; preds = %207 + %.not.i86.not = icmp eq i16 %215, 0 + br i1 %.not.i86.not, label %205, label %.thread122, !prof !7 + +.thread122.split.loop.exit194: ; preds = %207 + %222 = or i16 %215, 1 br label %.thread122 -.thread122: ; preds = %227, %.thread122.split.loop.exit202 - %.018.i119.in = phi i16 [ %228, %.thread122.split.loop.exit202 ], [ %221, %227 ] +.thread122: ; preds = %221, %.thread122.split.loop.exit194 + %.018.i119.in = phi i16 [ %222, %.thread122.split.loop.exit194 ], [ %215, %221 ] %.018.i119 = zext i16 %.018.i119.in to i32 - %229 = getelementptr inbounds nuw i8, ptr %.020.i84.ptr, i64 15 - %230 = tail call range(i32 0, 32) i32 @llvm.ctlz.i32(i32 range(i32 1, 0) %.018.i119, i1 true) - %231 = zext nneg i32 %230 to i64 - %232 = sub nsw i64 0, %231 - %233 = getelementptr inbounds i8, ptr %229, i64 %232 + %223 = getelementptr inbounds nuw i8, ptr %.020.i84.ptr, i64 15 + %224 = tail call range(i32 0, 32) i32 @llvm.ctlz.i32(i32 range(i32 1, 0) %.018.i119, i1 true) + %225 = zext nneg i32 %224 to i64 + %226 = sub nsw i64 0, %225 + %227 = getelementptr inbounds i8, ptr %223, i64 %226 br label %rvermicelliDoubleExec.exit -rvermicelliDoubleExec.exit: ; preds = %211, %.thread122, %rdvermPrecondition.exit.thread, %rdvermPrecondition.exit - %.1.i53 = phi ptr [ %.ptr158, %rdvermPrecondition.exit ], [ %208, %rdvermPrecondition.exit.thread ], [ %233, %.thread122 ], [ %.020.i84.ptr, %211 ] - %234 = ptrtoint ptr %.1.i53 to i64 - %235 = ptrtoint ptr %37 to i64 - %236 = sub i64 %179, %235 - %237 = add i64 %236, %234 - br label %345 - -238: ; preds = %44 - %239 = add i64 %39, 1 - %240 = getelementptr inbounds nuw i8, ptr %35, i64 10 - %241 = load i8, ptr %240, align 2 - %242 = zext i8 %241 to i64 - %243 = sub i64 %239, %242 - %244 = icmp ult i64 %243, 17 - br i1 %244, label %345, label %245 - -245: ; preds = %238 - %246 = getelementptr inbounds nuw i8, ptr %35, i64 12 - %247 = load i8, ptr %246, align 4 - %248 = getelementptr inbounds nuw i8, ptr %35, i64 13 - %249 = load i8, ptr %248, align 1 - %.ptr149 = getelementptr inbounds i8, ptr %37, i64 %243 - %250 = insertelement <16 x i8> poison, i8 %247, i64 0 - %251 = shufflevector <16 x i8> %250, <16 x i8> poison, <16 x i32> zeroinitializer - %252 = insertelement <16 x i8> poison, i8 %249, i64 0 - %253 = shufflevector <16 x i8> %252, <16 x i8> poison, <16 x i32> zeroinitializer - %254 = ptrtoint ptr %.ptr149 to i64 - %255 = and i64 %254, 15 - %.not.i54 = icmp eq i64 %255, 0 - br i1 %.not.i54, label %.preheader263, label %256 - -256: ; preds = %245 - %257 = getelementptr inbounds i8, ptr %.ptr149, i64 -16 - %258 = load <16 x i8>, ptr %257, align 1 - %259 = and <16 x i8> %258, splat (i8 -33) - %260 = icmp eq <16 x i8> %253, %259 - %261 = icmp eq <16 x i8> %251, %259 - %262 = sext <16 x i1> %261 to <16 x i8> - %263 = shufflevector <16 x i8> , <16 x i8> %262, <16 x i32> - %264 = icmp slt <16 x i8> %263, zeroinitializer - %265 = select <16 x i1> %260, <16 x i1> %264, <16 x i1> zeroinitializer - %266 = bitcast <16 x i1> %265 to i16 - %.not.i77 = icmp eq i16 %266, 0 +rvermicelliDoubleExec.exit: ; preds = %205, %.thread122, %rdvermPrecondition.exit.thread, %rdvermPrecondition.exit + %.1.i53 = phi ptr [ %.ptr158, %rdvermPrecondition.exit ], [ %204, %rdvermPrecondition.exit.thread ], [ %227, %.thread122 ], [ %.020.i84.ptr, %205 ] + %228 = ptrtoint ptr %.1.i53 to i64 + %229 = ptrtoint ptr %37 to i64 + %230 = sub i64 %175, %229 + %231 = add i64 %230, %228 + br label %337 + +232: ; preds = %44 + %233 = add i64 %39, 1 + %234 = getelementptr inbounds nuw i8, ptr %35, i64 10 + %235 = load i8, ptr %234, align 2 + %236 = zext i8 %235 to i64 + %237 = sub i64 %233, %236 + %238 = icmp ult i64 %237, 17 + br i1 %238, label %337, label %239 + +239: ; preds = %232 + %240 = getelementptr inbounds nuw i8, ptr %35, i64 12 + %241 = load i8, ptr %240, align 4 + %242 = getelementptr inbounds nuw i8, ptr %35, i64 13 + %243 = load i8, ptr %242, align 1 + %.ptr149 = getelementptr inbounds i8, ptr %37, i64 %237 + %244 = insertelement <16 x i8> poison, i8 %241, i64 0 + %245 = shufflevector <16 x i8> %244, <16 x i8> poison, <16 x i32> zeroinitializer + %246 = insertelement <16 x i8> poison, i8 %243, i64 0 + %247 = shufflevector <16 x i8> %246, <16 x i8> poison, <16 x i32> zeroinitializer + %248 = ptrtoint ptr %.ptr149 to i64 + %249 = and i64 %248, 15 + %.not.i54 = icmp eq i64 %249, 0 + br i1 %.not.i54, label %.preheader255, label %250 + +250: ; preds = %239 + %251 = getelementptr inbounds i8, ptr %.ptr149, i64 -16 + %252 = load <16 x i8>, ptr %251, align 1 + %253 = and <16 x i8> %252, splat (i8 -33) + %254 = icmp eq <16 x i8> %247, %253 + %255 = icmp eq <16 x i8> %245, %253 + %256 = sext <16 x i1> %255 to <16 x i8> + %257 = shufflevector <16 x i8> , <16 x i8> %256, <16 x i32> + %258 = icmp slt <16 x i8> %257, zeroinitializer + %259 = select <16 x i1> %254, <16 x i1> %258, <16 x i1> zeroinitializer + %260 = bitcast <16 x i1> %259 to i16 + %.not.i77 = icmp eq i16 %260, 0 br i1 %.not.i77, label %rdvermPreconditionNocase.exit, label %rdvermPreconditionNocase.exit.thread, !prof !6 -rdvermPreconditionNocase.exit.thread: ; preds = %256 - %267 = zext i16 %266 to i32 - %268 = getelementptr inbounds nuw i8, ptr %.ptr149, i64 15 - %269 = tail call range(i32 0, 32) i32 @llvm.ctlz.i32(i32 range(i32 1, 0) %267, i1 true) - %270 = zext nneg i32 %269 to i64 - %271 = sub nsw i64 0, %270 - %272 = getelementptr inbounds i8, ptr %268, i64 %271 +rdvermPreconditionNocase.exit.thread: ; preds = %250 + %261 = zext i16 %260 to i32 + %262 = getelementptr inbounds nuw i8, ptr %.ptr149, i64 15 + %263 = tail call range(i32 0, 32) i32 @llvm.ctlz.i32(i32 range(i32 1, 0) %261, i1 true) + %264 = zext nneg i32 %263 to i64 + %265 = sub nsw i64 0, %264 + %266 = getelementptr inbounds i8, ptr %262, i64 %265 br label %rvermicelliDoubleExec.exit62 -rdvermPreconditionNocase.exit: ; preds = %256 - %.add146 = sub nuw nsw i64 %243, %255 +rdvermPreconditionNocase.exit: ; preds = %250 + %.add146 = sub nuw nsw i64 %237, %249 %.ptr150 = getelementptr inbounds i8, ptr %37, i64 %.add146 - %273 = add nuw nsw i64 %255, %242 - %274 = sub i64 %239, %273 - %.not41.i56 = icmp sgt i64 %274, 0 - br i1 %.not41.i56, label %.preheader263, label %rvermicelliDoubleExec.exit62 + %.not41.i56 = icmp sgt i64 %.add146, 0 + br i1 %.not41.i56, label %.preheader255, label %rvermicelliDoubleExec.exit62 -.preheader263: ; preds = %rdvermPreconditionNocase.exit, %245 - %.022.i.idx.ph = phi i64 [ %243, %245 ], [ %.add146, %rdvermPreconditionNocase.exit ] - br label %275 +.preheader255: ; preds = %rdvermPreconditionNocase.exit, %239 + %.022.i.idx.ph = phi i64 [ %237, %239 ], [ %.add146, %rdvermPreconditionNocase.exit ] + br label %267 -275: ; preds = %.preheader263, %294 - %.022.i.idx = phi i64 [ %.022.i.add, %294 ], [ %.022.i.idx.ph, %.preheader263 ] +267: ; preds = %.preheader255, %286 + %.022.i.idx = phi i64 [ %.022.i.add, %286 ], [ %.022.i.idx.ph, %.preheader255 ] %.022.i.ptr = getelementptr inbounds i8, ptr %37, i64 %.022.i.idx - %276 = icmp sgt i64 %.022.i.idx, 16 - br i1 %276, label %277, label %rvermicelliDoubleExec.exit62 + %268 = icmp sgt i64 %.022.i.idx, 16 + br i1 %268, label %269, label %rvermicelliDoubleExec.exit62 -277: ; preds = %275 +269: ; preds = %267 %.022.i.add = add nsw i64 %.022.i.idx, -16 %.ptr = getelementptr inbounds i8, ptr %37, i64 %.022.i.add call void @llvm.assume(i1 true) [ "align"(ptr %.ptr, i64 16) ] - %278 = load <16 x i8>, ptr %.ptr, align 16 - %279 = and <16 x i8> %278, splat (i8 -33) - %280 = icmp eq <16 x i8> %253, %279 - %281 = icmp eq <16 x i8> %251, %279 - %282 = sext <16 x i1> %281 to <16 x i8> - %283 = shufflevector <16 x i8> , <16 x i8> %282, <16 x i32> - %284 = icmp slt <16 x i8> %283, zeroinitializer - %285 = select <16 x i1> %280, <16 x i1> %284, <16 x i1> zeroinitializer - %286 = bitcast <16 x i1> %285 to i16 - %287 = getelementptr inbounds i8, ptr %.022.i.ptr, i64 -17 - %288 = load i8, ptr %287, align 1 - %289 = and i8 %288, -33 - %290 = icmp eq i8 %289, %247 - %291 = extractelement <16 x i8> %278, i64 0 - %292 = and i8 %291, -33 - %293 = icmp eq i8 %292, %249 - %or.cond238 = select i1 %290, i1 %293, i1 false - br i1 %or.cond238, label %.thread139.split.loop.exit196, label %294 - -294: ; preds = %277 - %.not.i82 = icmp eq i16 %286, 0 - br i1 %.not.i82, label %275, label %.thread139, !prof !7 - -.thread139.split.loop.exit196: ; preds = %277 - %295 = or i16 %286, 1 + %270 = load <16 x i8>, ptr %.ptr, align 16 + %271 = and <16 x i8> %270, splat (i8 -33) + %272 = icmp eq <16 x i8> %247, %271 + %273 = icmp eq <16 x i8> %245, %271 + %274 = sext <16 x i1> %273 to <16 x i8> + %275 = shufflevector <16 x i8> , <16 x i8> %274, <16 x i32> + %276 = icmp slt <16 x i8> %275, zeroinitializer + %277 = select <16 x i1> %272, <16 x i1> %276, <16 x i1> zeroinitializer + %278 = bitcast <16 x i1> %277 to i16 + %279 = getelementptr inbounds i8, ptr %.022.i.ptr, i64 -17 + %280 = load i8, ptr %279, align 1 + %281 = and i8 %280, -33 + %282 = icmp eq i8 %281, %241 + %283 = extractelement <16 x i8> %270, i64 0 + %284 = and i8 %283, -33 + %285 = icmp eq i8 %284, %243 + %or.cond230 = select i1 %282, i1 %285, i1 false + br i1 %or.cond230, label %.thread139.split.loop.exit188, label %286 + +286: ; preds = %269 + %.not.i82 = icmp eq i16 %278, 0 + br i1 %.not.i82, label %267, label %.thread139, !prof !7 + +.thread139.split.loop.exit188: ; preds = %269 + %287 = or i16 %278, 1 br label %.thread139 -.thread139: ; preds = %294, %.thread139.split.loop.exit196 - %.020.i136.in = phi i16 [ %295, %.thread139.split.loop.exit196 ], [ %286, %294 ] +.thread139: ; preds = %286, %.thread139.split.loop.exit188 + %.020.i136.in = phi i16 [ %287, %.thread139.split.loop.exit188 ], [ %278, %286 ] %.020.i136 = zext i16 %.020.i136.in to i32 - %296 = getelementptr inbounds nuw i8, ptr %.022.i.ptr, i64 15 - %297 = tail call range(i32 0, 32) i32 @llvm.ctlz.i32(i32 range(i32 1, 0) %.020.i136, i1 true) - %298 = zext nneg i32 %297 to i64 - %299 = sub nsw i64 0, %298 - %300 = getelementptr inbounds i8, ptr %296, i64 %299 + %288 = getelementptr inbounds nuw i8, ptr %.022.i.ptr, i64 15 + %289 = tail call range(i32 0, 32) i32 @llvm.ctlz.i32(i32 range(i32 1, 0) %.020.i136, i1 true) + %290 = zext nneg i32 %289 to i64 + %291 = sub nsw i64 0, %290 + %292 = getelementptr inbounds i8, ptr %288, i64 %291 br label %rvermicelliDoubleExec.exit62 -rvermicelliDoubleExec.exit62: ; preds = %275, %.thread139, %rdvermPreconditionNocase.exit.thread, %rdvermPreconditionNocase.exit - %.1.i60 = phi ptr [ %.ptr150, %rdvermPreconditionNocase.exit ], [ %272, %rdvermPreconditionNocase.exit.thread ], [ %300, %.thread139 ], [ %.022.i.ptr, %275 ] - %301 = ptrtoint ptr %.1.i60 to i64 - %302 = ptrtoint ptr %37 to i64 - %303 = sub i64 %242, %302 - %304 = add i64 %303, %301 - br label %345 - -305: ; preds = %44 - %306 = getelementptr inbounds nuw i8, ptr %35, i64 10 - %307 = load i8, ptr %306, align 2 - %308 = zext i8 %307 to i64 - %309 = sub i64 %39, %308 - %310 = getelementptr inbounds nuw i8, ptr %37, i64 %309 - %311 = load i8, ptr %310, align 1 - %312 = getelementptr inbounds nuw i8, ptr %35, i64 12 - %313 = load i8, ptr %312, align 4 - %.not65.i = icmp eq i8 %311, %313 - br i1 %.not65.i, label %345, label %nfaRevAccelCheck.exit.thread - -314: ; preds = %44 - %315 = getelementptr inbounds nuw i8, ptr %35, i64 10 - %316 = load i8, ptr %315, align 2 - %317 = zext i8 %316 to i64 - %318 = sub i64 %39, %317 - %319 = getelementptr inbounds nuw i8, ptr %37, i64 %318 - %320 = load i8, ptr %319, align 1 - %321 = and i8 %320, -33 - %322 = getelementptr inbounds nuw i8, ptr %35, i64 12 - %323 = load i8, ptr %322, align 4 - %.not64.i = icmp eq i8 %321, %323 - br i1 %.not64.i, label %345, label %nfaRevAccelCheck.exit.thread - -324: ; preds = %44 - %325 = getelementptr inbounds nuw i8, ptr %37, i64 %39 - %326 = getelementptr inbounds nuw i8, ptr %35, i64 10 - %327 = load i8, ptr %326, align 2 - %328 = zext i8 %327 to i64 - %329 = sub nsw i64 0, %328 - %330 = getelementptr inbounds i8, ptr %325, i64 %329 - %331 = load i16, ptr %330, align 1 - %332 = getelementptr inbounds nuw i8, ptr %35, i64 12 - %333 = load i16, ptr %332, align 4 - %.not63.i = icmp eq i16 %331, %333 - br i1 %.not63.i, label %345, label %nfaRevAccelCheck.exit.thread - -334: ; preds = %44 - %335 = getelementptr inbounds nuw i8, ptr %37, i64 %39 - %336 = getelementptr inbounds nuw i8, ptr %35, i64 10 - %337 = load i8, ptr %336, align 2 - %338 = zext i8 %337 to i64 - %339 = sub nsw i64 0, %338 - %340 = getelementptr inbounds i8, ptr %335, i64 %339 - %341 = load i16, ptr %340, align 1 - %342 = and i16 %341, -8225 - %343 = getelementptr inbounds nuw i8, ptr %35, i64 12 - %344 = load i16, ptr %343, align 4 - %.not.i = icmp eq i16 %342, %344 - br i1 %.not.i, label %345, label %nfaRevAccelCheck.exit.thread - -345: ; preds = %44, %334, %324, %314, %305, %rvermicelliDoubleExec.exit62, %238, %rvermicelliDoubleExec.exit, %175, %rvermicelliExec.exit50, %109, %rvermicelliExec.exit, %47 - %.0.i33 = phi i64 [ %39, %47 ], [ %108, %rvermicelliExec.exit ], [ %39, %109 ], [ %174, %rvermicelliExec.exit50 ], [ %39, %175 ], [ %237, %rvermicelliDoubleExec.exit ], [ %39, %238 ], [ %304, %rvermicelliDoubleExec.exit62 ], [ %39, %305 ], [ %39, %314 ], [ %39, %324 ], [ %39, %334 ], [ %39, %44 ] - %346 = icmp ult i64 %.0.i33, %42 - br i1 %346, label %nfaRevAccelCheck.exit.thread, label %nfaRevAccelCheck.exit - -nfaRevAccelCheck.exit: ; preds = %44, %345 - %.0.i = phi i64 [ %39, %44 ], [ %.0.i33, %345 ] +rvermicelliDoubleExec.exit62: ; preds = %267, %.thread139, %rdvermPreconditionNocase.exit.thread, %rdvermPreconditionNocase.exit + %.1.i60 = phi ptr [ %.ptr150, %rdvermPreconditionNocase.exit ], [ %266, %rdvermPreconditionNocase.exit.thread ], [ %292, %.thread139 ], [ %.022.i.ptr, %267 ] + %293 = ptrtoint ptr %.1.i60 to i64 + %294 = ptrtoint ptr %37 to i64 + %295 = sub i64 %236, %294 + %296 = add i64 %295, %293 + br label %337 + +297: ; preds = %44 + %298 = getelementptr inbounds nuw i8, ptr %35, i64 10 + %299 = load i8, ptr %298, align 2 + %300 = zext i8 %299 to i64 + %301 = sub i64 %39, %300 + %302 = getelementptr inbounds nuw i8, ptr %37, i64 %301 + %303 = load i8, ptr %302, align 1 + %304 = getelementptr inbounds nuw i8, ptr %35, i64 12 + %305 = load i8, ptr %304, align 4 + %.not65.i = icmp eq i8 %303, %305 + br i1 %.not65.i, label %337, label %nfaRevAccelCheck.exit.thread + +306: ; preds = %44 + %307 = getelementptr inbounds nuw i8, ptr %35, i64 10 + %308 = load i8, ptr %307, align 2 + %309 = zext i8 %308 to i64 + %310 = sub i64 %39, %309 + %311 = getelementptr inbounds nuw i8, ptr %37, i64 %310 + %312 = load i8, ptr %311, align 1 + %313 = and i8 %312, -33 + %314 = getelementptr inbounds nuw i8, ptr %35, i64 12 + %315 = load i8, ptr %314, align 4 + %.not64.i = icmp eq i8 %313, %315 + br i1 %.not64.i, label %337, label %nfaRevAccelCheck.exit.thread + +316: ; preds = %44 + %317 = getelementptr inbounds nuw i8, ptr %37, i64 %39 + %318 = getelementptr inbounds nuw i8, ptr %35, i64 10 + %319 = load i8, ptr %318, align 2 + %320 = zext i8 %319 to i64 + %321 = sub nsw i64 0, %320 + %322 = getelementptr inbounds i8, ptr %317, i64 %321 + %323 = load i16, ptr %322, align 1 + %324 = getelementptr inbounds nuw i8, ptr %35, i64 12 + %325 = load i16, ptr %324, align 4 + %.not63.i = icmp eq i16 %323, %325 + br i1 %.not63.i, label %337, label %nfaRevAccelCheck.exit.thread + +326: ; preds = %44 + %327 = getelementptr inbounds nuw i8, ptr %37, i64 %39 + %328 = getelementptr inbounds nuw i8, ptr %35, i64 10 + %329 = load i8, ptr %328, align 2 + %330 = zext i8 %329 to i64 + %331 = sub nsw i64 0, %330 + %332 = getelementptr inbounds i8, ptr %327, i64 %331 + %333 = load i16, ptr %332, align 1 + %334 = and i16 %333, -8225 + %335 = getelementptr inbounds nuw i8, ptr %35, i64 12 + %336 = load i16, ptr %335, align 4 + %.not.i = icmp eq i16 %334, %336 + br i1 %.not.i, label %337, label %nfaRevAccelCheck.exit.thread + +337: ; preds = %44, %326, %316, %306, %297, %rvermicelliDoubleExec.exit62, %232, %rvermicelliDoubleExec.exit, %171, %rvermicelliExec.exit50, %107, %rvermicelliExec.exit, %47 + %.0.i33 = phi i64 [ %39, %47 ], [ %106, %rvermicelliExec.exit ], [ %39, %107 ], [ %170, %rvermicelliExec.exit50 ], [ %39, %171 ], [ %231, %rvermicelliDoubleExec.exit ], [ %39, %232 ], [ %296, %rvermicelliDoubleExec.exit62 ], [ %39, %297 ], [ %39, %306 ], [ %39, %316 ], [ %39, %326 ], [ %39, %44 ] + %338 = icmp ult i64 %.0.i33, %42 + br i1 %338, label %nfaRevAccelCheck.exit.thread, label %nfaRevAccelCheck.exit + +nfaRevAccelCheck.exit: ; preds = %44, %337 + %.0.i = phi i64 [ %39, %44 ], [ %.0.i33, %337 ] %.not = icmp eq i64 %.0.i, 0 - br i1 %.not, label %nfaRevAccelCheck.exit.thread, label %347 - -347: ; preds = %nfaRevAccelCheck.exit - %348 = getelementptr inbounds nuw i8, ptr %1, i64 176 - %349 = load ptr, ptr %348, align 16 - store ptr %35, ptr %349, align 8 - %350 = getelementptr inbounds nuw i8, ptr %349, i64 12 - store i32 0, ptr %350, align 4 - %351 = getelementptr inbounds nuw i8, ptr %349, i64 8 - store i32 0, ptr %351, align 8 - %352 = getelementptr inbounds nuw i8, ptr %1, i64 168 - %353 = load ptr, ptr %352, align 8 - %354 = getelementptr inbounds nuw i8, ptr %32, i64 8 - %355 = load i32, ptr %354, align 4 - %356 = zext i32 %355 to i64 - %357 = getelementptr inbounds nuw i8, ptr %353, i64 %356 - %358 = getelementptr inbounds nuw i8, ptr %349, i64 16 - store ptr %357, ptr %358, align 8 - %359 = load ptr, ptr %3, align 8 - %360 = getelementptr inbounds nuw i8, ptr %32, i64 4 - %361 = load i32, ptr %360, align 4 - %362 = zext i32 %361 to i64 - %363 = getelementptr inbounds nuw i8, ptr %359, i64 %362 - %364 = getelementptr inbounds nuw i8, ptr %349, i64 24 - store ptr %363, ptr %364, align 8 - %365 = getelementptr inbounds nuw i8, ptr %1, i64 320 - %366 = load i64, ptr %365, align 8 - %367 = getelementptr inbounds nuw i8, ptr %349, i64 32 - store i64 %366, ptr %367, align 8 - %368 = load ptr, ptr %36, align 8 - %369 = getelementptr inbounds nuw i8, ptr %349, i64 40 - store ptr %368, ptr %369, align 8 - %370 = load i64, ptr %38, align 8 - %371 = getelementptr inbounds nuw i8, ptr %349, i64 48 - store i64 %370, ptr %371, align 8 - %372 = getelementptr inbounds nuw i8, ptr %1, i64 304 - %373 = load ptr, ptr %372, align 8 - %374 = getelementptr inbounds nuw i8, ptr %349, i64 56 - store ptr %373, ptr %374, align 8 - %375 = getelementptr inbounds nuw i8, ptr %1, i64 312 - %376 = load i64, ptr %375, align 8 - %377 = getelementptr inbounds nuw i8, ptr %349, i64 64 - store i64 %376, ptr %377, align 8 - %378 = getelementptr inbounds nuw i8, ptr %349, i64 88 - store ptr @roseReportAdaptor, ptr %378, align 8 - %379 = getelementptr inbounds nuw i8, ptr %349, i64 96 - store ptr %1, ptr %379, align 8 - %380 = getelementptr inbounds nuw i8, ptr %349, i64 80 - store i8 0, ptr %380, align 8 - store i64 %.0.i, ptr %371, align 8 - %381 = tail call signext i8 @nfaQueueInitState(ptr noundef %35, ptr noundef nonnull %349) #13 - %382 = getelementptr inbounds nuw i8, ptr %349, i64 104 - store i32 0, ptr %382, align 8, !alias.scope !8 - %383 = getelementptr inbounds nuw i8, ptr %349, i64 112 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %383, i8 0, i64 16, i1 false) - %384 = getelementptr inbounds nuw i8, ptr %349, i64 128 - store i32 2, ptr %384, align 8, !alias.scope !11 - %385 = getelementptr inbounds nuw i8, ptr %349, i64 136 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %385, i8 0, i64 16, i1 false) - store i32 2, ptr %350, align 4, !alias.scope !11 - %386 = load i64, ptr %38, align 8 - %387 = getelementptr inbounds nuw i8, ptr %349, i64 152 - store i32 1, ptr %387, align 8, !alias.scope !14 - %388 = getelementptr inbounds nuw i8, ptr %349, i64 160 - store i64 %386, ptr %388, align 8, !alias.scope !14 - %389 = getelementptr inbounds nuw i8, ptr %349, i64 168 - store i64 0, ptr %389, align 8, !alias.scope !14 - store i32 3, ptr %350, align 4, !alias.scope !14 - %390 = load ptr, ptr %349, align 8 - %391 = load i64, ptr %38, align 8 - %392 = tail call signext i8 @nfaQueueExec(ptr noundef %390, ptr noundef nonnull %349, i64 noundef %391) #13 - %.not31 = icmp eq i8 %392, 0 - br i1 %.not31, label %nfaRevAccelCheck.exit.thread, label %393 - -393: ; preds = %347 - %394 = load i32, ptr %35, align 64 - %395 = and i32 %394, 1 - %.not32 = icmp eq i32 %395, 0 - br i1 %.not32, label %nfaRevAccelCheck.exit.thread, label %396 - -396: ; preds = %393 - %397 = load i64, ptr %38, align 8 - %398 = icmp eq i64 %.0.i, %397 - br i1 %398, label %399, label %nfaRevAccelCheck.exit.thread - -399: ; preds = %396 - %400 = load ptr, ptr %358, align 8 - %401 = load ptr, ptr %364, align 8 - %402 = load i64, ptr %371, align 8 - %403 = load ptr, ptr %378, align 8 - %404 = tail call signext i8 @nfaCheckFinalState(ptr noundef nonnull %35, ptr noundef %400, ptr noundef %401, i64 noundef %402, ptr noundef %403, ptr noundef nonnull %1) #13 + br i1 %.not, label %nfaRevAccelCheck.exit.thread, label %339 + +339: ; preds = %nfaRevAccelCheck.exit + %340 = getelementptr inbounds nuw i8, ptr %1, i64 176 + %341 = load ptr, ptr %340, align 16 + store ptr %35, ptr %341, align 8 + %342 = getelementptr inbounds nuw i8, ptr %341, i64 12 + store i32 0, ptr %342, align 4 + %343 = getelementptr inbounds nuw i8, ptr %341, i64 8 + store i32 0, ptr %343, align 8 + %344 = getelementptr inbounds nuw i8, ptr %1, i64 168 + %345 = load ptr, ptr %344, align 8 + %346 = getelementptr inbounds nuw i8, ptr %32, i64 8 + %347 = load i32, ptr %346, align 4 + %348 = zext i32 %347 to i64 + %349 = getelementptr inbounds nuw i8, ptr %345, i64 %348 + %350 = getelementptr inbounds nuw i8, ptr %341, i64 16 + store ptr %349, ptr %350, align 8 + %351 = load ptr, ptr %3, align 8 + %352 = getelementptr inbounds nuw i8, ptr %32, i64 4 + %353 = load i32, ptr %352, align 4 + %354 = zext i32 %353 to i64 + %355 = getelementptr inbounds nuw i8, ptr %351, i64 %354 + %356 = getelementptr inbounds nuw i8, ptr %341, i64 24 + store ptr %355, ptr %356, align 8 + %357 = getelementptr inbounds nuw i8, ptr %1, i64 320 + %358 = load i64, ptr %357, align 8 + %359 = getelementptr inbounds nuw i8, ptr %341, i64 32 + store i64 %358, ptr %359, align 8 + %360 = load ptr, ptr %36, align 8 + %361 = getelementptr inbounds nuw i8, ptr %341, i64 40 + store ptr %360, ptr %361, align 8 + %362 = load i64, ptr %38, align 8 + %363 = getelementptr inbounds nuw i8, ptr %341, i64 48 + store i64 %362, ptr %363, align 8 + %364 = getelementptr inbounds nuw i8, ptr %1, i64 304 + %365 = load ptr, ptr %364, align 8 + %366 = getelementptr inbounds nuw i8, ptr %341, i64 56 + store ptr %365, ptr %366, align 8 + %367 = getelementptr inbounds nuw i8, ptr %1, i64 312 + %368 = load i64, ptr %367, align 8 + %369 = getelementptr inbounds nuw i8, ptr %341, i64 64 + store i64 %368, ptr %369, align 8 + %370 = getelementptr inbounds nuw i8, ptr %341, i64 88 + store ptr @roseReportAdaptor, ptr %370, align 8 + %371 = getelementptr inbounds nuw i8, ptr %341, i64 96 + store ptr %1, ptr %371, align 8 + %372 = getelementptr inbounds nuw i8, ptr %341, i64 80 + store i8 0, ptr %372, align 8 + store i64 %.0.i, ptr %363, align 8 + %373 = tail call signext i8 @nfaQueueInitState(ptr noundef %35, ptr noundef nonnull %341) #13 + %374 = getelementptr inbounds nuw i8, ptr %341, i64 104 + store i32 0, ptr %374, align 8, !alias.scope !8 + %375 = getelementptr inbounds nuw i8, ptr %341, i64 112 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %375, i8 0, i64 16, i1 false) + %376 = getelementptr inbounds nuw i8, ptr %341, i64 128 + store i32 2, ptr %376, align 8, !alias.scope !11 + %377 = getelementptr inbounds nuw i8, ptr %341, i64 136 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %377, i8 0, i64 16, i1 false) + store i32 2, ptr %342, align 4, !alias.scope !11 + %378 = load i64, ptr %38, align 8 + %379 = getelementptr inbounds nuw i8, ptr %341, i64 152 + store i32 1, ptr %379, align 8, !alias.scope !14 + %380 = getelementptr inbounds nuw i8, ptr %341, i64 160 + store i64 %378, ptr %380, align 8, !alias.scope !14 + %381 = getelementptr inbounds nuw i8, ptr %341, i64 168 + store i64 0, ptr %381, align 8, !alias.scope !14 + store i32 3, ptr %342, align 4, !alias.scope !14 + %382 = load ptr, ptr %341, align 8 + %383 = load i64, ptr %38, align 8 + %384 = tail call signext i8 @nfaQueueExec(ptr noundef %382, ptr noundef nonnull %341, i64 noundef %383) #13 + %.not31 = icmp eq i8 %384, 0 + br i1 %.not31, label %nfaRevAccelCheck.exit.thread, label %385 + +385: ; preds = %339 + %386 = load i32, ptr %35, align 64 + %387 = and i32 %386, 1 + %.not32 = icmp eq i32 %387, 0 + br i1 %.not32, label %nfaRevAccelCheck.exit.thread, label %388 + +388: ; preds = %385 + %389 = load i64, ptr %38, align 8 + %390 = icmp eq i64 %.0.i, %389 + br i1 %390, label %391, label %nfaRevAccelCheck.exit.thread + +391: ; preds = %388 + %392 = load ptr, ptr %350, align 8 + %393 = load ptr, ptr %356, align 8 + %394 = load i64, ptr %363, align 8 + %395 = load ptr, ptr %370, align 8 + %396 = tail call signext i8 @nfaCheckFinalState(ptr noundef nonnull %35, ptr noundef %392, ptr noundef %393, i64 noundef %394, ptr noundef %395, ptr noundef nonnull %1) #13 br label %nfaRevAccelCheck.exit.thread -nfaRevAccelCheck.exit.thread: ; preds = %345, %334, %324, %314, %305, %initSomState.exit, %347, %393, %396, %399, %nfaRevAccelCheck.exit +nfaRevAccelCheck.exit.thread: ; preds = %337, %326, %316, %306, %297, %initSomState.exit, %339, %385, %388, %391, %nfaRevAccelCheck.exit ret void } diff --git a/bench/libquic/optimized/s3_srvr.ll b/bench/libquic/optimized/s3_srvr.ll index ffdb0bba2f6..397bfd26094 100644 --- a/bench/libquic/optimized/s3_srvr.ll +++ b/bench/libquic/optimized/s3_srvr.ll @@ -3912,7 +3912,7 @@ define hidden i32 @ssl3_send_new_session_ticket(ptr noundef %0) local_unnamed_ad %10 = getelementptr inbounds nuw i8, ptr %0, i64 52 %11 = load i32, ptr %10, align 4, !tbaa !43 %12 = icmp eq i32 %11, 8688 - br i1 %12, label %13, label %194 + br i1 %12, label %13, label %195 13: ; preds = %1 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #10 @@ -3981,7 +3981,7 @@ define hidden i32 @ssl3_send_new_session_ticket(ptr noundef %0) local_unnamed_ad call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #10 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #10 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #10 - br label %203 + br label %204 56: ; preds = %19 %57 = getelementptr inbounds nuw i8, ptr %0, i64 56 @@ -4137,87 +4137,87 @@ define hidden i32 @ssl3_send_new_session_ticket(ptr noundef %0) local_unnamed_ad %155 = load i32, ptr %6, align 4, !tbaa !93 %156 = sext i32 %155 to i64 %157 = getelementptr inbounds i8, ptr %152, i64 %156 - %158 = add nuw nsw i64 %143, 16 - %159 = add nsw i64 %158, %151 - %gepdiff = add nsw i64 %159, %156 - %160 = call i32 @HMAC_Update(ptr noundef nonnull %5, ptr noundef nonnull %138, i64 noundef %gepdiff) #10 - %.not90 = icmp eq i32 %160, 0 - br i1 %.not90, label %.thread, label %161 - -161: ; preds = %154 - %162 = call i32 @HMAC_Final(ptr noundef nonnull %5, ptr noundef nonnull %157, ptr noundef nonnull %7) #10 - %.not91 = icmp eq i32 %162, 0 - br i1 %.not91, label %.thread, label %163 - -163: ; preds = %161 - %164 = load i32, ptr %7, align 4, !tbaa !93 - %165 = zext i32 %164 to i64 - %166 = getelementptr inbounds nuw i8, ptr %157, i64 %165 - %167 = load ptr, ptr %57, align 8, !tbaa !44 - %168 = getelementptr inbounds nuw i8, ptr %167, i64 8 - %169 = load ptr, ptr %168, align 8, !tbaa !90 - %170 = load ptr, ptr %59, align 8, !tbaa !64 - %171 = getelementptr inbounds nuw i8, ptr %170, i64 96 - %172 = load i32, ptr %171, align 8, !tbaa !132 - %173 = zext i32 %172 to i64 - %174 = getelementptr inbounds nuw i8, ptr %169, i64 %173 - %175 = ptrtoint ptr %166 to i64 - %176 = ptrtoint ptr %174 to i64 - %177 = sub i64 %175, %176 - %178 = trunc i64 %177 to i32 - store i32 %178, ptr %6, align 4, !tbaa !93 - %179 = getelementptr inbounds nuw i8, ptr %174, i64 4 - %180 = add i32 %178, 65530 - %181 = lshr i32 %180, 8 - %182 = trunc i32 %181 to i8 - store i8 %182, ptr %179, align 1, !tbaa !86 - %183 = load i32, ptr %6, align 4, !tbaa !93 - %184 = trunc i32 %183 to i8 - %185 = add i8 %184, -6 - %186 = getelementptr inbounds nuw i8, ptr %174, i64 5 - store i8 %185, ptr %186, align 1, !tbaa !86 - %187 = load ptr, ptr %59, align 8, !tbaa !64 - %188 = getelementptr inbounds nuw i8, ptr %187, i64 104 - %189 = load ptr, ptr %188, align 8, !tbaa !71 - %190 = load i32, ptr %6, align 4, !tbaa !93 - %191 = sext i32 %190 to i64 - %192 = call i32 %189(ptr noundef nonnull %0, i32 noundef 4, i64 noundef %191) #10 - %.not92 = icmp eq i32 %192, 0 - br i1 %.not92, label %.thread, label %193 - -.thread: ; preds = %13, %22, %56, %79, %88, %84, %82, %136, %149, %161, %154, %163 + %158 = ptrtoint ptr %157 to i64 + %159 = ptrtoint ptr %138 to i64 + %160 = sub i64 %158, %159 + %161 = call i32 @HMAC_Update(ptr noundef nonnull %5, ptr noundef nonnull %138, i64 noundef %160) #10 + %.not90 = icmp eq i32 %161, 0 + br i1 %.not90, label %.thread, label %162 + +162: ; preds = %154 + %163 = call i32 @HMAC_Final(ptr noundef nonnull %5, ptr noundef nonnull %157, ptr noundef nonnull %7) #10 + %.not91 = icmp eq i32 %163, 0 + br i1 %.not91, label %.thread, label %164 + +164: ; preds = %162 + %165 = load i32, ptr %7, align 4, !tbaa !93 + %166 = zext i32 %165 to i64 + %167 = getelementptr inbounds nuw i8, ptr %157, i64 %166 + %168 = load ptr, ptr %57, align 8, !tbaa !44 + %169 = getelementptr inbounds nuw i8, ptr %168, i64 8 + %170 = load ptr, ptr %169, align 8, !tbaa !90 + %171 = load ptr, ptr %59, align 8, !tbaa !64 + %172 = getelementptr inbounds nuw i8, ptr %171, i64 96 + %173 = load i32, ptr %172, align 8, !tbaa !132 + %174 = zext i32 %173 to i64 + %175 = getelementptr inbounds nuw i8, ptr %170, i64 %174 + %176 = ptrtoint ptr %167 to i64 + %177 = ptrtoint ptr %175 to i64 + %178 = sub i64 %176, %177 + %179 = trunc i64 %178 to i32 + store i32 %179, ptr %6, align 4, !tbaa !93 + %180 = getelementptr inbounds nuw i8, ptr %175, i64 4 + %181 = add i32 %179, 65530 + %182 = lshr i32 %181, 8 + %183 = trunc i32 %182 to i8 + store i8 %183, ptr %180, align 1, !tbaa !86 + %184 = load i32, ptr %6, align 4, !tbaa !93 + %185 = trunc i32 %184 to i8 + %186 = add i8 %185, -6 + %187 = getelementptr inbounds nuw i8, ptr %175, i64 5 + store i8 %186, ptr %187, align 1, !tbaa !86 + %188 = load ptr, ptr %59, align 8, !tbaa !64 + %189 = getelementptr inbounds nuw i8, ptr %188, i64 104 + %190 = load ptr, ptr %189, align 8, !tbaa !71 + %191 = load i32, ptr %6, align 4, !tbaa !93 + %192 = sext i32 %191 to i64 + %193 = call i32 %190(ptr noundef nonnull %0, i32 noundef 4, i64 noundef %192) #10 + %.not92 = icmp eq i32 %193, 0 + br i1 %.not92, label %.thread, label %194 + +.thread: ; preds = %13, %22, %56, %79, %88, %84, %82, %136, %149, %162, %154, %164 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #10 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #10 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #10 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #10 - br label %200 + br label %201 -193: ; preds = %163 +194: ; preds = %164 store i32 8689, ptr %10, align 4, !tbaa !43 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #10 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #10 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #10 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #10 - br label %194 - -194: ; preds = %193, %1 - %195 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %196 = load ptr, ptr %195, align 8, !tbaa !64 - %197 = getelementptr inbounds nuw i8, ptr %196, i64 112 - %198 = load ptr, ptr %197, align 8, !tbaa !65 - %199 = call i32 %198(ptr noundef nonnull %0) #10 - br label %200 - -200: ; preds = %.thread, %194 - %.076 = phi i32 [ %199, %194 ], [ -1, %.thread ] - %201 = load ptr, ptr %2, align 8, !tbaa !143 - call void @free(ptr noundef %201) #10 - %202 = call i32 @EVP_CIPHER_CTX_cleanup(ptr noundef nonnull %4) #10 + br label %195 + +195: ; preds = %194, %1 + %196 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %197 = load ptr, ptr %196, align 8, !tbaa !64 + %198 = getelementptr inbounds nuw i8, ptr %197, i64 112 + %199 = load ptr, ptr %198, align 8, !tbaa !65 + %200 = call i32 %199(ptr noundef nonnull %0) #10 + br label %201 + +201: ; preds = %.thread, %195 + %.076 = phi i32 [ %200, %195 ], [ -1, %.thread ] + %202 = load ptr, ptr %2, align 8, !tbaa !143 + call void @free(ptr noundef %202) #10 + %203 = call i32 @EVP_CIPHER_CTX_cleanup(ptr noundef nonnull %4) #10 call void @HMAC_CTX_cleanup(ptr noundef nonnull %5) #10 - br label %203 + br label %204 -203: ; preds = %.thread96, %200 - %.2 = phi i32 [ %.076, %200 ], [ %55, %.thread96 ] +204: ; preds = %.thread96, %201 + %.2 = phi i32 [ %.076, %201 ], [ %55, %.thread96 ] call void @llvm.lifetime.end.p0(i64 104, ptr nonnull %5) #10 call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %4) #10 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #10 diff --git a/bench/lief/optimized/ecjpake.ll b/bench/lief/optimized/ecjpake.ll index 1d4d89c77a9..3c8da27f8cb 100644 --- a/bench/lief/optimized/ecjpake.ll +++ b/bench/lief/optimized/ecjpake.ll @@ -1338,7 +1338,7 @@ define internal fastcc i32 @ecjpake_hash(i32 noundef %0, ptr noundef %1, i32 nou ecjpake_write_len_point.exit: ; preds = %8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #15 - br label %74 + br label %78 18: ; preds = %8 %19 = load i64, ptr %11, align 8, !tbaa !22 @@ -1352,8 +1352,8 @@ ecjpake_write_len_point.exit: ; preds = %8 %24 = icmp ult ptr %14, %23 %notsub = add i64 %19, -418 %25 = icmp sgt i64 %notsub, -6 - %or.cond76 = or i1 %25, %24 - br i1 %or.cond76, label %ecjpake_write_len_point.exit44.thread, label %26 + %or.cond70 = or i1 %25, %24 + br i1 %or.cond70, label %ecjpake_write_len_point.exit44.thread, label %26 26: ; preds = %18 %27 = getelementptr i8, ptr %22, i64 8 @@ -1365,7 +1365,7 @@ ecjpake_write_len_point.exit: ; preds = %8 ecjpake_write_len_point.exit44.thread: ; preds = %18, %26 %.0.i43.ph = phi i32 [ %28, %26 ], [ -20224, %18 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #15 - br label %74 + br label %78 29: ; preds = %26 %30 = load i64, ptr %10, align 8, !tbaa !22 @@ -1380,76 +1380,76 @@ ecjpake_write_len_point.exit44.thread: ; preds = %18, %26 br i1 %35, label %ecjpake_write_len_point.exit47.thread, label %36 36: ; preds = %29 - %37 = add nsw i64 %19, -414 - %notsub71 = add i64 %37, %30 - %38 = icmp sgt i64 %notsub71, -6 - br i1 %38, label %ecjpake_write_len_point.exit47.thread, label %39 - -39: ; preds = %36 - %40 = getelementptr i8, ptr %33, i64 8 - %41 = add i64 %19, %30 - %gepdiff72 = sub i64 409, %41 - %42 = call i32 @mbedtls_ecp_point_write_binary(ptr noundef %1, ptr noundef %5, i32 noundef %2, ptr noundef nonnull %9, ptr noundef nonnull %40, i64 noundef %gepdiff72) #15 - %.not.i45 = icmp eq i32 %42, 0 - br i1 %.not.i45, label %43, label %ecjpake_write_len_point.exit47.thread - -ecjpake_write_len_point.exit47.thread: ; preds = %36, %29, %39 - %.0.i46.ph = phi i32 [ %42, %39 ], [ -20224, %29 ], [ -20224, %36 ] + %37 = ptrtoint ptr %14 to i64 + %38 = ptrtoint ptr %34 to i64 + %39 = sub i64 %37, %38 + %40 = icmp slt i64 %39, 5 + br i1 %40, label %ecjpake_write_len_point.exit47.thread, label %41 + +41: ; preds = %36 + %42 = getelementptr i8, ptr %33, i64 8 + %43 = ptrtoint ptr %42 to i64 + %44 = sub i64 %37, %43 + %45 = call i32 @mbedtls_ecp_point_write_binary(ptr noundef %1, ptr noundef %5, i32 noundef %2, ptr noundef nonnull %9, ptr noundef nonnull %42, i64 noundef %44) #15 + %.not.i45 = icmp eq i32 %45, 0 + br i1 %.not.i45, label %46, label %ecjpake_write_len_point.exit47.thread + +ecjpake_write_len_point.exit47.thread: ; preds = %36, %29, %41 + %.0.i46.ph = phi i32 [ %45, %41 ], [ -20224, %29 ], [ -20224, %36 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #15 - br label %74 - -43: ; preds = %39 - %44 = load i64, ptr %9, align 8, !tbaa !22 - %45 = trunc i64 %44 to i32 - %46 = call i32 @llvm.bswap.i32(i32 %45) - store i32 %46, ptr %34, align 1 + br label %78 + +46: ; preds = %41 + %47 = load i64, ptr %9, align 8, !tbaa !22 + %48 = trunc i64 %47 to i32 + %49 = call i32 @llvm.bswap.i32(i32 %48) + store i32 %49, ptr %34, align 1 + %50 = getelementptr i8, ptr %34, i64 %47 + %51 = getelementptr i8, ptr %50, i64 4 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #15 - %47 = add nsw i64 %19, -410 - %48 = add i64 %47, %30 - %notsub74 = add i64 %48, %44 - %49 = icmp sgt i64 %notsub74, -5 - br i1 %49, label %74, label %50 - -50: ; preds = %43 - %51 = getelementptr i8, ptr %34, i64 %44 - %52 = getelementptr i8, ptr %51, i64 4 - %53 = trunc i64 %15 to i32 - %54 = call i32 @llvm.bswap.i32(i32 %53) - store i32 %54, ptr %52, align 1 - %55 = getelementptr i8, ptr %51, i64 8 - %56 = icmp ult ptr %14, %55 - %57 = add i64 %41, %44 - %gepdiff75 = sub i64 405, %57 - %58 = icmp ult i64 %gepdiff75, %15 - %or.cond = select i1 %56, i1 true, i1 %58 - br i1 %or.cond, label %74, label %59 - -59: ; preds = %50 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %55, ptr nonnull align 1 %6, i64 %15, i1 false) - %60 = add i64 %15, 16 - %61 = add i64 %60, %19 - %62 = add i64 %61, %30 - %63 = add i64 %62, %44 - %64 = call ptr @mbedtls_md_info_from_type(i32 noundef %0) #15 - %65 = call i32 @mbedtls_md(ptr noundef %64, ptr noundef nonnull %12, i64 noundef %63, ptr noundef nonnull %13) #15 - %.not38 = icmp eq i32 %65, 0 - br i1 %.not38, label %66, label %74 - -66: ; preds = %59 - %67 = call ptr @mbedtls_md_info_from_type(i32 noundef %0) #15 - %68 = call zeroext i8 @mbedtls_md_get_size(ptr noundef %67) #15 - %69 = zext i8 %68 to i64 - %70 = call i32 @mbedtls_mpi_read_binary(ptr noundef nonnull %7, ptr noundef nonnull %13, i64 noundef %69) #15 - %.not39 = icmp eq i32 %70, 0 - br i1 %.not39, label %71, label %74 - -71: ; preds = %66 - %72 = getelementptr inbounds nuw i8, ptr %1, i64 104 - %73 = call i32 @mbedtls_mpi_mod_mpi(ptr noundef nonnull %7, ptr noundef nonnull %7, ptr noundef nonnull %72) #15 - br label %74 - -74: ; preds = %ecjpake_write_len_point.exit47.thread, %ecjpake_write_len_point.exit44.thread, %ecjpake_write_len_point.exit, %59, %66, %71, %50, %43 - %.0 = phi i32 [ -20224, %43 ], [ -20224, %50 ], [ %17, %ecjpake_write_len_point.exit ], [ %65, %59 ], [ %70, %66 ], [ %73, %71 ], [ %.0.i43.ph, %ecjpake_write_len_point.exit44.thread ], [ %.0.i46.ph, %ecjpake_write_len_point.exit47.thread ] + %52 = ptrtoint ptr %51 to i64 + %53 = sub i64 %37, %52 + %54 = icmp slt i64 %53, 4 + br i1 %54, label %78, label %55 + +55: ; preds = %46 + %56 = trunc i64 %15 to i32 + %57 = call i32 @llvm.bswap.i32(i32 %56) + store i32 %57, ptr %51, align 1 + %58 = getelementptr i8, ptr %50, i64 8 + %59 = icmp ult ptr %14, %58 + %60 = ptrtoint ptr %58 to i64 + %61 = sub i64 %37, %60 + %62 = icmp ult i64 %61, %15 + %or.cond = select i1 %59, i1 true, i1 %62 + br i1 %or.cond, label %78, label %63 + +63: ; preds = %55 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %58, ptr nonnull align 1 %6, i64 %15, i1 false) + %64 = getelementptr inbounds nuw i8, ptr %58, i64 %15 + %65 = ptrtoint ptr %64 to i64 + %66 = ptrtoint ptr %12 to i64 + %67 = sub i64 %65, %66 + %68 = call ptr @mbedtls_md_info_from_type(i32 noundef %0) #15 + %69 = call i32 @mbedtls_md(ptr noundef %68, ptr noundef nonnull %12, i64 noundef %67, ptr noundef nonnull %13) #15 + %.not38 = icmp eq i32 %69, 0 + br i1 %.not38, label %70, label %78 + +70: ; preds = %63 + %71 = call ptr @mbedtls_md_info_from_type(i32 noundef %0) #15 + %72 = call zeroext i8 @mbedtls_md_get_size(ptr noundef %71) #15 + %73 = zext i8 %72 to i64 + %74 = call i32 @mbedtls_mpi_read_binary(ptr noundef nonnull %7, ptr noundef nonnull %13, i64 noundef %73) #15 + %.not39 = icmp eq i32 %74, 0 + br i1 %.not39, label %75, label %78 + +75: ; preds = %70 + %76 = getelementptr inbounds nuw i8, ptr %1, i64 104 + %77 = call i32 @mbedtls_mpi_mod_mpi(ptr noundef nonnull %7, ptr noundef nonnull %7, ptr noundef nonnull %76) #15 + br label %78 + +78: ; preds = %ecjpake_write_len_point.exit47.thread, %ecjpake_write_len_point.exit44.thread, %ecjpake_write_len_point.exit, %63, %70, %75, %55, %46 + %.0 = phi i32 [ -20224, %46 ], [ -20224, %55 ], [ %17, %ecjpake_write_len_point.exit ], [ %69, %63 ], [ %74, %70 ], [ %77, %75 ], [ %.0.i43.ph, %ecjpake_write_len_point.exit44.thread ], [ %.0.i46.ph, %ecjpake_write_len_point.exit47.thread ] call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %13) #15 call void @llvm.lifetime.end.p0(i64 421, ptr nonnull %12) #15 ret i32 %.0 diff --git a/bench/lief/optimized/rsa.ll b/bench/lief/optimized/rsa.ll index 4c6373d93de..67a3b2c676e 100644 --- a/bench/lief/optimized/rsa.ll +++ b/bench/lief/optimized/rsa.ll @@ -2614,11 +2614,10 @@ define hidden i32 @mbedtls_rsa_rsaes_oaep_decrypt(ptr noundef %0, ptr noundef %1 br i1 %.not76, label %83, label %90 83: ; preds = %._crit_edge - %reass.add = shl nuw nsw i64 %34, 1 - %84 = or disjoint i64 %reass.add, 1 - %85 = add nuw nsw i64 %84, %.062.lcssa - %.neg = xor i64 %85, -1 - %86 = add i64 %16, %.neg + %84 = ptrtoint ptr %74 to i64 + %85 = ptrtoint ptr %10 to i64 + %.neg = sub i64 %85, %84 + %86 = add i64 %.neg, %16 %87 = icmp ugt i64 %86, %8 br i1 %87, label %90, label %88 diff --git a/bench/lief/optimized/ssl_tls.ll b/bench/lief/optimized/ssl_tls.ll index 8f4b116d5a0..6d232d4d513 100644 --- a/bench/lief/optimized/ssl_tls.ll +++ b/bench/lief/optimized/ssl_tls.ll @@ -5155,323 +5155,319 @@ define hidden i32 @mbedtls_ssl_context_load(ptr noundef %0, ptr noundef %1, i64 %5 = getelementptr inbounds nuw i8, ptr %0, i64 8 %6 = load i32, ptr %5, align 8, !tbaa !34 %.not.i = icmp eq i32 %6, 0 - br i1 %.not.i, label %7, label %169 + br i1 %.not.i, label %7, label %174 7: ; preds = %3 %8 = getelementptr inbounds nuw i8, ptr %0, i64 96 %9 = load ptr, ptr %8, align 8, !tbaa !125 %.not151.i = icmp eq ptr %9, null - br i1 %.not151.i, label %10, label %169 + br i1 %.not151.i, label %10, label %174 10: ; preds = %7 %11 = load ptr, ptr %0, align 8, !tbaa !23 %12 = getelementptr inbounds nuw i8, ptr %11, i64 16 %13 = load i8, ptr %12, align 8, !tbaa !199 %.not152.i = icmp eq i8 %13, 0 - br i1 %.not152.i, label %14, label %169 + br i1 %.not152.i, label %14, label %174 14: ; preds = %10 %15 = getelementptr inbounds nuw i8, ptr %11, i64 9 %16 = load i8, ptr %15, align 1, !tbaa !29 %.not153.i = icmp eq i8 %16, 1 - br i1 %.not153.i, label %17, label %169 + br i1 %.not153.i, label %17, label %174 17: ; preds = %14 %18 = load i32, ptr %11, align 8, !tbaa !82 %19 = icmp ult i32 %18, 771 - br i1 %19, label %169, label %20 + br i1 %19, label %174, label %20 20: ; preds = %17 %21 = getelementptr inbounds nuw i8, ptr %11, i64 4 %22 = load i32, ptr %21, align 4, !tbaa !81 %23 = icmp ugt i32 %22, 771 - br i1 %23, label %169, label %24 + br i1 %23, label %174, label %24 24: ; preds = %20 tail call void @mbedtls_debug_print_buf(ptr noundef nonnull %0, i32 noundef 4, ptr noundef nonnull @.str, i32 noundef 5272, ptr noundef nonnull @.str.157, ptr noundef %1, i64 noundef %2) #26 - %25 = icmp ult i64 %2, 8 - br i1 %25, label %169, label %26 + %25 = ptrtoint ptr %4 to i64 + %26 = icmp ult i64 %2, 8 + br i1 %26, label %174, label %27 -26: ; preds = %24 +27: ; preds = %24 %bcmp.i = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(8) %1, ptr noundef nonnull dereferenceable(8) @ssl_serialized_context_header, i64 8) %.not154.i = icmp eq i32 %bcmp.i, 0 - br i1 %.not154.i, label %27, label %169 - -27: ; preds = %26 - %28 = and i64 %2, -4 - %29 = icmp eq i64 %28, 8 - br i1 %29, label %169, label %30 - -30: ; preds = %27 - %31 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %.0.copyload.i176.i = load i32, ptr %31, align 1 - %32 = tail call i32 @llvm.bswap.i32(i32 %.0.copyload.i176.i) - %33 = zext i32 %32 to i64 - %34 = getelementptr inbounds nuw i8, ptr %1, i64 12 - %35 = getelementptr inbounds nuw i8, ptr %0, i64 104 - %36 = load ptr, ptr %35, align 8, !tbaa !88 - store ptr %36, ptr %8, align 8, !tbaa !125 - %37 = getelementptr inbounds nuw i8, ptr %0, i64 80 - store ptr %36, ptr %37, align 8, !tbaa !240 - %38 = getelementptr inbounds nuw i8, ptr %0, i64 88 - store ptr %36, ptr %38, align 8, !tbaa !208 - store ptr null, ptr %35, align 8, !tbaa !88 + br i1 %.not154.i, label %28, label %174 + +28: ; preds = %27 + %29 = and i64 %2, -4 + %30 = icmp eq i64 %29, 8 + br i1 %30, label %174, label %31 + +31: ; preds = %28 + %32 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %.0.copyload.i169.i = load i32, ptr %32, align 1 + %33 = tail call i32 @llvm.bswap.i32(i32 %.0.copyload.i169.i) + %34 = zext i32 %33 to i64 + %35 = getelementptr inbounds nuw i8, ptr %1, i64 12 + %36 = getelementptr inbounds nuw i8, ptr %0, i64 104 + %37 = load ptr, ptr %36, align 8, !tbaa !88 + store ptr %37, ptr %8, align 8, !tbaa !125 + %38 = getelementptr inbounds nuw i8, ptr %0, i64 80 + store ptr %37, ptr %38, align 8, !tbaa !240 + %39 = getelementptr inbounds nuw i8, ptr %0, i64 88 + store ptr %37, ptr %39, align 8, !tbaa !208 + store ptr null, ptr %36, align 8, !tbaa !88 %gepdiff.i = add i64 %2, -12 - %39 = icmp ult i64 %gepdiff.i, %33 - br i1 %39, label %169, label %40 + %40 = icmp ult i64 %gepdiff.i, %34 + br i1 %40, label %174, label %41 -40: ; preds = %30 - %41 = tail call fastcc i32 @ssl_session_load(ptr noundef %36, i8 noundef zeroext 1, ptr noundef nonnull %34, i64 noundef %33) - %.not155.i = icmp eq i32 %41, 0 - br i1 %.not155.i, label %44, label %42 +41: ; preds = %31 + %42 = tail call fastcc i32 @ssl_session_load(ptr noundef %37, i8 noundef zeroext 1, ptr noundef nonnull %35, i64 noundef %34) + %.not155.i = icmp eq i32 %42, 0 + br i1 %.not155.i, label %45, label %43 -42: ; preds = %40 - %43 = load ptr, ptr %8, align 8, !tbaa !125 - tail call void @mbedtls_ssl_session_free(ptr noundef %43) - br label %169 +43: ; preds = %41 + %44 = load ptr, ptr %8, align 8, !tbaa !125 + tail call void @mbedtls_ssl_session_free(ptr noundef %44) + br label %174 -44: ; preds = %40 - %45 = getelementptr inbounds nuw i8, ptr %34, i64 %33 - %46 = getelementptr inbounds nuw i8, ptr %0, i64 144 - %47 = load ptr, ptr %46, align 8, !tbaa !87 - %48 = getelementptr inbounds nuw i8, ptr %0, i64 136 - store ptr %47, ptr %48, align 8, !tbaa !119 - %49 = getelementptr inbounds nuw i8, ptr %0, i64 120 - store ptr %47, ptr %49, align 8, !tbaa !35 - %50 = getelementptr inbounds nuw i8, ptr %0, i64 128 - store ptr %47, ptr %50, align 8, !tbaa !92 - store ptr null, ptr %46, align 8, !tbaa !87 - %51 = load ptr, ptr %8, align 8, !tbaa !125 - %52 = getelementptr inbounds nuw i8, ptr %51, i64 16 - %53 = load i32, ptr %52, align 8, !tbaa !153 - %54 = tail call ptr @mbedtls_ssl_ciphersuite_from_id(i32 noundef %53) #26 - %.not.i.i = icmp eq ptr %54, null - br i1 %.not.i.i, label %169, label %55 - -55: ; preds = %44 - %56 = getelementptr inbounds nuw i8, ptr %54, i64 17 - %57 = load i8, ptr %56, align 1, !tbaa !68 - switch i8 %57, label %169 [ - i8 10, label %ssl_tls12prf_from_cs.exit.thread179.i - i8 9, label %ssl_tls12prf_from_cs.exit.thread179.fold.split.i +45: ; preds = %41 + %46 = getelementptr inbounds nuw i8, ptr %35, i64 %34 + %47 = getelementptr inbounds nuw i8, ptr %0, i64 144 + %48 = load ptr, ptr %47, align 8, !tbaa !87 + %49 = getelementptr inbounds nuw i8, ptr %0, i64 136 + store ptr %48, ptr %49, align 8, !tbaa !119 + %50 = getelementptr inbounds nuw i8, ptr %0, i64 120 + store ptr %48, ptr %50, align 8, !tbaa !35 + %51 = getelementptr inbounds nuw i8, ptr %0, i64 128 + store ptr %48, ptr %51, align 8, !tbaa !92 + store ptr null, ptr %47, align 8, !tbaa !87 + %52 = load ptr, ptr %8, align 8, !tbaa !125 + %53 = getelementptr inbounds nuw i8, ptr %52, i64 16 + %54 = load i32, ptr %53, align 8, !tbaa !153 + %55 = tail call ptr @mbedtls_ssl_ciphersuite_from_id(i32 noundef %54) #26 + %.not.i.i = icmp eq ptr %55, null + br i1 %.not.i.i, label %174, label %56 + +56: ; preds = %45 + %57 = getelementptr inbounds nuw i8, ptr %55, i64 17 + %58 = load i8, ptr %57, align 1, !tbaa !68 + switch i8 %58, label %174 [ + i8 10, label %ssl_tls12prf_from_cs.exit.thread172.i + i8 9, label %ssl_tls12prf_from_cs.exit.thread172.fold.split.i ] -ssl_tls12prf_from_cs.exit.thread179.fold.split.i: ; preds = %55 - br label %ssl_tls12prf_from_cs.exit.thread179.i - -ssl_tls12prf_from_cs.exit.thread179.i: ; preds = %ssl_tls12prf_from_cs.exit.thread179.fold.split.i, %55 - %.0.i181.i = phi ptr [ @tls_prf_sha384, %55 ], [ @tls_prf_sha256, %ssl_tls12prf_from_cs.exit.thread179.fold.split.i ] - %gepdiff156.i = sub i64 %gepdiff.i, %33 - %58 = icmp ult i64 %gepdiff156.i, 64 - br i1 %58, label %169, label %59 - -59: ; preds = %ssl_tls12prf_from_cs.exit.thread179.i - %60 = load ptr, ptr %48, align 8, !tbaa !119 - %61 = load ptr, ptr %8, align 8, !tbaa !125 - %62 = getelementptr inbounds nuw i8, ptr %61, i64 16 - %63 = load i32, ptr %62, align 8, !tbaa !153 - %64 = getelementptr inbounds nuw i8, ptr %61, i64 64 - %65 = getelementptr inbounds nuw i8, ptr %61, i64 232 - %66 = load i32, ptr %65, align 8, !tbaa !217 - %67 = load ptr, ptr %0, align 8, !tbaa !23 - %68 = getelementptr inbounds nuw i8, ptr %67, i64 8 - %69 = load i8, ptr %68, align 8, !tbaa !94 - %70 = zext i8 %69 to i32 - %71 = tail call fastcc i32 @ssl_tls12_populate_transform(ptr noundef %60, i32 noundef %63, ptr noundef nonnull %64, i32 noundef %66, ptr noundef nonnull %.0.i181.i, ptr noundef nonnull %45, i32 noundef 771, i32 noundef %70, ptr noundef nonnull %0) - %.not157.i = icmp eq i32 %71, 0 - br i1 %.not157.i, label %72, label %169 - -72: ; preds = %59 - %73 = add nuw nsw i64 %33, 76 - %74 = icmp eq i64 %2, %73 - br i1 %74, label %169, label %75 - -75: ; preds = %72 - %76 = getelementptr inbounds nuw i8, ptr %45, i64 64 - %77 = load i8, ptr %76, align 1, !tbaa !80 - %78 = load ptr, ptr %48, align 8, !tbaa !119 - %79 = getelementptr inbounds nuw i8, ptr %78, i64 320 - store i8 %77, ptr %79, align 8, !tbaa !36 - %.neg9 = add i64 %2, -77 - %gepdiff159.i = sub i64 %.neg9, %33 - %80 = zext i8 %77 to i64 - %.not160.i = icmp ugt i64 %gepdiff159.i, %80 - br i1 %.not160.i, label %81, label %169 - -81: ; preds = %75 - %82 = getelementptr inbounds nuw i8, ptr %45, i64 65 - %83 = getelementptr inbounds nuw i8, ptr %78, i64 322 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 2 %83, ptr nonnull align 1 %82, i64 %80, i1 false) - %84 = load ptr, ptr %48, align 8, !tbaa !119 - %85 = getelementptr inbounds nuw i8, ptr %84, i64 320 - %86 = load i8, ptr %85, align 8, !tbaa !36 - %87 = zext i8 %86 to i64 - %88 = getelementptr inbounds nuw i8, ptr %82, i64 %87 - %89 = load i8, ptr %88, align 1, !tbaa !80 - %90 = getelementptr inbounds nuw i8, ptr %84, i64 321 - store i8 %89, ptr %90, align 1, !tbaa !43 - %.neg11 = add i64 %2, -78 - %91 = add nuw nsw i64 %33, %87 - %gepdiff161.i = sub i64 %.neg11, %91 - %92 = zext i8 %89 to i64 - %93 = icmp ult i64 %gepdiff161.i, %92 - br i1 %93, label %169, label %94 - -94: ; preds = %81 - %95 = getelementptr inbounds nuw i8, ptr %88, i64 1 - %96 = getelementptr inbounds nuw i8, ptr %84, i64 354 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 2 %96, ptr nonnull align 1 %95, i64 %92, i1 false) - %97 = load ptr, ptr %48, align 8, !tbaa !119 - %98 = getelementptr inbounds nuw i8, ptr %97, i64 321 - %99 = load i8, ptr %98, align 1, !tbaa !43 - %100 = zext i8 %99 to i64 - %101 = add nuw nsw i64 %33, 78 - %102 = add nuw nsw i64 %101, %87 - %103 = add nuw nsw i64 %102, %100 - %gepdiff162.i = sub nsw i64 %2, %103 - %104 = icmp ult i64 %gepdiff162.i, 4 - br i1 %104, label %169, label %105 - -105: ; preds = %94 - %106 = getelementptr inbounds nuw i8, ptr %95, i64 %100 - %.0.copyload.i177.i = load i32, ptr %106, align 1 - %107 = tail call i32 @llvm.bswap.i32(i32 %.0.copyload.i177.i) - %108 = getelementptr inbounds nuw i8, ptr %0, i64 24 - store i32 %107, ptr %108, align 8, !tbaa !237 - %.neg188.i = add i64 %2, -4 - %gepdiff163.i = sub i64 %.neg188.i, %103 - %109 = icmp ult i64 %gepdiff163.i, 16 - br i1 %109, label %169, label %110 - -110: ; preds = %105 - %111 = getelementptr inbounds nuw i8, ptr %106, i64 4 - %.0.copyload.i174.i = load i64, ptr %111, align 1 - %112 = tail call i64 @llvm.bswap.i64(i64 %.0.copyload.i174.i) - %113 = getelementptr inbounds nuw i8, ptr %0, i64 288 - store i64 %112, ptr %113, align 8, !tbaa !238 - %114 = getelementptr inbounds nuw i8, ptr %106, i64 12 - %.0.copyload.i175.i = load i64, ptr %114, align 1 - %115 = tail call i64 @llvm.bswap.i64(i64 %.0.copyload.i175.i) - %116 = getelementptr inbounds nuw i8, ptr %0, i64 296 - store i64 %115, ptr %116, align 8, !tbaa !239 - %117 = add nuw nsw i64 %103, 20 - %118 = icmp eq i64 %2, %117 - br i1 %118, label %169, label %119 - -119: ; preds = %110 - %120 = getelementptr inbounds nuw i8, ptr %106, i64 20 - %121 = load i8, ptr %120, align 1, !tbaa !80 - %122 = getelementptr inbounds nuw i8, ptr %0, i64 328 - store i8 %121, ptr %122, align 8, !tbaa !130 - %.neg189.i = add i64 %2, -21 - %gepdiff165.i = sub i64 %.neg189.i, %103 - %123 = icmp ult i64 %gepdiff165.i, 8 - br i1 %123, label %169, label %124 - -124: ; preds = %119 - %125 = getelementptr inbounds nuw i8, ptr %106, i64 21 - %126 = getelementptr inbounds nuw i8, ptr %0, i64 416 - %127 = load i64, ptr %125, align 1 - store i64 %127, ptr %126, align 8 - %.neg190.i = add i64 %2, -29 - %gepdiff166.i = sub i64 %.neg190.i, %103 - %128 = icmp ult i64 %gepdiff166.i, 2 - br i1 %128, label %169, label %129 - -129: ; preds = %124 - %130 = getelementptr inbounds nuw i8, ptr %106, i64 29 - %.0.copyload.i.i = load i16, ptr %130, align 1 - %131 = tail call i16 @llvm.bswap.i16(i16 %.0.copyload.i.i) - %132 = getelementptr inbounds nuw i8, ptr %0, i64 424 - store i16 %131, ptr %132, align 8, !tbaa !143 - %133 = add nuw nsw i64 %103, 31 - %134 = icmp eq i64 %2, %133 - br i1 %134, label %169, label %135 - -135: ; preds = %129 - %136 = getelementptr inbounds nuw i8, ptr %106, i64 31 - %137 = getelementptr inbounds nuw i8, ptr %106, i64 32 - %138 = load i8, ptr %136, align 1, !tbaa !80 - %.not168.i = icmp eq i8 %138, 0 - br i1 %.not168.i, label %159, label %139 - -139: ; preds = %135 - %140 = load ptr, ptr %0, align 8, !tbaa !23 - %141 = getelementptr inbounds nuw i8, ptr %140, i64 328 - %142 = load ptr, ptr %141, align 8, !tbaa !193 - %.not169.i = icmp eq ptr %142, null - br i1 %.not169.i, label %.loopexit.i, label %.preheader.i - -.preheader.i: ; preds = %139 - %143 = load ptr, ptr %142, align 8, !tbaa !64 - %.not170192.i = icmp eq ptr %143, null - br i1 %.not170192.i, label %.loopexit.i, label %.lr.ph.i +ssl_tls12prf_from_cs.exit.thread172.fold.split.i: ; preds = %56 + br label %ssl_tls12prf_from_cs.exit.thread172.i + +ssl_tls12prf_from_cs.exit.thread172.i: ; preds = %ssl_tls12prf_from_cs.exit.thread172.fold.split.i, %56 + %.0.i174.i = phi ptr [ @tls_prf_sha384, %56 ], [ @tls_prf_sha256, %ssl_tls12prf_from_cs.exit.thread172.fold.split.i ] + %gepdiff156.i = sub i64 %gepdiff.i, %34 + %59 = icmp ult i64 %gepdiff156.i, 64 + br i1 %59, label %174, label %60 + +60: ; preds = %ssl_tls12prf_from_cs.exit.thread172.i + %61 = load ptr, ptr %49, align 8, !tbaa !119 + %62 = load ptr, ptr %8, align 8, !tbaa !125 + %63 = getelementptr inbounds nuw i8, ptr %62, i64 16 + %64 = load i32, ptr %63, align 8, !tbaa !153 + %65 = getelementptr inbounds nuw i8, ptr %62, i64 64 + %66 = getelementptr inbounds nuw i8, ptr %62, i64 232 + %67 = load i32, ptr %66, align 8, !tbaa !217 + %68 = load ptr, ptr %0, align 8, !tbaa !23 + %69 = getelementptr inbounds nuw i8, ptr %68, i64 8 + %70 = load i8, ptr %69, align 8, !tbaa !94 + %71 = zext i8 %70 to i32 + %72 = tail call fastcc i32 @ssl_tls12_populate_transform(ptr noundef %61, i32 noundef %64, ptr noundef nonnull %65, i32 noundef %67, ptr noundef nonnull %.0.i174.i, ptr noundef nonnull %46, i32 noundef 771, i32 noundef %71, ptr noundef nonnull %0) + %.not157.i = icmp eq i32 %72, 0 + br i1 %.not157.i, label %73, label %174 + +73: ; preds = %60 + %74 = add nuw nsw i64 %34, 76 + %75 = icmp eq i64 %2, %74 + br i1 %75, label %174, label %76 + +76: ; preds = %73 + %77 = getelementptr inbounds nuw i8, ptr %46, i64 64 + %78 = load i8, ptr %77, align 1, !tbaa !80 + %79 = load ptr, ptr %49, align 8, !tbaa !119 + %80 = getelementptr inbounds nuw i8, ptr %79, i64 320 + store i8 %78, ptr %80, align 8, !tbaa !36 + %.neg178.i = add i64 %2, -77 + %gepdiff159.i = sub i64 %.neg178.i, %34 + %81 = zext i8 %78 to i64 + %.not160.i = icmp ugt i64 %gepdiff159.i, %81 + br i1 %.not160.i, label %82, label %174 + +82: ; preds = %76 + %83 = getelementptr inbounds nuw i8, ptr %46, i64 65 + %84 = getelementptr inbounds nuw i8, ptr %79, i64 322 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 2 %84, ptr nonnull align 1 %83, i64 %81, i1 false) + %85 = load ptr, ptr %49, align 8, !tbaa !119 + %86 = getelementptr inbounds nuw i8, ptr %85, i64 320 + %87 = load i8, ptr %86, align 8, !tbaa !36 + %88 = zext i8 %87 to i64 + %89 = getelementptr inbounds nuw i8, ptr %83, i64 %88 + %90 = getelementptr inbounds nuw i8, ptr %89, i64 1 + %91 = load i8, ptr %89, align 1, !tbaa !80 + %92 = getelementptr inbounds nuw i8, ptr %85, i64 321 + store i8 %91, ptr %92, align 1, !tbaa !43 + %93 = ptrtoint ptr %90 to i64 + %94 = sub i64 %25, %93 + %95 = zext i8 %91 to i64 + %96 = icmp ult i64 %94, %95 + br i1 %96, label %174, label %97 + +97: ; preds = %82 + %98 = getelementptr inbounds nuw i8, ptr %85, i64 354 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 2 %98, ptr nonnull align 1 %90, i64 %95, i1 false) + %99 = load ptr, ptr %49, align 8, !tbaa !119 + %100 = getelementptr inbounds nuw i8, ptr %99, i64 321 + %101 = load i8, ptr %100, align 1, !tbaa !43 + %102 = zext i8 %101 to i64 + %103 = getelementptr inbounds nuw i8, ptr %90, i64 %102 + %104 = ptrtoint ptr %103 to i64 + %105 = sub i64 %25, %104 + %106 = icmp ult i64 %105, 4 + br i1 %106, label %174, label %107 + +107: ; preds = %97 + %.0.copyload.i170.i = load i32, ptr %103, align 1 + %108 = tail call i32 @llvm.bswap.i32(i32 %.0.copyload.i170.i) + %109 = getelementptr inbounds nuw i8, ptr %0, i64 24 + store i32 %108, ptr %109, align 8, !tbaa !237 + %110 = getelementptr inbounds nuw i8, ptr %103, i64 4 + %111 = ptrtoint ptr %110 to i64 + %112 = sub i64 %25, %111 + %113 = icmp ult i64 %112, 16 + br i1 %113, label %174, label %114 + +114: ; preds = %107 + %.0.copyload.i167.i = load i64, ptr %110, align 1 + %115 = tail call i64 @llvm.bswap.i64(i64 %.0.copyload.i167.i) + %116 = getelementptr inbounds nuw i8, ptr %0, i64 288 + store i64 %115, ptr %116, align 8, !tbaa !238 + %117 = getelementptr inbounds nuw i8, ptr %103, i64 12 + %.0.copyload.i168.i = load i64, ptr %117, align 1 + %118 = tail call i64 @llvm.bswap.i64(i64 %.0.copyload.i168.i) + %119 = getelementptr inbounds nuw i8, ptr %0, i64 296 + store i64 %118, ptr %119, align 8, !tbaa !239 + %120 = getelementptr inbounds nuw i8, ptr %103, i64 20 + %121 = icmp eq ptr %4, %120 + br i1 %121, label %174, label %122 + +122: ; preds = %114 + %123 = getelementptr inbounds nuw i8, ptr %103, i64 21 + %124 = load i8, ptr %120, align 1, !tbaa !80 + %125 = getelementptr inbounds nuw i8, ptr %0, i64 328 + store i8 %124, ptr %125, align 8, !tbaa !130 + %126 = ptrtoint ptr %123 to i64 + %127 = sub i64 %25, %126 + %128 = icmp ult i64 %127, 8 + br i1 %128, label %174, label %129 + +129: ; preds = %122 + %130 = getelementptr inbounds nuw i8, ptr %0, i64 416 + %131 = load i64, ptr %123, align 1 + store i64 %131, ptr %130, align 8 + %132 = getelementptr inbounds nuw i8, ptr %103, i64 29 + %133 = ptrtoint ptr %132 to i64 + %134 = sub i64 %25, %133 + %135 = icmp ult i64 %134, 2 + br i1 %135, label %174, label %136 + +136: ; preds = %129 + %.0.copyload.i.i = load i16, ptr %132, align 1 + %137 = tail call i16 @llvm.bswap.i16(i16 %.0.copyload.i.i) + %138 = getelementptr inbounds nuw i8, ptr %0, i64 424 + store i16 %137, ptr %138, align 8, !tbaa !143 + %139 = getelementptr inbounds nuw i8, ptr %103, i64 31 + %140 = icmp eq ptr %4, %139 + br i1 %140, label %174, label %141 + +141: ; preds = %136 + %142 = getelementptr inbounds nuw i8, ptr %103, i64 32 + %143 = load i8, ptr %139, align 1, !tbaa !80 + %.not161.i = icmp eq i8 %143, 0 + br i1 %.not161.i, label %164, label %144 + +144: ; preds = %141 + %145 = load ptr, ptr %0, align 8, !tbaa !23 + %146 = getelementptr inbounds nuw i8, ptr %145, i64 328 + %147 = load ptr, ptr %146, align 8, !tbaa !193 + %.not162.i = icmp eq ptr %147, null + br i1 %.not162.i, label %.loopexit.i, label %.preheader.i + +.preheader.i: ; preds = %144 + %148 = load ptr, ptr %147, align 8, !tbaa !64 + %.not163180.i = icmp eq ptr %148, null + br i1 %.not163180.i, label %.loopexit.i, label %.lr.ph.i .lr.ph.i: ; preds = %.preheader.i - %144 = zext i8 %138 to i64 - br label %145 - -145: ; preds = %153, %.lr.ph.i - %146 = phi ptr [ %143, %.lr.ph.i ], [ %155, %153 ] - %.0193.i = phi ptr [ %142, %.lr.ph.i ], [ %154, %153 ] - %147 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %146) #28 - %148 = icmp eq i64 %147, %144 - br i1 %148, label %149, label %153 - -149: ; preds = %145 - %bcmp171.i = tail call i32 @bcmp(ptr nonnull %137, ptr nonnull %146, i64 %144) - %150 = icmp eq i32 %bcmp171.i, 0 - br i1 %150, label %151, label %153 - -151: ; preds = %149 - %152 = getelementptr inbounds nuw i8, ptr %0, i64 440 - store ptr %146, ptr %152, align 8, !tbaa !126 + %149 = zext i8 %143 to i64 + br label %150 + +150: ; preds = %158, %.lr.ph.i + %151 = phi ptr [ %148, %.lr.ph.i ], [ %160, %158 ] + %.0181.i = phi ptr [ %147, %.lr.ph.i ], [ %159, %158 ] + %152 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %151) #28 + %153 = icmp eq i64 %152, %149 + br i1 %153, label %154, label %158 + +154: ; preds = %150 + %bcmp164.i = tail call i32 @bcmp(ptr nonnull %142, ptr nonnull %151, i64 %149) + %155 = icmp eq i32 %bcmp164.i, 0 + br i1 %155, label %156, label %158 + +156: ; preds = %154 + %157 = getelementptr inbounds nuw i8, ptr %0, i64 440 + store ptr %151, ptr %157, align 8, !tbaa !126 br label %.loopexit.i -153: ; preds = %149, %145 - %154 = getelementptr inbounds nuw i8, ptr %.0193.i, i64 8 - %155 = load ptr, ptr %154, align 8, !tbaa !64 - %.not170.i = icmp eq ptr %155, null - br i1 %.not170.i, label %.loopexit.i, label %145, !llvm.loop !241 - -.loopexit.i: ; preds = %153, %151, %.preheader.i, %139 - %156 = getelementptr inbounds nuw i8, ptr %0, i64 440 - %157 = load ptr, ptr %156, align 8, !tbaa !126 - %158 = icmp eq ptr %157, null - br i1 %158, label %169, label %159 - -159: ; preds = %.loopexit.i, %135 - %160 = zext i8 %138 to i64 - %161 = getelementptr inbounds nuw i8, ptr %137, i64 %160 +158: ; preds = %154, %150 + %159 = getelementptr inbounds nuw i8, ptr %.0181.i, i64 8 + %160 = load ptr, ptr %159, align 8, !tbaa !64 + %.not163.i = icmp eq ptr %160, null + br i1 %.not163.i, label %.loopexit.i, label %150, !llvm.loop !241 + +.loopexit.i: ; preds = %158, %156, %.preheader.i, %144 + %161 = getelementptr inbounds nuw i8, ptr %0, i64 440 + %162 = load ptr, ptr %161, align 8, !tbaa !126 + %163 = icmp eq ptr %162, null + br i1 %163, label %174, label %164 + +164: ; preds = %.loopexit.i, %141 + %165 = zext i8 %143 to i64 + %166 = getelementptr inbounds nuw i8, ptr %142, i64 %165 store i32 27, ptr %5, align 8, !tbaa !34 - %162 = getelementptr inbounds nuw i8, ptr %0, i64 20 - store i32 771, ptr %162, align 4, !tbaa !84 - tail call void @mbedtls_ssl_update_out_pointers(ptr noundef nonnull %0, ptr noundef %97) #26 - %163 = getelementptr inbounds nuw i8, ptr %0, i64 272 - store i16 1, ptr %163, align 8, !tbaa !115 - %164 = getelementptr inbounds nuw i8, ptr %0, i64 112 - %165 = load ptr, ptr %164, align 8, !tbaa !70 - %.not172.i = icmp eq ptr %165, null - br i1 %.not172.i, label %168, label %166 - -166: ; preds = %159 + %167 = getelementptr inbounds nuw i8, ptr %0, i64 20 + store i32 771, ptr %167, align 4, !tbaa !84 + tail call void @mbedtls_ssl_update_out_pointers(ptr noundef nonnull %0, ptr noundef %99) #26 + %168 = getelementptr inbounds nuw i8, ptr %0, i64 272 + store i16 1, ptr %168, align 8, !tbaa !115 + %169 = getelementptr inbounds nuw i8, ptr %0, i64 112 + %170 = load ptr, ptr %169, align 8, !tbaa !70 + %.not165.i = icmp eq ptr %170, null + br i1 %.not165.i, label %173, label %171 + +171: ; preds = %164 tail call void @mbedtls_ssl_handshake_free(ptr noundef nonnull %0) - %167 = load ptr, ptr %164, align 8, !tbaa !70 - tail call void @free(ptr noundef %167) #26 - store ptr null, ptr %164, align 8, !tbaa !70 - br label %168 + %172 = load ptr, ptr %169, align 8, !tbaa !70 + tail call void @free(ptr noundef %172) #26 + store ptr null, ptr %169, align 8, !tbaa !70 + br label %173 -168: ; preds = %166, %159 - %.not173.i = icmp eq ptr %161, %4 - br i1 %.not173.i, label %ssl_context_load.exit, label %169 +173: ; preds = %171, %164 + %.not166.i = icmp eq ptr %166, %4 + br i1 %.not166.i, label %ssl_context_load.exit, label %174 -169: ; preds = %42, %7, %3, %20, %17, %14, %10, %24, %26, %27, %30, %ssl_tls12prf_from_cs.exit.thread179.i, %59, %72, %75, %81, %94, %105, %110, %119, %124, %168, %44, %129, %.loopexit.i, %55 - %.0140.i.ph = phi i32 [ -28928, %55 ], [ -28928, %.loopexit.i ], [ -28928, %129 ], [ -28928, %44 ], [ -28928, %168 ], [ -28928, %124 ], [ -28928, %119 ], [ -28928, %110 ], [ -28928, %105 ], [ -28928, %94 ], [ -28928, %81 ], [ -28928, %75 ], [ -28928, %72 ], [ %71, %59 ], [ -28928, %ssl_tls12prf_from_cs.exit.thread179.i ], [ -28928, %30 ], [ -28928, %27 ], [ -24320, %26 ], [ -28928, %24 ], [ -28928, %10 ], [ -28928, %14 ], [ -28928, %17 ], [ -28928, %20 ], [ -28928, %3 ], [ -28928, %7 ], [ %41, %42 ] +174: ; preds = %43, %7, %3, %20, %17, %14, %10, %24, %27, %28, %31, %ssl_tls12prf_from_cs.exit.thread172.i, %60, %73, %76, %82, %97, %107, %114, %122, %129, %173, %45, %136, %.loopexit.i, %56 + %.0140.i.ph = phi i32 [ -28928, %56 ], [ -28928, %.loopexit.i ], [ -28928, %136 ], [ -28928, %45 ], [ -28928, %173 ], [ -28928, %129 ], [ -28928, %122 ], [ -28928, %114 ], [ -28928, %107 ], [ -28928, %97 ], [ -28928, %82 ], [ -28928, %76 ], [ -28928, %73 ], [ %72, %60 ], [ -28928, %ssl_tls12prf_from_cs.exit.thread172.i ], [ -28928, %31 ], [ -28928, %28 ], [ -24320, %27 ], [ -28928, %24 ], [ -28928, %10 ], [ -28928, %14 ], [ -28928, %17 ], [ -28928, %20 ], [ -28928, %3 ], [ -28928, %7 ], [ %42, %43 ] tail call void @mbedtls_ssl_free(ptr noundef nonnull %0) br label %ssl_context_load.exit -ssl_context_load.exit: ; preds = %168, %169 - %.0140.i8 = phi i32 [ %.0140.i.ph, %169 ], [ 0, %168 ] +ssl_context_load.exit: ; preds = %173, %174 + %.0140.i8 = phi i32 [ %.0140.i.ph, %174 ], [ 0, %173 ] ret i32 %.0140.i8 } diff --git a/bench/lief/optimized/ssl_tls13_client.ll b/bench/lief/optimized/ssl_tls13_client.ll index 5ed755f38d4..27b29412180 100644 --- a/bench/lief/optimized/ssl_tls13_client.ll +++ b/bench/lief/optimized/ssl_tls13_client.ll @@ -968,7 +968,7 @@ define hidden i32 @mbedtls_ssl_tls13_handshake_client_step(ptr noundef %0) local %11 = alloca i64, align 8 %12 = getelementptr inbounds nuw i8, ptr %0, i64 8 %13 = load i32, ptr %12, align 8, !tbaa !68 - switch i32 %13, label %572 [ + switch i32 %13, label %575 [ i32 0, label %14 i32 1, label %15 i32 2, label %17 @@ -2199,182 +2199,183 @@ ssl_tls13_process_certificate_request.exit: ; preds = %ssl_tls13_certifica %472 = load ptr, ptr %2, align 8, !tbaa !69 %473 = load i64, ptr %3, align 8, !tbaa !3 %474 = getelementptr inbounds nuw i8, ptr %472, i64 %473 - %475 = icmp ugt i64 %473, 8 - br i1 %475, label %477, label %476 + %475 = ptrtoint ptr %474 to i64 + %476 = icmp ugt i64 %473, 8 + br i1 %476, label %478, label %477 -476: ; preds = %468 +477: ; preds = %468 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 2858, ptr noundef nonnull @.str.34, ptr noundef nonnull @__func__.ssl_tls13_parse_new_session_ticket) #12 call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 50, i32 noundef -29440) #12 br label %ssl_tls13_process_new_session_ticket.exit -477: ; preds = %468 +478: ; preds = %468 %.0.copyload.i97.i.i = load i32, ptr %472, align 1 - %478 = call i32 @llvm.bswap.i32(i32 %.0.copyload.i97.i.i) - %479 = getelementptr inbounds nuw i8, ptr %470, i64 144 - store i32 %478, ptr %479, align 8, !tbaa !104 - call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 2863, ptr noundef nonnull @.str.101, i32 noundef %478) #12 - %480 = load i32, ptr %479, align 8, !tbaa !104 - %481 = icmp ugt i32 %480, 604800 - br i1 %481, label %482, label %483 - -482: ; preds = %477 + %479 = call i32 @llvm.bswap.i32(i32 %.0.copyload.i97.i.i) + %480 = getelementptr inbounds nuw i8, ptr %470, i64 144 + store i32 %479, ptr %480, align 8, !tbaa !104 + call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 2863, ptr noundef nonnull @.str.101, i32 noundef %479) #12 + %481 = load i32, ptr %480, align 8, !tbaa !104 + %482 = icmp ugt i32 %481, 604800 + br i1 %482, label %483, label %484 + +483: ; preds = %478 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 2866, ptr noundef nonnull @.str.102) #12 br label %ssl_tls13_process_new_session_ticket.exit -483: ; preds = %477 - %484 = getelementptr inbounds nuw i8, ptr %472, i64 4 - %.0.copyload.i98.i.i = load i32, ptr %484, align 1 - %485 = call i32 @llvm.bswap.i32(i32 %.0.copyload.i98.i.i) - %486 = getelementptr inbounds nuw i8, ptr %470, i64 160 - store i32 %485, ptr %486, align 8, !tbaa !50 - call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 2873, ptr noundef nonnull @.str.103, i32 noundef %485) #12 - %487 = getelementptr inbounds nuw i8, ptr %472, i64 8 - %488 = load i8, ptr %487, align 1, !tbaa !58 - %489 = zext i8 %488 to i64 - %490 = getelementptr inbounds nuw i8, ptr %472, i64 9 +484: ; preds = %478 + %485 = getelementptr inbounds nuw i8, ptr %472, i64 4 + %.0.copyload.i98.i.i = load i32, ptr %485, align 1 + %486 = call i32 @llvm.bswap.i32(i32 %.0.copyload.i98.i.i) + %487 = getelementptr inbounds nuw i8, ptr %470, i64 160 + store i32 %486, ptr %487, align 8, !tbaa !50 + call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 2873, ptr noundef nonnull @.str.103, i32 noundef %486) #12 + %488 = getelementptr inbounds nuw i8, ptr %472, i64 8 + %489 = load i8, ptr %488, align 1, !tbaa !58 + %490 = zext i8 %489 to i64 + %491 = getelementptr inbounds nuw i8, ptr %472, i64 9 %gepdiff.i58 = add i64 %473, -9 - %.not34.i = icmp ult i64 %gepdiff.i58, %489 - br i1 %.not34.i, label %491, label %492 + %.not34.i = icmp ult i64 %gepdiff.i58, %490 + br i1 %.not34.i, label %492, label %493 -491: ; preds = %483 +492: ; preds = %484 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 2878, ptr noundef nonnull @.str.34, ptr noundef nonnull @__func__.ssl_tls13_parse_new_session_ticket) #12 call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 50, i32 noundef -29440) #12 br label %ssl_tls13_process_new_session_ticket.exit -492: ; preds = %483 - call void @mbedtls_debug_print_buf(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 2880, ptr noundef nonnull @.str.104, ptr noundef nonnull %490, i64 noundef %489) #12 - %gepdiff35.i = sub nuw i64 %gepdiff.i58, %489 - %493 = icmp ugt i64 %gepdiff35.i, 1 - br i1 %493, label %495, label %494 +493: ; preds = %484 + call void @mbedtls_debug_print_buf(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 2880, ptr noundef nonnull @.str.104, ptr noundef nonnull %491, i64 noundef %490) #12 + %gepdiff35.i = sub nuw i64 %gepdiff.i58, %490 + %494 = icmp ugt i64 %gepdiff35.i, 1 + br i1 %494, label %496, label %495 -494: ; preds = %492 +495: ; preds = %493 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 2884, ptr noundef nonnull @.str.34, ptr noundef nonnull @__func__.ssl_tls13_parse_new_session_ticket) #12 call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 50, i32 noundef -29440) #12 br label %ssl_tls13_process_new_session_ticket.exit -495: ; preds = %492 - %496 = getelementptr inbounds nuw i8, ptr %490, i64 %489 - %.0.copyload.i96.i.i = load i16, ptr %496, align 1 - %497 = call i16 @llvm.bswap.i16(i16 %.0.copyload.i96.i.i) - %498 = zext i16 %497 to i64 - %499 = getelementptr inbounds nuw i8, ptr %496, i64 2 - %500 = icmp ule ptr %499, %474 - %.neg40.i = add i64 %473, -11 - %gepdiff36.i = sub i64 %.neg40.i, %489 - %501 = icmp uge i64 %gepdiff36.i, %498 - %narrow.i101.not.i.i = and i1 %500, %501 - br i1 %narrow.i101.not.i.i, label %503, label %502 - -502: ; preds = %495 +496: ; preds = %493 + %497 = getelementptr inbounds nuw i8, ptr %491, i64 %490 + %.0.copyload.i96.i.i = load i16, ptr %497, align 1 + %498 = call i16 @llvm.bswap.i16(i16 %.0.copyload.i96.i.i) + %499 = zext i16 %498 to i64 + %500 = getelementptr inbounds nuw i8, ptr %497, i64 2 + %501 = icmp ule ptr %500, %474 + %.neg39.i = add i64 %473, -11 + %gepdiff36.i = sub i64 %.neg39.i, %490 + %502 = icmp uge i64 %gepdiff36.i, %499 + %narrow.i101.not.i.i = and i1 %501, %502 + br i1 %narrow.i101.not.i.i, label %504, label %503 + +503: ; preds = %496 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 2887, ptr noundef nonnull @.str.34, ptr noundef nonnull @__func__.ssl_tls13_parse_new_session_ticket) #12 call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 50, i32 noundef -29440) #12 br label %ssl_tls13_process_new_session_ticket.exit -503: ; preds = %495 - call void @mbedtls_debug_print_buf(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 2888, ptr noundef nonnull @.str.105, ptr noundef nonnull %499, i64 noundef %498) #12 - %504 = getelementptr inbounds nuw i8, ptr %470, i64 128 - %505 = load ptr, ptr %504, align 8, !tbaa !35 - %.not91.i.i59 = icmp eq ptr %505, null - br i1 %.not91.i.i59, label %506, label %509 - -506: ; preds = %503 - %507 = getelementptr inbounds nuw i8, ptr %470, i64 136 - %508 = load i64, ptr %507, align 8, !tbaa !49 - %.not92.i.i = icmp eq i64 %508, 0 - br i1 %.not92.i.i, label %510, label %509 - -509: ; preds = %506, %503 - call void @free(ptr noundef %505) #12 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %504, i8 0, i64 16, i1 false) - br label %510 - -510: ; preds = %509, %506 - %511 = call noalias ptr @calloc(i64 noundef 1, i64 noundef %498) #14 - %512 = icmp eq ptr %511, null - br i1 %512, label %513, label %514 - -513: ; preds = %510 +504: ; preds = %496 + call void @mbedtls_debug_print_buf(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 2888, ptr noundef nonnull @.str.105, ptr noundef nonnull %500, i64 noundef %499) #12 + %505 = getelementptr inbounds nuw i8, ptr %470, i64 128 + %506 = load ptr, ptr %505, align 8, !tbaa !35 + %.not91.i.i59 = icmp eq ptr %506, null + br i1 %.not91.i.i59, label %507, label %510 + +507: ; preds = %504 + %508 = getelementptr inbounds nuw i8, ptr %470, i64 136 + %509 = load i64, ptr %508, align 8, !tbaa !49 + %.not92.i.i = icmp eq i64 %509, 0 + br i1 %.not92.i.i, label %511, label %510 + +510: ; preds = %507, %504 + call void @free(ptr noundef %506) #12 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %505, i8 0, i64 16, i1 false) + br label %511 + +511: ; preds = %510, %507 + %512 = call noalias ptr @calloc(i64 noundef 1, i64 noundef %499) #14 + %513 = icmp eq ptr %512, null + br i1 %513, label %514, label %515 + +514: ; preds = %511 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 2898, ptr noundef nonnull @.str.106) #12 br label %ssl_tls13_process_new_session_ticket.exit -514: ; preds = %510 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %511, ptr nonnull align 1 %499, i64 %498, i1 false) - %515 = getelementptr inbounds nuw i8, ptr %499, i64 %498 - store ptr %511, ptr %504, align 8, !tbaa !35 - %516 = getelementptr inbounds nuw i8, ptr %470, i64 136 - store i64 %498, ptr %516, align 8, !tbaa !49 - %517 = getelementptr inbounds nuw i8, ptr %470, i64 164 - %518 = load i8, ptr %517, align 4, !tbaa !38 - %519 = and i8 %518, -14 - store i8 %519, ptr %517, align 4, !tbaa !38 - %520 = icmp ule ptr %515, %474 - %521 = add nuw nsw i64 %498, %489 - %gepdiff37.i = sub i64 %.neg40.i, %521 - %522 = icmp ugt i64 %gepdiff37.i, 1 - %narrow.i102.not.i.i = and i1 %520, %522 - br i1 %narrow.i102.not.i.i, label %524, label %523 - -523: ; preds = %514 +515: ; preds = %511 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %512, ptr nonnull align 1 %500, i64 %499, i1 false) + %516 = getelementptr inbounds nuw i8, ptr %500, i64 %499 + store ptr %512, ptr %505, align 8, !tbaa !35 + %517 = getelementptr inbounds nuw i8, ptr %470, i64 136 + store i64 %499, ptr %517, align 8, !tbaa !49 + %518 = getelementptr inbounds nuw i8, ptr %470, i64 164 + %519 = load i8, ptr %518, align 4, !tbaa !38 + %520 = and i8 %519, -14 + store i8 %520, ptr %518, align 4, !tbaa !38 + %521 = icmp ule ptr %516, %474 + %522 = add nuw nsw i64 %490, %499 + %gepdiff37.i = sub i64 %.neg39.i, %522 + %523 = icmp ugt i64 %gepdiff37.i, 1 + %narrow.i102.not.i.i = and i1 %521, %523 + br i1 %narrow.i102.not.i.i, label %525, label %524 + +524: ; preds = %515 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 2910, ptr noundef nonnull @.str.34, ptr noundef nonnull @__func__.ssl_tls13_parse_new_session_ticket) #12 call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 50, i32 noundef -29440) #12 br label %ssl_tls13_process_new_session_ticket.exit -524: ; preds = %514 - %.0.copyload.i.i.i60 = load i16, ptr %515, align 1 - %525 = call i16 @llvm.bswap.i16(i16 %.0.copyload.i.i.i60) - %526 = zext i16 %525 to i64 - %527 = getelementptr inbounds nuw i8, ptr %515, i64 2 - %528 = icmp ule ptr %527, %474 - %.neg45.i = add i64 %473, -13 - %gepdiff38.i = sub i64 %.neg45.i, %521 - %529 = icmp uge i64 %gepdiff38.i, %526 - %narrow.i103.not.i.i61 = and i1 %528, %529 - br i1 %narrow.i103.not.i.i61, label %531, label %530 - -530: ; preds = %524 +525: ; preds = %515 + %.0.copyload.i.i.i60 = load i16, ptr %516, align 1 + %526 = call i16 @llvm.bswap.i16(i16 %.0.copyload.i.i.i60) + %527 = zext i16 %526 to i64 + %528 = getelementptr inbounds nuw i8, ptr %516, i64 2 + %529 = icmp ule ptr %528, %474 + %530 = ptrtoint ptr %528 to i64 + %531 = sub i64 %475, %530 + %532 = icmp uge i64 %531, %527 + %narrow.i103.not.i.i61 = and i1 %529, %532 + br i1 %narrow.i103.not.i.i61, label %534, label %533 + +533: ; preds = %525 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 2913, ptr noundef nonnull @.str.34, ptr noundef nonnull @__func__.ssl_tls13_parse_new_session_ticket) #12 call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 50, i32 noundef -29440) #12 br label %ssl_tls13_process_new_session_ticket.exit -531: ; preds = %524 - call void @mbedtls_debug_print_buf(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 2915, ptr noundef nonnull @.str.107, ptr noundef nonnull %527, i64 noundef %526) #12 - %532 = getelementptr inbounds nuw i8, ptr %527, i64 %526 - %533 = call fastcc i32 @ssl_tls13_parse_new_session_ticket_exts(ptr noundef nonnull %0, ptr noundef nonnull %527, ptr noundef nonnull %532) - %.not95.i.i62 = icmp eq i32 %533, 0 - br i1 %.not95.i.i62, label %ssl_tls13_parse_new_session_ticket.exit.i, label %534 +534: ; preds = %525 + call void @mbedtls_debug_print_buf(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 2915, ptr noundef nonnull @.str.107, ptr noundef nonnull %528, i64 noundef %527) #12 + %535 = getelementptr inbounds nuw i8, ptr %528, i64 %527 + %536 = call fastcc i32 @ssl_tls13_parse_new_session_ticket_exts(ptr noundef nonnull %0, ptr noundef nonnull %528, ptr noundef nonnull %535) + %.not95.i.i62 = icmp eq i32 %536, 0 + br i1 %.not95.i.i62, label %ssl_tls13_parse_new_session_ticket.exit.i, label %537 -534: ; preds = %531 - call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 2921, ptr noundef nonnull @.str.108, i32 noundef %533) #12 +537: ; preds = %534 + call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 2921, ptr noundef nonnull @.str.108, i32 noundef %536) #12 br label %ssl_tls13_process_new_session_ticket.exit -ssl_tls13_parse_new_session_ticket.exit.i: ; preds = %531 - %535 = load ptr, ptr %469, align 8, !tbaa !102 - %536 = getelementptr inbounds nuw i8, ptr %535, i64 144 - %537 = load i32, ptr %536, align 8, !tbaa !104 - %538 = icmp eq i32 %537, 0 - br i1 %538, label %ssl_tls13_postprocess_new_session_ticket.exit.thread28.thread32.i, label %539 - -539: ; preds = %ssl_tls13_parse_new_session_ticket.exit.i - %540 = call i64 @mbedtls_ms_time() #12 - %541 = getelementptr inbounds nuw i8, ptr %535, i64 224 - store i64 %540, ptr %541, align 8, !tbaa !51 - %542 = getelementptr inbounds nuw i8, ptr %535, i64 16 - %543 = load i32, ptr %542, align 8, !tbaa !46 - %544 = call ptr @mbedtls_ssl_ciphersuite_from_id(i32 noundef %543) #12 - %545 = icmp eq ptr %544, null - br i1 %545, label %546, label %547 - -546: ; preds = %539 +ssl_tls13_parse_new_session_ticket.exit.i: ; preds = %534 + %538 = load ptr, ptr %469, align 8, !tbaa !102 + %539 = getelementptr inbounds nuw i8, ptr %538, i64 144 + %540 = load i32, ptr %539, align 8, !tbaa !104 + %541 = icmp eq i32 %540, 0 + br i1 %541, label %ssl_tls13_postprocess_new_session_ticket.exit.thread28.thread32.i, label %542 + +542: ; preds = %ssl_tls13_parse_new_session_ticket.exit.i + %543 = call i64 @mbedtls_ms_time() #12 + %544 = getelementptr inbounds nuw i8, ptr %538, i64 224 + store i64 %543, ptr %544, align 8, !tbaa !51 + %545 = getelementptr inbounds nuw i8, ptr %538, i64 16 + %546 = load i32, ptr %545, align 8, !tbaa !46 + %547 = call ptr @mbedtls_ssl_ciphersuite_from_id(i32 noundef %546) #12 + %548 = icmp eq ptr %547, null + br i1 %548, label %549, label %550 + +549: ; preds = %542 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 2958, ptr noundef nonnull @.str.58) #12 br label %ssl_tls13_process_new_session_ticket.exit -547: ; preds = %539 - %548 = getelementptr inbounds nuw i8, ptr %544, i64 17 - %549 = load i8, ptr %548, align 1, !tbaa !47 - %550 = zext i8 %549 to i32 - %551 = or disjoint i32 %550, 33554432 - switch i32 %551, label %.fold.split61.i.i [ - i32 33554435, label %552 +550: ; preds = %542 + %551 = getelementptr inbounds nuw i8, ptr %547, i64 17 + %552 = load i8, ptr %551, align 1, !tbaa !47 + %553 = zext i8 %552 to i32 + %554 = or disjoint i32 %553, 33554432 + switch i32 %554, label %.fold.split61.i.i [ + i32 33554435, label %555 i32 33554436, label %.fold.split.i.i i32 33554437, label %.fold.split.i.i i32 33554440, label %.fold.split52.i.i @@ -2389,83 +2390,83 @@ ssl_tls13_parse_new_session_ticket.exit.i: ; preds = %531 i32 33554451, label %ssl_tls13_process_new_session_ticket.exit ] -.fold.split.i.i: ; preds = %547, %547 - br label %552 +.fold.split.i.i: ; preds = %550, %550 + br label %555 -.fold.split52.i.i: ; preds = %547, %547, %547 - br label %552 +.fold.split52.i.i: ; preds = %550, %550, %550 + br label %555 -.fold.split53.i.i: ; preds = %547, %547, %547 - br label %552 +.fold.split53.i.i: ; preds = %550, %550, %550 + br label %555 -.fold.split54.i.i: ; preds = %547, %547 - br label %552 +.fold.split54.i.i: ; preds = %550, %550 + br label %555 -.fold.split61.i.i: ; preds = %547 - br label %552 +.fold.split61.i.i: ; preds = %550 + br label %555 -552: ; preds = %.fold.split61.i.i, %.fold.split54.i.i, %.fold.split53.i.i, %.fold.split52.i.i, %.fold.split.i.i, %547 - %.ph.i.i = phi i32 [ 48, %.fold.split54.i.i ], [ 32, %.fold.split53.i.i ], [ 28, %.fold.split52.i.i ], [ 20, %.fold.split.i.i ], [ 16, %547 ], [ 0, %.fold.split61.i.i ] - %553 = zext nneg i32 %.ph.i.i to i64 - %554 = getelementptr inbounds nuw i8, ptr %535, i64 428 - call void @mbedtls_debug_print_buf(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 2972, ptr noundef nonnull @.str.109, ptr noundef nonnull %554, i64 noundef %553) #12 - %555 = getelementptr inbounds nuw i8, ptr %535, i64 166 - %556 = call i32 @mbedtls_ssl_tls13_hkdf_expand_label(i32 noundef %551, ptr noundef nonnull %554, i64 noundef %553, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @mbedtls_ssl_tls13_labels, i64 8), i64 noundef 10, ptr noundef nonnull %490, i64 noundef %489, ptr noundef nonnull %555, i64 noundef %553) #12 - %.not.i.i63 = icmp eq i32 %556, 0 +555: ; preds = %.fold.split61.i.i, %.fold.split54.i.i, %.fold.split53.i.i, %.fold.split52.i.i, %.fold.split.i.i, %550 + %.ph.i.i = phi i32 [ 48, %.fold.split54.i.i ], [ 32, %.fold.split53.i.i ], [ 28, %.fold.split52.i.i ], [ 20, %.fold.split.i.i ], [ 16, %550 ], [ 0, %.fold.split61.i.i ] + %556 = zext nneg i32 %.ph.i.i to i64 + %557 = getelementptr inbounds nuw i8, ptr %538, i64 428 + call void @mbedtls_debug_print_buf(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 2972, ptr noundef nonnull @.str.109, ptr noundef nonnull %557, i64 noundef %556) #12 + %558 = getelementptr inbounds nuw i8, ptr %538, i64 166 + %559 = call i32 @mbedtls_ssl_tls13_hkdf_expand_label(i32 noundef %554, ptr noundef nonnull %557, i64 noundef %556, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @mbedtls_ssl_tls13_labels, i64 8), i64 noundef 10, ptr noundef nonnull %491, i64 noundef %490, ptr noundef nonnull %558, i64 noundef %556) #12 + %.not.i.i63 = icmp eq i32 %559, 0 br i1 %.not.i.i63, label %ssl_tls13_postprocess_new_session_ticket.exit.thread28.thread.i, label %ssl_tls13_postprocess_new_session_ticket.exit.i -ssl_tls13_postprocess_new_session_ticket.exit.thread28.thread.i: ; preds = %552 - %557 = trunc nuw nsw i32 %.ph.i.i to i8 - %558 = getelementptr inbounds nuw i8, ptr %535, i64 165 - store i8 %557, ptr %558, align 1, !tbaa !54 - call void @mbedtls_debug_print_buf(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 3000, ptr noundef nonnull @.str.111, ptr noundef nonnull %555, i64 noundef %553) #12 - %559 = load ptr, ptr %0, align 8, !tbaa !39 - %560 = getelementptr inbounds nuw i8, ptr %559, i64 32 - %561 = load i32, ptr %560, align 8, !tbaa !40 - %562 = getelementptr inbounds nuw i8, ptr %535, i64 164 - %563 = load i8, ptr %562, align 4, !tbaa !38 - %564 = trunc i32 %561 to i8 - %565 = and i8 %564, 13 - %566 = or i8 %565, %563 - store i8 %566, ptr %562, align 4, !tbaa !38 - %567 = zext i8 %566 to i32 - call void @mbedtls_ssl_print_ticket_flags(ptr noundef nonnull %0, i32 noundef 4, ptr noundef nonnull @.str, i32 noundef 3005, i32 noundef %567) #12 - %568 = load ptr, ptr %469, align 8, !tbaa !102 - %569 = getelementptr inbounds nuw i8, ptr %568, i64 1 - store i8 0, ptr %569, align 1, !tbaa !103 - br label %571 - -ssl_tls13_postprocess_new_session_ticket.exit.i: ; preds = %552 - call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 2, ptr noundef nonnull @.str, i32 noundef 2992, ptr noundef nonnull @.str.110, i32 noundef %556) #12 - %570 = icmp slt i32 %556, 0 - br i1 %570, label %ssl_tls13_process_new_session_ticket.exit, label %ssl_tls13_postprocess_new_session_ticket.exit.thread28.i +ssl_tls13_postprocess_new_session_ticket.exit.thread28.thread.i: ; preds = %555 + %560 = trunc nuw nsw i32 %.ph.i.i to i8 + %561 = getelementptr inbounds nuw i8, ptr %538, i64 165 + store i8 %560, ptr %561, align 1, !tbaa !54 + call void @mbedtls_debug_print_buf(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 3000, ptr noundef nonnull @.str.111, ptr noundef nonnull %558, i64 noundef %556) #12 + %562 = load ptr, ptr %0, align 8, !tbaa !39 + %563 = getelementptr inbounds nuw i8, ptr %562, i64 32 + %564 = load i32, ptr %563, align 8, !tbaa !40 + %565 = getelementptr inbounds nuw i8, ptr %538, i64 164 + %566 = load i8, ptr %565, align 4, !tbaa !38 + %567 = trunc i32 %564 to i8 + %568 = and i8 %567, 13 + %569 = or i8 %568, %566 + store i8 %569, ptr %565, align 4, !tbaa !38 + %570 = zext i8 %569 to i32 + call void @mbedtls_ssl_print_ticket_flags(ptr noundef nonnull %0, i32 noundef 4, ptr noundef nonnull @.str, i32 noundef 3005, i32 noundef %570) #12 + %571 = load ptr, ptr %469, align 8, !tbaa !102 + %572 = getelementptr inbounds nuw i8, ptr %571, i64 1 + store i8 0, ptr %572, align 1, !tbaa !103 + br label %574 + +ssl_tls13_postprocess_new_session_ticket.exit.i: ; preds = %555 + call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 2, ptr noundef nonnull @.str, i32 noundef 2992, ptr noundef nonnull @.str.110, i32 noundef %559) #12 + %573 = icmp slt i32 %559, 0 + br i1 %573, label %ssl_tls13_process_new_session_ticket.exit, label %ssl_tls13_postprocess_new_session_ticket.exit.thread28.i ssl_tls13_postprocess_new_session_ticket.exit.thread28.i: ; preds = %ssl_tls13_postprocess_new_session_ticket.exit.i - %cond.i64 = icmp eq i32 %556, 1 - br i1 %cond.i64, label %ssl_tls13_postprocess_new_session_ticket.exit.thread28.thread32.i, label %571 + %cond.i64 = icmp eq i32 %559, 1 + br i1 %cond.i64, label %ssl_tls13_postprocess_new_session_ticket.exit.thread28.thread32.i, label %574 ssl_tls13_postprocess_new_session_ticket.exit.thread28.thread32.i: ; preds = %ssl_tls13_postprocess_new_session_ticket.exit.thread28.i, %ssl_tls13_parse_new_session_ticket.exit.i call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 2, ptr noundef nonnull @.str, i32 noundef 3053, ptr noundef nonnull @.str.99) #12 - br label %571 + br label %574 -571: ; preds = %ssl_tls13_postprocess_new_session_ticket.exit.thread28.thread32.i, %ssl_tls13_postprocess_new_session_ticket.exit.thread28.i, %ssl_tls13_postprocess_new_session_ticket.exit.thread28.thread.i +574: ; preds = %ssl_tls13_postprocess_new_session_ticket.exit.thread28.thread32.i, %ssl_tls13_postprocess_new_session_ticket.exit.thread28.i, %ssl_tls13_postprocess_new_session_ticket.exit.thread28.thread.i %.1.i65 = phi i32 [ -31488, %ssl_tls13_postprocess_new_session_ticket.exit.thread28.thread.i ], [ 0, %ssl_tls13_postprocess_new_session_ticket.exit.thread28.thread32.i ], [ -27648, %ssl_tls13_postprocess_new_session_ticket.exit.thread28.i ] store i32 27, ptr %12, align 8, !tbaa !68 br label %ssl_tls13_process_new_session_ticket.exit -ssl_tls13_process_new_session_ticket.exit: ; preds = %466, %476, %482, %491, %494, %502, %513, %523, %530, %534, %546, %547, %547, %ssl_tls13_postprocess_new_session_ticket.exit.i, %571 - %.0.i57 = phi i32 [ %467, %466 ], [ %556, %ssl_tls13_postprocess_new_session_ticket.exit.i ], [ %.1.i65, %571 ], [ %533, %534 ], [ -29440, %530 ], [ -29440, %523 ], [ -32512, %513 ], [ -29440, %502 ], [ -29440, %494 ], [ -29440, %491 ], [ -26112, %482 ], [ -29440, %476 ], [ -27648, %546 ], [ -27648, %547 ], [ -27648, %547 ] +ssl_tls13_process_new_session_ticket.exit: ; preds = %466, %477, %483, %492, %495, %503, %514, %524, %533, %537, %549, %550, %550, %ssl_tls13_postprocess_new_session_ticket.exit.i, %574 + %.0.i57 = phi i32 [ %467, %466 ], [ %559, %ssl_tls13_postprocess_new_session_ticket.exit.i ], [ %.1.i65, %574 ], [ %536, %537 ], [ -29440, %533 ], [ -29440, %524 ], [ -32512, %514 ], [ -29440, %503 ], [ -29440, %495 ], [ -29440, %492 ], [ -26112, %483 ], [ -29440, %477 ], [ -27648, %549 ], [ -27648, %550 ], [ -27648, %550 ] call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 2, ptr noundef nonnull @.str, i32 noundef 3064, ptr noundef nonnull @.str.100) #12 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #12 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #12 br label %ssl_tls13_process_server_certificate.exit -572: ; preds = %1 +575: ; preds = %1 tail call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 3179, ptr noundef nonnull @.str.7, i32 noundef %13) #12 br label %ssl_tls13_process_server_certificate.exit -ssl_tls13_process_server_certificate.exit: ; preds = %457, %456, %452, %451, %448, %.sink.split.i, %434, %425, %424, %420, %419, %417, %416, %414, %14, %15, %ssl_tls13_process_server_hello.exit, %ssl_tls13_process_encrypted_extensions.exit, %ssl_tls13_process_certificate_request.exit, %458, %459, %462, %465, %ssl_tls13_process_new_session_ticket.exit, %460, %463, %572 - %.024 = phi i32 [ -28928, %572 ], [ 0, %14 ], [ %16, %15 ], [ %.02461.i, %ssl_tls13_process_server_hello.exit ], [ %.0.i30, %ssl_tls13_process_encrypted_extensions.exit ], [ %.016.i, %ssl_tls13_process_certificate_request.exit ], [ 0, %458 ], [ 0, %459 ], [ %461, %460 ], [ 0, %462 ], [ %464, %463 ], [ 0, %465 ], [ %.0.i57, %ssl_tls13_process_new_session_ticket.exit ], [ %415, %414 ], [ 0, %416 ], [ %418, %417 ], [ 0, %419 ], [ %423, %424 ], [ 0, %425 ], [ %421, %420 ], [ %435, %434 ], [ 0, %.sink.split.i ], [ %449, %448 ], [ 0, %451 ], [ %455, %456 ], [ 0, %457 ], [ %453, %452 ] +ssl_tls13_process_server_certificate.exit: ; preds = %457, %456, %452, %451, %448, %.sink.split.i, %434, %425, %424, %420, %419, %417, %416, %414, %14, %15, %ssl_tls13_process_server_hello.exit, %ssl_tls13_process_encrypted_extensions.exit, %ssl_tls13_process_certificate_request.exit, %458, %459, %462, %465, %ssl_tls13_process_new_session_ticket.exit, %460, %463, %575 + %.024 = phi i32 [ -28928, %575 ], [ 0, %14 ], [ %16, %15 ], [ %.02461.i, %ssl_tls13_process_server_hello.exit ], [ %.0.i30, %ssl_tls13_process_encrypted_extensions.exit ], [ %.016.i, %ssl_tls13_process_certificate_request.exit ], [ 0, %458 ], [ 0, %459 ], [ %461, %460 ], [ 0, %462 ], [ %464, %463 ], [ 0, %465 ], [ %.0.i57, %ssl_tls13_process_new_session_ticket.exit ], [ %415, %414 ], [ 0, %416 ], [ %418, %417 ], [ 0, %419 ], [ %423, %424 ], [ 0, %425 ], [ %421, %420 ], [ %435, %434 ], [ 0, %.sink.split.i ], [ %449, %448 ], [ 0, %451 ], [ %455, %456 ], [ 0, %457 ], [ %453, %452 ] ret i32 %.024 } diff --git a/bench/lief/optimized/ssl_tls13_server.ll b/bench/lief/optimized/ssl_tls13_server.ll index 68402f187ec..0caf3d7cf74 100644 --- a/bench/lief/optimized/ssl_tls13_server.ll +++ b/bench/lief/optimized/ssl_tls13_server.ll @@ -376,632 +376,632 @@ define internal fastcc i32 @ssl_tls13_process_client_hello(ptr noundef %0) unnam %13 = load ptr, ptr %12, align 8, !tbaa !16 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #9 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %4, i8 0, i64 16, i1 false) - %14 = ptrtoint ptr %9 to i64 - %15 = icmp ugt i64 %10, 37 - br i1 %15, label %17, label %16 + %14 = ptrtoint ptr %11 to i64 + %15 = ptrtoint ptr %9 to i64 + %16 = icmp ugt i64 %10, 37 + br i1 %16, label %18, label %17 -16: ; preds = %8 +17: ; preds = %8 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1295, ptr noundef nonnull @.str.11, ptr noundef nonnull @__func__.ssl_tls13_parse_client_hello) #9 call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 50, i32 noundef -29440) #9 br label %ssl_tls13_parse_client_hello.exit.thread -17: ; preds = %8 - %18 = load ptr, ptr %0, align 8, !tbaa !40 - %19 = getelementptr inbounds nuw i8, ptr %18, i64 9 - %20 = load i8, ptr %19, align 1, !tbaa !41 - %21 = zext i8 %20 to i32 - %22 = call zeroext i16 @mbedtls_ssl_read_version(ptr noundef %9, i32 noundef %21) #9 - %.not294.i = icmp eq i16 %22, 771 - br i1 %.not294.i, label %24, label %23 +18: ; preds = %8 + %19 = load ptr, ptr %0, align 8, !tbaa !40 + %20 = getelementptr inbounds nuw i8, ptr %19, i64 9 + %21 = load i8, ptr %20, align 1, !tbaa !41 + %22 = zext i8 %21 to i32 + %23 = call zeroext i16 @mbedtls_ssl_read_version(ptr noundef %9, i32 noundef %22) #9 + %.not294.i = icmp eq i16 %23, 771 + br i1 %.not294.i, label %25, label %24 -23: ; preds = %17 +24: ; preds = %18 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1305, ptr noundef nonnull @.str.12) #9 call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 70, i32 noundef -28288) #9 br label %ssl_tls13_parse_client_hello.exit.thread -24: ; preds = %17 - %25 = getelementptr inbounds nuw i8, ptr %9, i64 2 - %26 = getelementptr inbounds nuw i8, ptr %9, i64 34 - %27 = getelementptr inbounds nuw i8, ptr %9, i64 35 - %28 = load i8, ptr %26, align 1, !tbaa !47 - %29 = zext i8 %28 to i64 - %30 = add nuw nsw i64 %29, 2 +25: ; preds = %18 + %26 = getelementptr inbounds nuw i8, ptr %9, i64 2 + %27 = getelementptr inbounds nuw i8, ptr %9, i64 34 + %28 = getelementptr inbounds nuw i8, ptr %9, i64 35 + %29 = load i8, ptr %27, align 1, !tbaa !47 + %30 = zext i8 %29 to i64 + %31 = add nuw nsw i64 %30, 2 %gepdiff = add nsw i64 %10, -35 - %.not37 = icmp ugt i64 %30, %gepdiff - br i1 %.not37, label %31, label %32 + %.not37 = icmp ugt i64 %31, %gepdiff + br i1 %.not37, label %32, label %33 -31: ; preds = %24 +32: ; preds = %25 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1332, ptr noundef nonnull @.str.11, ptr noundef nonnull @__func__.ssl_tls13_parse_client_hello) #9 call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 50, i32 noundef -29440) #9 br label %ssl_tls13_parse_client_hello.exit.thread -32: ; preds = %24 - %33 = getelementptr inbounds nuw i8, ptr %27, i64 %29 - %.0.copyload.i.i = load i16, ptr %33, align 1 - %34 = call i16 @llvm.bswap.i16(i16 %.0.copyload.i.i) - %35 = zext i16 %34 to i64 - %36 = getelementptr inbounds nuw i8, ptr %33, i64 2 - %37 = and i64 %35, 1 - %.not296.i = icmp eq i64 %37, 0 - br i1 %.not296.i, label %39, label %38 - -38: ; preds = %32 +33: ; preds = %25 + %34 = getelementptr inbounds nuw i8, ptr %28, i64 %30 + %.0.copyload.i.i = load i16, ptr %34, align 1 + %35 = call i16 @llvm.bswap.i16(i16 %.0.copyload.i.i) + %36 = zext i16 %35 to i64 + %37 = getelementptr inbounds nuw i8, ptr %34, i64 2 + %38 = and i64 %36, 1 + %.not296.i = icmp eq i64 %38, 0 + br i1 %.not296.i, label %40, label %39 + +39: ; preds = %33 call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 50, i32 noundef -29440) #9 br label %ssl_tls13_parse_client_hello.exit.thread -39: ; preds = %32 - %40 = icmp ule ptr %36, %11 - %.neg41 = add i64 %10, -37 - %gepdiff38 = sub i64 %.neg41, %29 - %41 = icmp ugt i64 %gepdiff38, %35 - %narrow.i327.not.i = and i1 %40, %41 - br i1 %narrow.i327.not.i, label %43, label %42 +40: ; preds = %33 + %41 = icmp ule ptr %37, %11 + %.neg39 = add i64 %10, -37 + %gepdiff38 = sub i64 %.neg39, %30 + %42 = icmp ugt i64 %gepdiff38, %36 + %narrow.i327.not.i = and i1 %41, %42 + br i1 %narrow.i327.not.i, label %44, label %43 -42: ; preds = %39 +43: ; preds = %40 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1360, ptr noundef nonnull @.str.11, ptr noundef nonnull @__func__.ssl_tls13_parse_client_hello) #9 call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 50, i32 noundef -29440) #9 br label %ssl_tls13_parse_client_hello.exit.thread -43: ; preds = %39 - %44 = getelementptr inbounds nuw i8, ptr %36, i64 %35 - %45 = getelementptr inbounds nuw i8, ptr %44, i64 1 - %46 = load i8, ptr %44, align 1, !tbaa !47 - %47 = zext i8 %46 to i64 - %48 = add nuw nsw i64 %47, 2 - %49 = icmp ule ptr %45, %11 - %.neg43 = add i64 %10, -38 - %50 = add nuw nsw i64 %29, %35 - %gepdiff39 = sub i64 %.neg43, %50 - %51 = icmp ule i64 %48, %gepdiff39 - %narrow.i328.not.i = and i1 %49, %51 - br i1 %narrow.i328.not.i, label %53, label %52 - -52: ; preds = %43 +44: ; preds = %40 + %45 = getelementptr inbounds nuw i8, ptr %37, i64 %36 + %46 = getelementptr inbounds nuw i8, ptr %45, i64 1 + %47 = load i8, ptr %45, align 1, !tbaa !47 + %48 = zext i8 %47 to i64 + %49 = add nuw nsw i64 %48, 2 + %50 = icmp ule ptr %46, %11 + %51 = ptrtoint ptr %46 to i64 + %52 = sub i64 %14, %51 + %53 = icmp ule i64 %49, %52 + %narrow.i328.not.i = and i1 %50, %53 + br i1 %narrow.i328.not.i, label %55, label %54 + +54: ; preds = %44 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1367, ptr noundef nonnull @.str.11, ptr noundef nonnull @__func__.ssl_tls13_parse_client_hello) #9 call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 50, i32 noundef -29440) #9 br label %ssl_tls13_parse_client_hello.exit.thread -53: ; preds = %43 - %54 = getelementptr inbounds nuw i8, ptr %45, i64 %47 - %55 = call i32 @mbedtls_ssl_tls13_is_supported_versions_ext_present_in_exts(ptr noundef nonnull %0, ptr noundef nonnull %54, ptr noundef nonnull %11, ptr noundef nonnull %2, ptr noundef nonnull %3) #9 - %56 = icmp slt i32 %55, 0 - br i1 %56, label %57, label %58 +55: ; preds = %44 + %56 = getelementptr inbounds nuw i8, ptr %46, i64 %48 + %57 = call i32 @mbedtls_ssl_tls13_is_supported_versions_ext_present_in_exts(ptr noundef nonnull %0, ptr noundef nonnull %56, ptr noundef nonnull %11, ptr noundef nonnull %2, ptr noundef nonnull %3) #9 + %58 = icmp slt i32 %57, 0 + br i1 %58, label %59, label %60 -57: ; preds = %53 - call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1378, ptr noundef nonnull @.str.13, i32 noundef %55) #9 +59: ; preds = %55 + call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1378, ptr noundef nonnull @.str.13, i32 noundef %57) #9 br label %ssl_tls13_parse_client_hello.exit.thread -58: ; preds = %53 - switch i32 %55, label %67 [ +60: ; preds = %55 + switch i32 %57, label %69 [ i32 0, label %ssl_tls13_parse_client_hello.exit.thread31 - i32 1, label %59 + i32 1, label %61 ] -59: ; preds = %58 - %60 = load ptr, ptr %2, align 8, !tbaa !38 - %61 = load ptr, ptr %3, align 8, !tbaa !38 - %62 = call fastcc i32 @ssl_tls13_parse_supported_versions_ext(ptr noundef nonnull %0, ptr noundef %60, ptr noundef %61) - %63 = icmp slt i32 %62, 0 - br i1 %63, label %64, label %65 +61: ; preds = %60 + %62 = load ptr, ptr %2, align 8, !tbaa !38 + %63 = load ptr, ptr %3, align 8, !tbaa !38 + %64 = call fastcc i32 @ssl_tls13_parse_supported_versions_ext(ptr noundef nonnull %0, ptr noundef %62, ptr noundef %63) + %65 = icmp slt i32 %64, 0 + br i1 %65, label %66, label %67 -64: ; preds = %59 - call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1392, ptr noundef nonnull @.str.14, i32 noundef %62) #9 +66: ; preds = %61 + call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1392, ptr noundef nonnull @.str.14, i32 noundef %64) #9 br label %ssl_tls13_parse_client_hello.exit.thread -65: ; preds = %59 - %66 = icmp eq i32 %62, 771 - br i1 %66, label %ssl_tls13_parse_client_hello.exit.thread31, label %67 - -67: ; preds = %65, %58 - %68 = getelementptr inbounds nuw i8, ptr %0, i64 20 - store i32 772, ptr %68, align 4, !tbaa !48 - %69 = getelementptr inbounds nuw i8, ptr %0, i64 104 - %70 = load ptr, ptr %69, align 8, !tbaa !17 - %71 = getelementptr inbounds nuw i8, ptr %70, i64 4 - store i32 772, ptr %71, align 4, !tbaa !49 - %72 = load ptr, ptr %0, align 8, !tbaa !40 - %73 = getelementptr inbounds nuw i8, ptr %72, i64 8 - %74 = load i8, ptr %73, align 8, !tbaa !50 - %75 = getelementptr inbounds nuw i8, ptr %70, i64 2 - store i8 %74, ptr %75, align 2, !tbaa !51 - %76 = call i32 @mbedtls_ssl_tls13_crypto_init(ptr noundef nonnull %0) #9 - %.not299.i = icmp eq i32 %76, 0 - br i1 %.not299.i, label %77, label %ssl_tls13_parse_client_hello.exit - -77: ; preds = %67 - call void @mbedtls_debug_print_buf(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 1427, ptr noundef nonnull @.str.15, ptr noundef nonnull %25, i64 noundef 32) #9 - %78 = getelementptr inbounds nuw i8, ptr %13, i64 2120 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %78, ptr noundef nonnull align 1 dereferenceable(32) %25, i64 32, i1 false) - %79 = icmp ugt i8 %28, 32 - br i1 %79, label %80, label %81 - -80: ; preds = %77 +67: ; preds = %61 + %68 = icmp eq i32 %64, 771 + br i1 %68, label %ssl_tls13_parse_client_hello.exit.thread31, label %69 + +69: ; preds = %67, %60 + %70 = getelementptr inbounds nuw i8, ptr %0, i64 20 + store i32 772, ptr %70, align 4, !tbaa !48 + %71 = getelementptr inbounds nuw i8, ptr %0, i64 104 + %72 = load ptr, ptr %71, align 8, !tbaa !17 + %73 = getelementptr inbounds nuw i8, ptr %72, i64 4 + store i32 772, ptr %73, align 4, !tbaa !49 + %74 = load ptr, ptr %0, align 8, !tbaa !40 + %75 = getelementptr inbounds nuw i8, ptr %74, i64 8 + %76 = load i8, ptr %75, align 8, !tbaa !50 + %77 = getelementptr inbounds nuw i8, ptr %72, i64 2 + store i8 %76, ptr %77, align 2, !tbaa !51 + %78 = call i32 @mbedtls_ssl_tls13_crypto_init(ptr noundef nonnull %0) #9 + %.not299.i = icmp eq i32 %78, 0 + br i1 %.not299.i, label %79, label %ssl_tls13_parse_client_hello.exit + +79: ; preds = %69 + call void @mbedtls_debug_print_buf(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 1427, ptr noundef nonnull @.str.15, ptr noundef nonnull %26, i64 noundef 32) #9 + %80 = getelementptr inbounds nuw i8, ptr %13, i64 2120 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %80, ptr noundef nonnull align 1 dereferenceable(32) %26, i64 32, i1 false) + %81 = icmp ugt i8 %29, 32 + br i1 %81, label %82, label %83 + +82: ; preds = %79 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1431, ptr noundef nonnull @.str.16) #9 br label %ssl_tls13_parse_client_hello.exit.thread -81: ; preds = %77 - %82 = load ptr, ptr %69, align 8, !tbaa !17 - %83 = getelementptr inbounds nuw i8, ptr %82, i64 24 - store i64 %29, ptr %83, align 8, !tbaa !52 - call void @mbedtls_debug_print_buf(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 1436, ptr noundef nonnull @.str.17, ptr noundef nonnull %27, i64 noundef %29) #9 - %84 = load ptr, ptr %69, align 8, !tbaa !17 - %85 = getelementptr inbounds nuw i8, ptr %84, i64 32 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %85, ptr nonnull align 1 %27, i64 %29, i1 false) - call void @mbedtls_debug_print_buf(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 1444, ptr noundef nonnull @.str.18, ptr noundef nonnull %36, i64 noundef %35) #9 - %86 = getelementptr inbounds nuw i8, ptr %13, i64 16 - call fastcc void @ssl_tls13_select_ciphersuite(ptr noundef nonnull %0, ptr noundef nonnull %36, ptr noundef nonnull %44, i32 noundef 0, i32 noundef 0, ptr noundef nonnull %86) - %87 = load ptr, ptr %86, align 8, !tbaa !53 - %88 = icmp eq ptr %87, null - br i1 %88, label %89, label %90 - -89: ; preds = %81 +83: ; preds = %79 + %84 = load ptr, ptr %71, align 8, !tbaa !17 + %85 = getelementptr inbounds nuw i8, ptr %84, i64 24 + store i64 %30, ptr %85, align 8, !tbaa !52 + call void @mbedtls_debug_print_buf(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 1436, ptr noundef nonnull @.str.17, ptr noundef nonnull %28, i64 noundef %30) #9 + %86 = load ptr, ptr %71, align 8, !tbaa !17 + %87 = getelementptr inbounds nuw i8, ptr %86, i64 32 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %87, ptr nonnull align 1 %28, i64 %30, i1 false) + call void @mbedtls_debug_print_buf(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 1444, ptr noundef nonnull @.str.18, ptr noundef nonnull %37, i64 noundef %36) #9 + %88 = getelementptr inbounds nuw i8, ptr %13, i64 16 + call fastcc void @ssl_tls13_select_ciphersuite(ptr noundef nonnull %0, ptr noundef nonnull %37, ptr noundef nonnull %45, i32 noundef 0, i32 noundef 0, ptr noundef nonnull %88) + %89 = load ptr, ptr %88, align 8, !tbaa !53 + %90 = icmp eq ptr %89, null + br i1 %90, label %91, label %92 + +91: ; preds = %83 call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 40, i32 noundef -28160) #9 br label %ssl_tls13_parse_client_hello.exit.thread -90: ; preds = %81 - %91 = load i32, ptr %87, align 8, !tbaa !54 - %92 = load ptr, ptr %69, align 8, !tbaa !17 - %93 = getelementptr inbounds nuw i8, ptr %92, i64 16 - store i32 %91, ptr %93, align 8, !tbaa !56 - %94 = getelementptr inbounds nuw i8, ptr %87, i64 8 - %95 = load ptr, ptr %94, align 8, !tbaa !57 - call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 2, ptr noundef nonnull @.str, i32 noundef 1458, ptr noundef nonnull @.str.19, i32 noundef %91, ptr noundef %95) #9 - %96 = load i8, ptr %44, align 1, !tbaa !47 - %.not300.i = icmp eq i8 %96, 1 - br i1 %.not300.i, label %97, label %99 - -97: ; preds = %90 +92: ; preds = %83 + %93 = load i32, ptr %89, align 8, !tbaa !54 + %94 = load ptr, ptr %71, align 8, !tbaa !17 + %95 = getelementptr inbounds nuw i8, ptr %94, i64 16 + store i32 %93, ptr %95, align 8, !tbaa !56 + %96 = getelementptr inbounds nuw i8, ptr %89, i64 8 + %97 = load ptr, ptr %96, align 8, !tbaa !57 + call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 2, ptr noundef nonnull @.str, i32 noundef 1458, ptr noundef nonnull @.str.19, i32 noundef %93, ptr noundef %97) #9 %98 = load i8, ptr %45, align 1, !tbaa !47 - %.not301.i = icmp eq i8 %98, 0 - br i1 %.not301.i, label %100, label %99 + %.not300.i = icmp eq i8 %98, 1 + br i1 %.not300.i, label %99, label %101 -99: ; preds = %97, %90 +99: ; preds = %92 + %100 = load i8, ptr %46, align 1, !tbaa !47 + %.not301.i = icmp eq i8 %100, 0 + br i1 %.not301.i, label %102, label %101 + +101: ; preds = %99, %92 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1465, ptr noundef nonnull @.str.20) #9 call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 47, i32 noundef -26112) #9 br label %ssl_tls13_parse_client_hello.exit.thread -100: ; preds = %97 - %101 = getelementptr inbounds nuw i8, ptr %44, i64 2 - %.0.copyload.i323.i = load i16, ptr %101, align 1 - %102 = call i16 @llvm.bswap.i16(i16 %.0.copyload.i323.i) - %103 = zext i16 %102 to i64 - %.ptr.i = getelementptr inbounds nuw i8, ptr %44, i64 4 - %104 = icmp ule ptr %.ptr.i, %11 - %.neg45 = add i64 %10, -41 - %gepdiff40 = sub i64 %.neg45, %50 - %105 = icmp uge i64 %gepdiff40, %103 - %narrow.i329.not.i = and i1 %104, %105 - br i1 %narrow.i329.not.i, label %107, label %106 - -106: ; preds = %100 +102: ; preds = %99 + %103 = getelementptr inbounds nuw i8, ptr %45, i64 2 + %.0.copyload.i323.i = load i16, ptr %103, align 1 + %104 = call i16 @llvm.bswap.i16(i16 %.0.copyload.i323.i) + %105 = zext i16 %104 to i64 + %.ptr.i = getelementptr inbounds nuw i8, ptr %45, i64 4 + %106 = icmp ule ptr %.ptr.i, %11 + %107 = ptrtoint ptr %.ptr.i to i64 + %108 = sub i64 %14, %107 + %109 = icmp uge i64 %108, %105 + %narrow.i329.not.i = and i1 %106, %109 + br i1 %narrow.i329.not.i, label %111, label %110 + +110: ; preds = %102 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1483, ptr noundef nonnull @.str.11, ptr noundef nonnull @__func__.ssl_tls13_parse_client_hello) #9 call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 50, i32 noundef -29440) #9 br label %ssl_tls13_parse_client_hello.exit.thread -107: ; preds = %100 - %108 = getelementptr inbounds nuw i8, ptr %44, i64 %103 - %.ptr418.i = getelementptr inbounds nuw i8, ptr %108, i64 4 - call void @mbedtls_debug_print_buf(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 1486, ptr noundef nonnull @.str.21, ptr noundef nonnull %.ptr.i, i64 noundef %103) #9 - %109 = getelementptr inbounds nuw i8, ptr %13, i64 3276 - store i32 0, ptr %109, align 4, !tbaa !58 +111: ; preds = %102 + %112 = getelementptr inbounds nuw i8, ptr %45, i64 %105 + %.ptr418.i = getelementptr inbounds nuw i8, ptr %112, i64 4 + call void @mbedtls_debug_print_buf(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 1486, ptr noundef nonnull @.str.21, ptr noundef nonnull %.ptr.i, i64 noundef %105) #9 + %113 = getelementptr inbounds nuw i8, ptr %13, i64 3276 + store i32 0, ptr %113, align 4, !tbaa !58 %.not419.i = icmp eq i16 %.0.copyload.i323.i, 0 br i1 %.not419.i, label %._crit_edge.i, label %.lr.ph.i -.lr.ph.i: ; preds = %107 - %110 = ptrtoint ptr %.ptr418.i to i64 - br label %111 - -111: ; preds = %166, %.lr.ph.i - %.0261414.i = phi ptr [ %.ptr.i, %.lr.ph.i ], [ %136, %166 ] - %.0264413.i = phi ptr [ null, %.lr.ph.i ], [ %.1265.i, %166 ] - %.0267412.i = phi ptr [ null, %.lr.ph.i ], [ %.1268.i, %166 ] - %.0271411.i = phi i32 [ 0, %.lr.ph.i ], [ %.1272.i, %166 ] - %112 = load ptr, ptr %12, align 8, !tbaa !16 - %113 = getelementptr inbounds nuw i8, ptr %112, i64 57 - %114 = load i8, ptr %113, align 1, !tbaa !59 - %.not313.i = icmp eq i8 %114, 0 +.lr.ph.i: ; preds = %111 + %114 = ptrtoint ptr %.ptr418.i to i64 + br label %115 + +115: ; preds = %170, %.lr.ph.i + %.0261414.i = phi ptr [ %.ptr.i, %.lr.ph.i ], [ %140, %170 ] + %.0264413.i = phi ptr [ null, %.lr.ph.i ], [ %.1265.i, %170 ] + %.0267412.i = phi ptr [ null, %.lr.ph.i ], [ %.1268.i, %170 ] + %.0271411.i = phi i32 [ 0, %.lr.ph.i ], [ %.1272.i, %170 ] + %116 = load ptr, ptr %12, align 8, !tbaa !16 + %117 = getelementptr inbounds nuw i8, ptr %116, i64 57 + %118 = load i8, ptr %117, align 1, !tbaa !59 + %.not313.i = icmp eq i8 %118, 0 %spec.select.i = select i1 %.not313.i, i32 536346623, i32 536330239 - %115 = load i32, ptr %109, align 4, !tbaa !58 - %116 = and i32 %115, 8192 - %.not314.i = icmp eq i32 %116, 0 - br i1 %.not314.i, label %118, label %117 + %119 = load i32, ptr %113, align 4, !tbaa !58 + %120 = and i32 %119, 8192 + %.not314.i = icmp eq i32 %120, 0 + br i1 %.not314.i, label %122, label %121 -117: ; preds = %111 +121: ; preds = %115 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 1509, ptr noundef nonnull @.str.22) #9 call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 47, i32 noundef -26112) #9 br label %ssl_tls13_parse_client_hello.exit.thread -118: ; preds = %111 - %119 = ptrtoint ptr %.0261414.i to i64 - %120 = sub i64 %110, %119 - %121 = icmp ugt i64 %120, 3 - br i1 %121, label %123, label %122 +122: ; preds = %115 + %123 = ptrtoint ptr %.0261414.i to i64 + %124 = sub i64 %114, %123 + %125 = icmp ugt i64 %124, 3 + br i1 %125, label %127, label %126 -122: ; preds = %118 +126: ; preds = %122 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1516, ptr noundef nonnull @.str.11, ptr noundef nonnull @__func__.ssl_tls13_parse_client_hello) #9 call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 50, i32 noundef -29440) #9 br label %ssl_tls13_parse_client_hello.exit.thread -123: ; preds = %118 +127: ; preds = %122 %.0.copyload.i324.i = load i16, ptr %.0261414.i, align 1 - %124 = call i16 @llvm.bswap.i16(i16 %.0.copyload.i324.i) - %125 = zext i16 %124 to i32 - %126 = getelementptr inbounds nuw i8, ptr %.0261414.i, i64 2 - %.0.copyload.i325.i = load i16, ptr %126, align 1 - %127 = call i16 @llvm.bswap.i16(i16 %.0.copyload.i325.i) - %128 = zext i16 %127 to i64 - %129 = getelementptr inbounds nuw i8, ptr %.0261414.i, i64 4 - %130 = icmp ule ptr %.0261414.i, %108 - %131 = ptrtoint ptr %129 to i64 - %132 = sub i64 %110, %131 - %133 = icmp uge i64 %132, %128 - %narrow.i331.not.i = and i1 %130, %133 - br i1 %narrow.i331.not.i, label %135, label %134 - -134: ; preds = %123 + %128 = call i16 @llvm.bswap.i16(i16 %.0.copyload.i324.i) + %129 = zext i16 %128 to i32 + %130 = getelementptr inbounds nuw i8, ptr %.0261414.i, i64 2 + %.0.copyload.i325.i = load i16, ptr %130, align 1 + %131 = call i16 @llvm.bswap.i16(i16 %.0.copyload.i325.i) + %132 = zext i16 %131 to i64 + %133 = getelementptr inbounds nuw i8, ptr %.0261414.i, i64 4 + %134 = icmp ule ptr %.0261414.i, %112 + %135 = ptrtoint ptr %133 to i64 + %136 = sub i64 %114, %135 + %137 = icmp uge i64 %136, %132 + %narrow.i331.not.i = and i1 %134, %137 + br i1 %narrow.i331.not.i, label %139, label %138 + +138: ; preds = %127 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1521, ptr noundef nonnull @.str.11, ptr noundef nonnull @__func__.ssl_tls13_parse_client_hello) #9 call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 50, i32 noundef -29440) #9 br label %ssl_tls13_parse_client_hello.exit.thread -135: ; preds = %123 - %136 = getelementptr inbounds nuw i8, ptr %129, i64 %128 - %137 = call i32 @mbedtls_ssl_tls13_check_received_extension(ptr noundef nonnull %0, i32 noundef 1, i32 noundef %125, i32 noundef %spec.select.i) #9 - %.not317.i = icmp eq i32 %137, 0 - br i1 %.not317.i, label %138, label %ssl_tls13_parse_client_hello.exit - -138: ; preds = %135 - switch i16 %124, label %165 [ - i16 0, label %139 - i16 10, label %142 - i16 51, label %145 - i16 43, label %166 - i16 45, label %151 - i16 41, label %154 - i16 16, label %159 - i16 13, label %162 +139: ; preds = %127 + %140 = getelementptr inbounds nuw i8, ptr %133, i64 %132 + %141 = call i32 @mbedtls_ssl_tls13_check_received_extension(ptr noundef nonnull %0, i32 noundef 1, i32 noundef %129, i32 noundef %spec.select.i) #9 + %.not317.i = icmp eq i32 %141, 0 + br i1 %.not317.i, label %142, label %ssl_tls13_parse_client_hello.exit + +142: ; preds = %139 + switch i16 %128, label %169 [ + i16 0, label %143 + i16 10, label %146 + i16 51, label %149 + i16 43, label %170 + i16 45, label %155 + i16 41, label %158 + i16 16, label %163 + i16 13, label %166 ] -139: ; preds = %138 +143: ; preds = %142 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 1534, ptr noundef nonnull @.str.23) #9 - %140 = call i32 @mbedtls_ssl_parse_server_name_ext(ptr noundef nonnull %0, ptr noundef nonnull %129, ptr noundef nonnull %136) #9 - %.not322.i = icmp eq i32 %140, 0 - br i1 %.not322.i, label %166, label %141 + %144 = call i32 @mbedtls_ssl_parse_server_name_ext(ptr noundef nonnull %0, ptr noundef nonnull %133, ptr noundef nonnull %140) #9 + %.not322.i = icmp eq i32 %144, 0 + br i1 %.not322.i, label %170, label %145 -141: ; preds = %139 - call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1539, ptr noundef nonnull @.str.24, i32 noundef %140) #9 +145: ; preds = %143 + call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1539, ptr noundef nonnull @.str.24, i32 noundef %144) #9 br label %ssl_tls13_parse_client_hello.exit -142: ; preds = %138 +146: ; preds = %142 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 1547, ptr noundef nonnull @.str.25) #9 - %143 = call fastcc i32 @ssl_tls13_parse_supported_groups_ext(ptr noundef nonnull %0, ptr noundef nonnull %129, ptr noundef nonnull %136) - %.not321.i = icmp eq i32 %143, 0 - br i1 %.not321.i, label %166, label %144 + %147 = call fastcc i32 @ssl_tls13_parse_supported_groups_ext(ptr noundef nonnull %0, ptr noundef nonnull %133, ptr noundef nonnull %140) + %.not321.i = icmp eq i32 %147, 0 + br i1 %.not321.i, label %170, label %148 -144: ; preds = %142 - call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1559, ptr noundef nonnull @.str.26, i32 noundef %143) #9 +148: ; preds = %146 + call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1559, ptr noundef nonnull @.str.26, i32 noundef %147) #9 br label %ssl_tls13_parse_client_hello.exit.thread -145: ; preds = %138 +149: ; preds = %142 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 1568, ptr noundef nonnull @.str.27) #9 - %146 = call fastcc i32 @ssl_tls13_parse_key_shares_ext(ptr noundef nonnull %0, ptr noundef nonnull %129, ptr noundef nonnull %136) - %147 = icmp eq i32 %146, 1 - br i1 %147, label %.thread.i, label %148 + %150 = call fastcc i32 @ssl_tls13_parse_key_shares_ext(ptr noundef nonnull %0, ptr noundef nonnull %133, ptr noundef nonnull %140) + %151 = icmp eq i32 %150, 1 + br i1 %151, label %.thread.i, label %152 -.thread.i: ; preds = %145 +.thread.i: ; preds = %149 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 2, ptr noundef nonnull @.str, i32 noundef 1580, ptr noundef nonnull @.str.28) #9 - br label %166 + br label %170 -148: ; preds = %145 - %149 = icmp slt i32 %146, 0 - br i1 %149, label %150, label %166 +152: ; preds = %149 + %153 = icmp slt i32 %150, 0 + br i1 %153, label %154, label %170 -150: ; preds = %148 - call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1586, ptr noundef nonnull @.str.29, i32 noundef %146) #9 +154: ; preds = %152 + call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1586, ptr noundef nonnull @.str.29, i32 noundef %150) #9 br label %ssl_tls13_parse_client_hello.exit.thread -151: ; preds = %138 +155: ; preds = %142 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 1600, ptr noundef nonnull @.str.30) #9 - %152 = call fastcc i32 @ssl_tls13_parse_key_exchange_modes_ext(ptr noundef nonnull %0, ptr noundef nonnull %129, ptr noundef nonnull %136) - %.not320.i = icmp eq i32 %152, 0 - br i1 %.not320.i, label %166, label %153 + %156 = call fastcc i32 @ssl_tls13_parse_key_exchange_modes_ext(ptr noundef nonnull %0, ptr noundef nonnull %133, ptr noundef nonnull %140) + %.not320.i = icmp eq i32 %156, 0 + br i1 %.not320.i, label %170, label %157 -153: ; preds = %151 - call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1606, ptr noundef nonnull @.str.31, i32 noundef %152) #9 +157: ; preds = %155 + call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1606, ptr noundef nonnull @.str.31, i32 noundef %156) #9 br label %ssl_tls13_parse_client_hello.exit.thread -154: ; preds = %138 +158: ; preds = %142 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 1614, ptr noundef nonnull @.str.32) #9 - %155 = load i32, ptr %109, align 4, !tbaa !58 - %156 = and i32 %155, 131072 - %157 = icmp eq i32 %156, 0 - br i1 %157, label %158, label %166 + %159 = load i32, ptr %113, align 4, !tbaa !58 + %160 = and i32 %159, 131072 + %161 = icmp eq i32 %160, 0 + br i1 %161, label %162, label %170 -158: ; preds = %154 +162: ; preds = %158 call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 47, i32 noundef -26112) #9 br label %ssl_tls13_parse_client_hello.exit.thread -159: ; preds = %138 +163: ; preds = %142 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 1634, ptr noundef nonnull @.str.33) #9 - %160 = call i32 @mbedtls_ssl_parse_alpn_ext(ptr noundef nonnull %0, ptr noundef nonnull %129, ptr noundef nonnull %136) #9 - %.not319.i = icmp eq i32 %160, 0 - br i1 %.not319.i, label %166, label %161 + %164 = call i32 @mbedtls_ssl_parse_alpn_ext(ptr noundef nonnull %0, ptr noundef nonnull %133, ptr noundef nonnull %140) #9 + %.not319.i = icmp eq i32 %164, 0 + br i1 %.not319.i, label %170, label %165 -161: ; preds = %159 - call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1639, ptr noundef nonnull @.str.34, i32 noundef %160) #9 +165: ; preds = %163 + call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1639, ptr noundef nonnull @.str.34, i32 noundef %164) #9 br label %ssl_tls13_parse_client_hello.exit -162: ; preds = %138 +166: ; preds = %142 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 1647, ptr noundef nonnull @.str.35) #9 - %163 = call i32 @mbedtls_ssl_parse_sig_alg_ext(ptr noundef nonnull %0, ptr noundef nonnull %129, ptr noundef nonnull %136) #9 - %.not318.i = icmp eq i32 %163, 0 - br i1 %.not318.i, label %166, label %164 + %167 = call i32 @mbedtls_ssl_parse_sig_alg_ext(ptr noundef nonnull %0, ptr noundef nonnull %133, ptr noundef nonnull %140) #9 + %.not318.i = icmp eq i32 %167, 0 + br i1 %.not318.i, label %170, label %168 -164: ; preds = %162 - call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1653, ptr noundef nonnull @.str.36, i32 noundef %163) #9 +168: ; preds = %166 + call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1653, ptr noundef nonnull @.str.36, i32 noundef %167) #9 br label %ssl_tls13_parse_client_hello.exit -165: ; preds = %138 - call void @mbedtls_ssl_print_extension(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 1676, i32 noundef 1, i32 noundef %125, ptr noundef nonnull @.str.37, ptr noundef null) #9 - br label %166 - -166: ; preds = %165, %162, %159, %154, %151, %148, %.thread.i, %142, %139, %138 - %.1272.i = phi i32 [ %.0271411.i, %165 ], [ %.0271411.i, %139 ], [ %.0271411.i, %142 ], [ %.0271411.i, %148 ], [ %.0271411.i, %138 ], [ %.0271411.i, %151 ], [ %.0271411.i, %159 ], [ %.0271411.i, %162 ], [ %.0271411.i, %154 ], [ 1, %.thread.i ] - %.1268.i = phi ptr [ %.0267412.i, %165 ], [ %.0267412.i, %139 ], [ %.0267412.i, %142 ], [ %.0267412.i, %148 ], [ %.0267412.i, %138 ], [ %.0267412.i, %151 ], [ %.0267412.i, %159 ], [ %.0267412.i, %162 ], [ %129, %154 ], [ %.0267412.i, %.thread.i ] - %.1265.i = phi ptr [ %.0264413.i, %165 ], [ %.0264413.i, %139 ], [ %.0264413.i, %142 ], [ %.0264413.i, %148 ], [ %.0264413.i, %138 ], [ %.0264413.i, %151 ], [ %.0264413.i, %159 ], [ %.0264413.i, %162 ], [ %136, %154 ], [ %.0264413.i, %.thread.i ] - %167 = icmp ult ptr %136, %.ptr418.i - br i1 %167, label %111, label %._crit_edge.loopexit.i, !llvm.loop !60 - -._crit_edge.loopexit.i: ; preds = %166 - %.pre.i = load i32, ptr %109, align 4, !tbaa !58 - %168 = icmp ne i32 %.1272.i, 0 +169: ; preds = %142 + call void @mbedtls_ssl_print_extension(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 1676, i32 noundef 1, i32 noundef %129, ptr noundef nonnull @.str.37, ptr noundef null) #9 + br label %170 + +170: ; preds = %169, %166, %163, %158, %155, %152, %.thread.i, %146, %143, %142 + %.1272.i = phi i32 [ %.0271411.i, %169 ], [ %.0271411.i, %143 ], [ %.0271411.i, %146 ], [ %.0271411.i, %152 ], [ %.0271411.i, %142 ], [ %.0271411.i, %155 ], [ %.0271411.i, %163 ], [ %.0271411.i, %166 ], [ %.0271411.i, %158 ], [ 1, %.thread.i ] + %.1268.i = phi ptr [ %.0267412.i, %169 ], [ %.0267412.i, %143 ], [ %.0267412.i, %146 ], [ %.0267412.i, %152 ], [ %.0267412.i, %142 ], [ %.0267412.i, %155 ], [ %.0267412.i, %163 ], [ %.0267412.i, %166 ], [ %133, %158 ], [ %.0267412.i, %.thread.i ] + %.1265.i = phi ptr [ %.0264413.i, %169 ], [ %.0264413.i, %143 ], [ %.0264413.i, %146 ], [ %.0264413.i, %152 ], [ %.0264413.i, %142 ], [ %.0264413.i, %155 ], [ %.0264413.i, %163 ], [ %.0264413.i, %166 ], [ %140, %158 ], [ %.0264413.i, %.thread.i ] + %171 = icmp ult ptr %140, %.ptr418.i + br i1 %171, label %115, label %._crit_edge.loopexit.i, !llvm.loop !60 + +._crit_edge.loopexit.i: ; preds = %170 + %.pre.i = load i32, ptr %113, align 4, !tbaa !58 + %.pre444.i = ptrtoint ptr %140 to i64 + %172 = icmp ne i32 %.1272.i, 0 br label %._crit_edge.i -._crit_edge.i: ; preds = %._crit_edge.loopexit.i, %107 - %.pre-phi.i.in = phi ptr [ %136, %._crit_edge.loopexit.i ], [ %.ptr.i, %107 ] - %169 = phi i32 [ %.pre.i, %._crit_edge.loopexit.i ], [ 0, %107 ] - %.0271.lcssa.i = phi i1 [ %168, %._crit_edge.loopexit.i ], [ false, %107 ] - %.0267.lcssa.i = phi ptr [ %.1268.i, %._crit_edge.loopexit.i ], [ null, %107 ] - %.0264.lcssa.i = phi ptr [ %.1265.i, %._crit_edge.loopexit.i ], [ null, %107 ] - %.pre-phi.i = ptrtoint ptr %.pre-phi.i.in to i64 - call void @mbedtls_ssl_print_extensions(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 1684, i32 noundef 1, i32 noundef %169, ptr noundef null) #9 - %170 = sub i64 %.pre-phi.i, %14 - %171 = call i32 @mbedtls_ssl_add_hs_hdr_to_checksum(ptr noundef nonnull %0, i32 noundef 1, i64 noundef %170) #9 - %.not303.i = icmp eq i32 %171, 0 - br i1 %.not303.i, label %173, label %172 - -172: ; preds = %._crit_edge.i - call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1690, ptr noundef nonnull @.str.38, i32 noundef %171) #9 +._crit_edge.i: ; preds = %._crit_edge.loopexit.i, %111 + %.pre-phi.i = phi i64 [ %.pre444.i, %._crit_edge.loopexit.i ], [ %107, %111 ] + %173 = phi i32 [ %.pre.i, %._crit_edge.loopexit.i ], [ 0, %111 ] + %.0271.lcssa.i = phi i1 [ %172, %._crit_edge.loopexit.i ], [ false, %111 ] + %.0267.lcssa.i = phi ptr [ %.1268.i, %._crit_edge.loopexit.i ], [ null, %111 ] + %.0264.lcssa.i = phi ptr [ %.1265.i, %._crit_edge.loopexit.i ], [ null, %111 ] + call void @mbedtls_ssl_print_extensions(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 1684, i32 noundef 1, i32 noundef %173, ptr noundef null) #9 + %174 = sub i64 %.pre-phi.i, %15 + %175 = call i32 @mbedtls_ssl_add_hs_hdr_to_checksum(ptr noundef nonnull %0, i32 noundef 1, i64 noundef %174) #9 + %.not303.i = icmp eq i32 %175, 0 + br i1 %.not303.i, label %177, label %176 + +176: ; preds = %._crit_edge.i + call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1690, ptr noundef nonnull @.str.38, i32 noundef %175) #9 br label %ssl_tls13_parse_client_hello.exit -173: ; preds = %._crit_edge.i - %174 = load i32, ptr %109, align 4, !tbaa !58 - %175 = and i32 %174, 8192 - %.not304.i = icmp eq i32 %175, 0 - %176 = getelementptr inbounds nuw i8, ptr %13, i64 24 - %177 = load ptr, ptr %176, align 8, !tbaa !62 - br i1 %.not304.i, label %186, label %178 - -178: ; preds = %173 - %179 = ptrtoint ptr %.0267.lcssa.i to i64 - %180 = sub i64 %179, %14 - %181 = call i32 %177(ptr noundef nonnull %0, ptr noundef %9, i64 noundef %180) #9 - %.not306.i = icmp eq i32 %181, 0 - br i1 %.not306.i, label %183, label %182 - -182: ; preds = %178 - call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1706, ptr noundef nonnull @.str.39, i32 noundef %181) #9 +177: ; preds = %._crit_edge.i + %178 = load i32, ptr %113, align 4, !tbaa !58 + %179 = and i32 %178, 8192 + %.not304.i = icmp eq i32 %179, 0 + %180 = getelementptr inbounds nuw i8, ptr %13, i64 24 + %181 = load ptr, ptr %180, align 8, !tbaa !62 + br i1 %.not304.i, label %190, label %182 + +182: ; preds = %177 + %183 = ptrtoint ptr %.0267.lcssa.i to i64 + %184 = sub i64 %183, %15 + %185 = call i32 %181(ptr noundef nonnull %0, ptr noundef %9, i64 noundef %184) #9 + %.not306.i = icmp eq i32 %185, 0 + br i1 %.not306.i, label %187, label %186 + +186: ; preds = %182 + call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1706, ptr noundef nonnull @.str.39, i32 noundef %185) #9 br label %ssl_tls13_parse_client_hello.exit -183: ; preds = %178 - %184 = call fastcc i32 @ssl_tls13_parse_pre_shared_key_ext(ptr noundef nonnull %0, ptr noundef %.0267.lcssa.i, ptr noundef %.0264.lcssa.i, ptr noundef nonnull %36, ptr noundef nonnull %44, ptr noundef %4) - switch i32 %184, label %185 [ - i32 0, label %189 +187: ; preds = %182 + %188 = call fastcc i32 @ssl_tls13_parse_pre_shared_key_ext(ptr noundef nonnull %0, ptr noundef %.0267.lcssa.i, ptr noundef %.0264.lcssa.i, ptr noundef nonnull %37, ptr noundef nonnull %45, ptr noundef %4) + switch i32 %188, label %189 [ + i32 0, label %193 i32 -27776, label %..thread341_crit_edge.i ] -..thread341_crit_edge.i: ; preds = %183 +..thread341_crit_edge.i: ; preds = %187 %.phi.trans.insert.i = getelementptr inbounds nuw i8, ptr %4, i64 4 %.pre443.i = load i32, ptr %.phi.trans.insert.i, align 4 br label %.thread341.i -185: ; preds = %183 - call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1719, ptr noundef nonnull @.str.40, i32 noundef %184) #9 +189: ; preds = %187 + call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1719, ptr noundef nonnull @.str.40, i32 noundef %188) #9 br label %ssl_tls13_parse_client_hello.exit -186: ; preds = %173 - %187 = call i32 %177(ptr noundef nonnull %0, ptr noundef %9, i64 noundef %170) #9 - %.not305.i = icmp eq i32 %187, 0 - br i1 %.not305.i, label %.thread341.i, label %188 +190: ; preds = %177 + %191 = call i32 %181(ptr noundef nonnull %0, ptr noundef %9, i64 noundef %174) #9 + %.not305.i = icmp eq i32 %191, 0 + br i1 %.not305.i, label %.thread341.i, label %192 -188: ; preds = %186 - call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1727, ptr noundef nonnull @.str.39, i32 noundef %187) #9 +192: ; preds = %190 + call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1727, ptr noundef nonnull @.str.39, i32 noundef %191) #9 br label %ssl_tls13_parse_client_hello.exit -189: ; preds = %183 - %190 = getelementptr inbounds nuw i8, ptr %4, i64 4 - %191 = load i32, ptr %190, align 4 - %192 = icmp eq i32 %191, 4 - br i1 %192, label %193, label %.thread341.i +193: ; preds = %187 + %194 = getelementptr inbounds nuw i8, ptr %4, i64 4 + %195 = load i32, ptr %194, align 4 + %196 = icmp eq i32 %195, 4 + br i1 %196, label %197, label %.thread341.i -193: ; preds = %189 - %194 = getelementptr inbounds nuw i8, ptr %13, i64 56 - store i8 4, ptr %194, align 8, !tbaa !63 +197: ; preds = %193 + %198 = getelementptr inbounds nuw i8, ptr %13, i64 56 + store i8 4, ptr %198, align 8, !tbaa !63 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 2, ptr noundef nonnull @.str, i32 noundef 1751, ptr noundef nonnull @.str.41) #9 - br label %207 + br label %211 -.thread341.i: ; preds = %189, %186, %..thread341_crit_edge.i - %195 = phi i32 [ %191, %189 ], [ %.pre443.i, %..thread341_crit_edge.i ], [ 0, %186 ] - %196 = phi i1 [ true, %189 ], [ false, %..thread341_crit_edge.i ], [ false, %186 ] +.thread341.i: ; preds = %193, %190, %..thread341_crit_edge.i + %199 = phi i32 [ %195, %193 ], [ %.pre443.i, %..thread341_crit_edge.i ], [ 0, %190 ] + %200 = phi i1 [ true, %193 ], [ false, %..thread341_crit_edge.i ], [ false, %190 ] %.val.i.i = load ptr, ptr %0, align 8, !tbaa !40 - %197 = getelementptr i8, ptr %.val.i.i, i64 32 - %.val.val.i.i = load i32, ptr %197, align 8, !tbaa !64 - %198 = and i32 %.val.val.i.i, 2 - %.not.i.i = icmp eq i32 %198, 0 + %201 = getelementptr i8, ptr %.val.i.i, i64 32 + %.val.val.i.i = load i32, ptr %201, align 8, !tbaa !64 + %202 = and i32 %.val.val.i.i, 2 + %.not.i.i = icmp eq i32 %202, 0 br i1 %.not.i.i, label %ssl_tls13_key_exchange_is_ephemeral_available.exit.thread.i, label %ssl_tls13_key_exchange_is_ephemeral_available.exit.i ssl_tls13_key_exchange_is_ephemeral_available.exit.i: ; preds = %.thread341.i %.val2.i.i = load ptr, ptr %12, align 8, !tbaa !16 - %199 = getelementptr i8, ptr %.val2.i.i, i64 3276 - %.val2.val.i.i = load i32, ptr %199, align 4, !tbaa !58 - %200 = and i32 %.val2.val.i.i, 4194352 - %.not.i = icmp eq i32 %200, 4194352 - br i1 %.not.i, label %201, label %ssl_tls13_key_exchange_is_ephemeral_available.exit.thread.i - -201: ; preds = %ssl_tls13_key_exchange_is_ephemeral_available.exit.i - %202 = getelementptr inbounds nuw i8, ptr %13, i64 56 - store i8 2, ptr %202, align 8, !tbaa !63 + %203 = getelementptr i8, ptr %.val2.i.i, i64 3276 + %.val2.val.i.i = load i32, ptr %203, align 4, !tbaa !58 + %204 = and i32 %.val2.val.i.i, 4194352 + %.not.i = icmp eq i32 %204, 4194352 + br i1 %.not.i, label %205, label %ssl_tls13_key_exchange_is_ephemeral_available.exit.thread.i + +205: ; preds = %ssl_tls13_key_exchange_is_ephemeral_available.exit.i + %206 = getelementptr inbounds nuw i8, ptr %13, i64 56 + store i8 2, ptr %206, align 8, !tbaa !63 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 2, ptr noundef nonnull @.str, i32 noundef 1758, ptr noundef nonnull @.str.42) #9 - br label %207 + br label %211 ssl_tls13_key_exchange_is_ephemeral_available.exit.thread.i: ; preds = %ssl_tls13_key_exchange_is_ephemeral_available.exit.i, %.thread341.i - %203 = icmp eq i32 %195, 1 - %or.cond5.i = select i1 %196, i1 %203, i1 false - br i1 %or.cond5.i, label %204, label %206 + %207 = icmp eq i32 %199, 1 + %or.cond5.i = select i1 %200, i1 %207, i1 false + br i1 %or.cond5.i, label %208, label %210 -204: ; preds = %ssl_tls13_key_exchange_is_ephemeral_available.exit.thread.i - %205 = getelementptr inbounds nuw i8, ptr %13, i64 56 - store i8 1, ptr %205, align 8, !tbaa !63 +208: ; preds = %ssl_tls13_key_exchange_is_ephemeral_available.exit.thread.i + %209 = getelementptr inbounds nuw i8, ptr %13, i64 56 + store i8 1, ptr %209, align 8, !tbaa !63 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 2, ptr noundef nonnull @.str, i32 noundef 1765, ptr noundef nonnull @.str.43) #9 - br label %207 + br label %211 -206: ; preds = %ssl_tls13_key_exchange_is_ephemeral_available.exit.thread.i +210: ; preds = %ssl_tls13_key_exchange_is_ephemeral_available.exit.thread.i call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1771, ptr noundef nonnull @.str.44) #9 call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 109, i32 noundef -26112) #9 br label %ssl_tls13_parse_client_hello.exit.thread -207: ; preds = %204, %201, %193 - %208 = getelementptr inbounds nuw i8, ptr %13, i64 56 - %209 = load i8, ptr %208, align 8, !tbaa !63 - %210 = and i8 %209, 5 - %.not309.i = icmp eq i8 %210, 0 - br i1 %.not309.i, label %222, label %211 - -211: ; preds = %207 - %212 = getelementptr inbounds nuw i8, ptr %4, i64 8 - %213 = load ptr, ptr %212, align 8, !tbaa !65 - store ptr %213, ptr %86, align 8, !tbaa !53 - %214 = load i32, ptr %213, align 8, !tbaa !54 - %215 = load ptr, ptr %69, align 8, !tbaa !17 - %216 = getelementptr inbounds nuw i8, ptr %215, i64 16 - store i32 %214, ptr %216, align 8, !tbaa !56 - %217 = getelementptr inbounds nuw i8, ptr %213, i64 8 - %218 = load ptr, ptr %217, align 8, !tbaa !57 - call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 2, ptr noundef nonnull @.str, i32 noundef 1785, ptr noundef nonnull @.str.45, i32 noundef %214, ptr noundef %218) #9 - %219 = load i32, ptr %4, align 8, !tbaa !67 - %220 = icmp eq i32 %219, 1 - br i1 %220, label %221, label %222 - -221: ; preds = %211 +211: ; preds = %208, %205, %197 + %212 = getelementptr inbounds nuw i8, ptr %13, i64 56 + %213 = load i8, ptr %212, align 8, !tbaa !63 + %214 = and i8 %213, 5 + %.not309.i = icmp eq i8 %214, 0 + br i1 %.not309.i, label %226, label %215 + +215: ; preds = %211 + %216 = getelementptr inbounds nuw i8, ptr %4, i64 8 + %217 = load ptr, ptr %216, align 8, !tbaa !65 + store ptr %217, ptr %88, align 8, !tbaa !53 + %218 = load i32, ptr %217, align 8, !tbaa !54 + %219 = load ptr, ptr %71, align 8, !tbaa !17 + %220 = getelementptr inbounds nuw i8, ptr %219, i64 16 + store i32 %218, ptr %220, align 8, !tbaa !56 + %221 = getelementptr inbounds nuw i8, ptr %217, i64 8 + %222 = load ptr, ptr %221, align 8, !tbaa !57 + call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 2, ptr noundef nonnull @.str, i32 noundef 1785, ptr noundef nonnull @.str.45, i32 noundef %218, ptr noundef %222) #9 + %223 = load i32, ptr %4, align 8, !tbaa !67 + %224 = icmp eq i32 %223, 1 + br i1 %224, label %225, label %226 + +225: ; preds = %215 store i8 1, ptr %13, align 8, !tbaa !68 - br label %222 + br label %226 -222: ; preds = %221, %211, %207 - %223 = load i8, ptr %208, align 8, !tbaa !63 - %.not310.i = icmp ne i8 %223, 1 +226: ; preds = %225, %215, %211 + %227 = load i8, ptr %212, align 8, !tbaa !63 + %.not310.i = icmp ne i8 %227, 1 %narrow.i = select i1 %.not310.i, i1 %.0271.lcssa.i, i1 false %.0274.i = zext i1 %narrow.i to i32 - %224 = load ptr, ptr %86, align 8, !tbaa !53 - call void @mbedtls_ssl_optimize_checksum(ptr noundef nonnull %0, ptr noundef %224) #9 + %228 = load ptr, ptr %88, align 8, !tbaa !53 + call void @mbedtls_ssl_optimize_checksum(ptr noundef nonnull %0, ptr noundef %228) #9 br label %ssl_tls13_parse_client_hello.exit.thread31 -ssl_tls13_parse_client_hello.exit.thread: ; preds = %16, %23, %31, %38, %42, %52, %57, %64, %80, %89, %99, %106, %206, %158, %153, %150, %144, %134, %122, %117 - %.0260.i.ph = phi i32 [ -26112, %117 ], [ -29440, %122 ], [ -29440, %134 ], [ %143, %144 ], [ %146, %150 ], [ %152, %153 ], [ -26112, %158 ], [ -26112, %206 ], [ -29440, %106 ], [ -26112, %99 ], [ -28160, %89 ], [ -29440, %80 ], [ %62, %64 ], [ %55, %57 ], [ -29440, %52 ], [ -29440, %42 ], [ -29440, %38 ], [ -29440, %31 ], [ -28288, %23 ], [ -29440, %16 ] +ssl_tls13_parse_client_hello.exit.thread: ; preds = %17, %24, %32, %39, %43, %54, %59, %66, %82, %91, %101, %110, %210, %162, %157, %154, %148, %138, %126, %121 + %.0260.i.ph = phi i32 [ -26112, %121 ], [ -29440, %126 ], [ -29440, %138 ], [ %147, %148 ], [ %150, %154 ], [ %156, %157 ], [ -26112, %162 ], [ -26112, %210 ], [ -29440, %110 ], [ -26112, %101 ], [ -28160, %91 ], [ -29440, %82 ], [ %64, %66 ], [ %57, %59 ], [ -29440, %54 ], [ -29440, %43 ], [ -29440, %39 ], [ -29440, %32 ], [ -28288, %24 ], [ -29440, %17 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #9 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #9 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #9 br label %ssl_tls13_postprocess_client_hello.exit.thread -ssl_tls13_parse_client_hello.exit.thread31: ; preds = %222, %58, %65 - %.0260.i.ph30 = phi i32 [ 2, %65 ], [ 2, %58 ], [ %.0274.i, %222 ] +ssl_tls13_parse_client_hello.exit.thread31: ; preds = %226, %60, %67 + %.0260.i.ph30 = phi i32 [ 2, %67 ], [ 2, %60 ], [ %.0274.i, %226 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #9 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #9 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #9 - br label %226 + br label %230 -ssl_tls13_parse_client_hello.exit: ; preds = %135, %67, %141, %161, %164, %172, %182, %185, %188 - %.0260.i = phi i32 [ %171, %172 ], [ %181, %182 ], [ %184, %185 ], [ %187, %188 ], [ %76, %67 ], [ %163, %164 ], [ %160, %161 ], [ %140, %141 ], [ %137, %135 ] +ssl_tls13_parse_client_hello.exit: ; preds = %139, %69, %145, %165, %168, %176, %186, %189, %192 + %.0260.i = phi i32 [ %175, %176 ], [ %185, %186 ], [ %188, %189 ], [ %191, %192 ], [ %78, %69 ], [ %167, %168 ], [ %164, %165 ], [ %144, %145 ], [ %141, %139 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #9 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #9 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #9 - %225 = icmp slt i32 %.0260.i, 0 - br i1 %225, label %ssl_tls13_postprocess_client_hello.exit.thread, label %226 + %229 = icmp slt i32 %.0260.i, 0 + br i1 %229, label %ssl_tls13_postprocess_client_hello.exit.thread, label %230 -226: ; preds = %ssl_tls13_parse_client_hello.exit.thread31, %ssl_tls13_parse_client_hello.exit +230: ; preds = %ssl_tls13_parse_client_hello.exit.thread31, %ssl_tls13_parse_client_hello.exit %.0260.i33 = phi i32 [ %.0260.i.ph30, %ssl_tls13_parse_client_hello.exit.thread31 ], [ %.0260.i, %ssl_tls13_parse_client_hello.exit ] - %227 = icmp eq i32 %.0260.i33, 2 - %228 = load ptr, ptr %0, align 8, !tbaa !40 - br i1 %227, label %229, label %238 - -229: ; preds = %226 - %230 = getelementptr inbounds nuw i8, ptr %228, i64 4 - %231 = load i32, ptr %230, align 4, !tbaa !69 - %232 = icmp ult i32 %231, 772 - br i1 %232, label %mbedtls_ssl_conf_is_tls12_enabled.exit, label %mbedtls_ssl_conf_is_tls12_enabled.exit.thread - -mbedtls_ssl_conf_is_tls12_enabled.exit: ; preds = %229 - %233 = load i32, ptr %228, align 8, !tbaa !70 - %234 = icmp ult i32 %233, 771 - br i1 %234, label %mbedtls_ssl_conf_is_tls12_enabled.exit.thread, label %235 - -mbedtls_ssl_conf_is_tls12_enabled.exit.thread: ; preds = %229, %mbedtls_ssl_conf_is_tls12_enabled.exit + %231 = icmp eq i32 %.0260.i33, 2 + %232 = load ptr, ptr %0, align 8, !tbaa !40 + br i1 %231, label %233, label %242 + +233: ; preds = %230 + %234 = getelementptr inbounds nuw i8, ptr %232, i64 4 + %235 = load i32, ptr %234, align 4, !tbaa !69 + %236 = icmp ult i32 %235, 772 + br i1 %236, label %mbedtls_ssl_conf_is_tls12_enabled.exit, label %mbedtls_ssl_conf_is_tls12_enabled.exit.thread + +mbedtls_ssl_conf_is_tls12_enabled.exit: ; preds = %233 + %237 = load i32, ptr %232, align 8, !tbaa !70 + %238 = icmp ult i32 %237, 771 + br i1 %238, label %mbedtls_ssl_conf_is_tls12_enabled.exit.thread, label %239 + +mbedtls_ssl_conf_is_tls12_enabled.exit.thread: ; preds = %233, %mbedtls_ssl_conf_is_tls12_enabled.exit call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1980, ptr noundef nonnull @.str.9) #9 call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 70, i32 noundef -28288) #9 - br label %253 - -235: ; preds = %mbedtls_ssl_conf_is_tls12_enabled.exit - %236 = getelementptr inbounds nuw i8, ptr %0, i64 316 - store i32 1, ptr %236, align 4, !tbaa !71 - %237 = getelementptr inbounds nuw i8, ptr %0, i64 20 - store i32 771, ptr %237, align 4, !tbaa !48 - br label %253 - -238: ; preds = %226 - %239 = getelementptr inbounds nuw i8, ptr %228, i64 376 - %240 = load ptr, ptr %239, align 8, !tbaa !72 - %.not.i27 = icmp eq ptr %240, null - br i1 %.not.i27, label %244, label %241 - -241: ; preds = %238 - %242 = call i32 %240(ptr noundef nonnull %0) #9 - %.not16.i = icmp eq i32 %242, 0 - br i1 %.not16.i, label %244, label %243 - -243: ; preds = %241 - call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1901, ptr noundef nonnull @.str.81, i32 noundef %242) #9 + br label %257 + +239: ; preds = %mbedtls_ssl_conf_is_tls12_enabled.exit + %240 = getelementptr inbounds nuw i8, ptr %0, i64 316 + store i32 1, ptr %240, align 4, !tbaa !71 + %241 = getelementptr inbounds nuw i8, ptr %0, i64 20 + store i32 771, ptr %241, align 4, !tbaa !48 + br label %257 + +242: ; preds = %230 + %243 = getelementptr inbounds nuw i8, ptr %232, i64 376 + %244 = load ptr, ptr %243, align 8, !tbaa !72 + %.not.i27 = icmp eq ptr %244, null + br i1 %.not.i27, label %248, label %245 + +245: ; preds = %242 + %246 = call i32 %244(ptr noundef nonnull %0) #9 + %.not16.i = icmp eq i32 %246, 0 + br i1 %.not16.i, label %248, label %247 + +247: ; preds = %245 + call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1901, ptr noundef nonnull @.str.81, i32 noundef %246) #9 br label %ssl_tls13_postprocess_client_hello.exit.thread -244: ; preds = %241, %238 - %245 = load ptr, ptr %12, align 8, !tbaa !16 - %246 = getelementptr inbounds nuw i8, ptr %245, i64 3496 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %246, i8 0, i64 16, i1 false) - %247 = call i32 @mbedtls_ssl_tls13_key_schedule_stage_early(ptr noundef nonnull %0) #9 - %.not17.i = icmp eq i32 %247, 0 - br i1 %.not17.i, label %ssl_tls13_postprocess_client_hello.exit, label %248 +248: ; preds = %245, %242 + %249 = load ptr, ptr %12, align 8, !tbaa !16 + %250 = getelementptr inbounds nuw i8, ptr %249, i64 3496 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %250, i8 0, i64 16, i1 false) + %251 = call i32 @mbedtls_ssl_tls13_key_schedule_stage_early(ptr noundef nonnull %0) #9 + %.not17.i = icmp eq i32 %251, 0 + br i1 %.not17.i, label %ssl_tls13_postprocess_client_hello.exit, label %252 -248: ; preds = %244 - call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1912, ptr noundef nonnull @.str.82, i32 noundef %247) #9 +252: ; preds = %248 + call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1912, ptr noundef nonnull @.str.82, i32 noundef %251) #9 br label %ssl_tls13_postprocess_client_hello.exit.thread -ssl_tls13_postprocess_client_hello.exit: ; preds = %244 - %249 = icmp eq i32 %.0260.i33, 0 - %250 = getelementptr inbounds nuw i8, ptr %0, i64 8 - br i1 %249, label %251, label %252 +ssl_tls13_postprocess_client_hello.exit: ; preds = %248 + %253 = icmp eq i32 %.0260.i33, 0 + %254 = getelementptr inbounds nuw i8, ptr %0, i64 8 + br i1 %253, label %255, label %256 -251: ; preds = %ssl_tls13_postprocess_client_hello.exit - store i32 2, ptr %250, align 8, !tbaa !3 +255: ; preds = %ssl_tls13_postprocess_client_hello.exit + store i32 2, ptr %254, align 8, !tbaa !3 br label %ssl_tls13_postprocess_client_hello.exit.thread -252: ; preds = %ssl_tls13_postprocess_client_hello.exit - store i32 18, ptr %250, align 8, !tbaa !3 +256: ; preds = %ssl_tls13_postprocess_client_hello.exit + store i32 18, ptr %254, align 8, !tbaa !3 br label %ssl_tls13_postprocess_client_hello.exit.thread -ssl_tls13_postprocess_client_hello.exit.thread: ; preds = %248, %243, %ssl_tls13_parse_client_hello.exit.thread, %251, %252, %ssl_tls13_parse_client_hello.exit, %1 - %.020 = phi i32 [ %7, %1 ], [ %.0260.i, %ssl_tls13_parse_client_hello.exit ], [ 0, %251 ], [ 0, %252 ], [ %.0260.i.ph, %ssl_tls13_parse_client_hello.exit.thread ], [ %247, %248 ], [ %242, %243 ] +ssl_tls13_postprocess_client_hello.exit.thread: ; preds = %252, %247, %ssl_tls13_parse_client_hello.exit.thread, %255, %256, %ssl_tls13_parse_client_hello.exit, %1 + %.020 = phi i32 [ %7, %1 ], [ %.0260.i, %ssl_tls13_parse_client_hello.exit ], [ 0, %255 ], [ 0, %256 ], [ %.0260.i.ph, %ssl_tls13_parse_client_hello.exit.thread ], [ %251, %252 ], [ %246, %247 ] call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef %0, i32 noundef 2, ptr noundef nonnull @.str, i32 noundef 2003, ptr noundef nonnull @.str.10) #9 - br label %253 + br label %257 -253: ; preds = %ssl_tls13_postprocess_client_hello.exit.thread, %235, %mbedtls_ssl_conf_is_tls12_enabled.exit.thread - %.0 = phi i32 [ %.020, %ssl_tls13_postprocess_client_hello.exit.thread ], [ 0, %235 ], [ -28288, %mbedtls_ssl_conf_is_tls12_enabled.exit.thread ] +257: ; preds = %ssl_tls13_postprocess_client_hello.exit.thread, %239, %mbedtls_ssl_conf_is_tls12_enabled.exit.thread + %.0 = phi i32 [ %.020, %ssl_tls13_postprocess_client_hello.exit.thread ], [ 0, %239 ], [ -28288, %mbedtls_ssl_conf_is_tls12_enabled.exit.thread ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #9 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #9 ret i32 %.0 diff --git a/bench/linux/optimized/decompress_unlzo.ll b/bench/linux/optimized/decompress_unlzo.ll index 0794c02b913..e555fe1717b 100644 --- a/bench/linux/optimized/decompress_unlzo.ll +++ b/bench/linux/optimized/decompress_unlzo.ll @@ -15,72 +15,73 @@ target triple = "x86_64-unknown-linux-gnu" @.str.8 = private unnamed_addr constant [26 x i8] c"Compressed data violation\00", align 1 ; Function Attrs: cold fn_ret_thunk_extern inlinehint nofree norecurse nosync nounwind null_pointer_is_valid optsize memory(argmem: readwrite) -define dso_local noundef range(i64 0, 2) i64 @parse_header(ptr noundef readonly captures(none) %0, ptr noundef writeonly captures(none) %1, i64 noundef %2) local_unnamed_addr #0 section ".init.text" align 16 { - %4 = icmp slt i64 %2, 33 - br i1 %4, label %.loopexit, label %5 - -5: ; preds = %3 - %6 = getelementptr i8, ptr %0, i64 9 - br label %7 - -7: ; preds = %14, %5 - %8 = phi i64 [ 0, %5 ], [ %16, %14 ] - %9 = phi ptr [ %0, %5 ], [ %15, %14 ] - %10 = load i8, ptr %9, align 1 - %11 = getelementptr [9 x i8], ptr @lzop_magic, i64 0, i64 %8 - %12 = load i8, ptr %11, align 1 - %13 = icmp eq i8 %10, %12 - br i1 %13, label %14, label %.loopexit - -14: ; preds = %7 - %15 = getelementptr i8, ptr %9, i64 1 - %16 = add nuw nsw i64 %8, 1 - %17 = icmp eq i64 %16, 9 - br i1 %17, label %18, label %7, !llvm.loop !5 - -18: ; preds = %14 - %19 = load i16, ptr %6, align 1 - %20 = tail call i16 @llvm.bswap.i16(i16 %19) - %21 = icmp ugt i16 %20, 2367 - %22 = select i1 %21, i64 8, i64 7 - %23 = getelementptr i8, ptr %6, i64 %22 - %24 = load i32, ptr %23, align 1 - %25 = and i32 %24, 524288 - %26 = icmp eq i32 %25, 0 - %27 = select i1 %26, i64 4, i64 8 - %28 = add nuw nsw i64 %27, %22 - %29 = add nuw nsw i64 %28, 9 - %gepdiff = sub nsw i64 %2, %29 - %30 = icmp slt i64 %gepdiff, 13 - br i1 %30, label %.loopexit, label %31 - -31: ; preds = %18 - %.neg8 = select i1 %26, i64 -4, i64 -8 - %.neg = select i1 %21, i64 -8, i64 -7 - %32 = getelementptr i8, ptr %23, i64 %27 - %.neg7 = select i1 %21, i64 -12, i64 -8 - %33 = select i1 %21, i64 12, i64 8 - %34 = getelementptr i8, ptr %32, i64 %33 - %35 = load i8, ptr %34, align 1 - %36 = zext i8 %35 to i64 - %.neg5 = add nsw i64 %2, -10 - %.neg6 = add i64 %.neg5, %.neg - %reass.sub = add i64 %.neg6, %.neg7 - %gepdiff2 = add i64 %reass.sub, %.neg8 - %37 = add nuw nsw i64 %36, 4 - %38 = icmp slt i64 %gepdiff2, %37 - br i1 %38, label %.loopexit, label %39 - -39: ; preds = %31 - %40 = or disjoint i64 %33, 1 - %41 = add nuw nsw i64 %40, %29 - %42 = add nuw nsw i64 %41, %37 - store i64 %42, ptr %1, align 8 +define dso_local noundef range(i64 0, 2) i64 @parse_header(ptr noundef %0, ptr noundef writeonly captures(none) %1, i64 noundef %2) local_unnamed_addr #0 section ".init.text" align 16 { + %4 = getelementptr i8, ptr %0, i64 %2 + %5 = icmp slt i64 %2, 33 + br i1 %5, label %.loopexit, label %6 + +6: ; preds = %3 + %7 = getelementptr i8, ptr %0, i64 9 + br label %8 + +8: ; preds = %15, %6 + %9 = phi i64 [ 0, %6 ], [ %17, %15 ] + %10 = phi ptr [ %0, %6 ], [ %16, %15 ] + %11 = load i8, ptr %10, align 1 + %12 = getelementptr [9 x i8], ptr @lzop_magic, i64 0, i64 %9 + %13 = load i8, ptr %12, align 1 + %14 = icmp eq i8 %11, %13 + br i1 %14, label %15, label %.loopexit + +15: ; preds = %8 + %16 = getelementptr i8, ptr %10, i64 1 + %17 = add nuw nsw i64 %9, 1 + %18 = icmp eq i64 %17, 9 + br i1 %18, label %19, label %8, !llvm.loop !5 + +19: ; preds = %15 + %20 = load i16, ptr %7, align 1 + %21 = tail call i16 @llvm.bswap.i16(i16 %20) + %22 = icmp ugt i16 %21, 2367 + %.neg5 = select i1 %22, i64 -8, i64 -7 + %23 = select i1 %22, i64 8, i64 7 + %24 = getelementptr i8, ptr %7, i64 %23 + %25 = load i32, ptr %24, align 1 + %26 = and i32 %25, 524288 + %27 = icmp eq i32 %26, 0 + %.neg = select i1 %27, i64 -4, i64 -8 + %.neg2 = add nsw i64 %2, -9 + %.neg4 = add i64 %.neg2, %.neg5 + %gepdiff = add i64 %.neg4, %.neg + %28 = icmp slt i64 %gepdiff, 13 + br i1 %28, label %.loopexit, label %29 + +29: ; preds = %19 + %30 = select i1 %27, i64 4, i64 8 + %31 = getelementptr i8, ptr %24, i64 %30 + %32 = ptrtoint ptr %4 to i64 + %33 = select i1 %22, i64 12, i64 8 + %34 = getelementptr i8, ptr %31, i64 %33 + %35 = getelementptr i8, ptr %34, i64 1 + %36 = load i8, ptr %34, align 1 + %37 = zext i8 %36 to i64 + %38 = ptrtoint ptr %35 to i64 + %39 = sub i64 %32, %38 + %40 = add nuw nsw i64 %37, 4 + %41 = icmp slt i64 %39, %40 + br i1 %41, label %.loopexit, label %42 + +42: ; preds = %29 + %43 = getelementptr i8, ptr %35, i64 %40 + %44 = ptrtoint ptr %43 to i64 + %45 = ptrtoint ptr %0 to i64 + %46 = sub i64 %44, %45 + store i64 %46, ptr %1, align 8 br label %.loopexit -.loopexit: ; preds = %7, %39, %31, %18, %3 - %43 = phi i64 [ 1, %39 ], [ 0, %3 ], [ 0, %18 ], [ 0, %31 ], [ 0, %7 ] - ret i64 %43 +.loopexit: ; preds = %8, %42, %29, %19, %3 + %47 = phi i64 [ 1, %42 ], [ 0, %3 ], [ 0, %19 ], [ 0, %29 ], [ 0, %8 ] + ret i64 %47 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) diff --git a/bench/linux/optimized/nf_nat_helper.ll b/bench/linux/optimized/nf_nat_helper.ll index c73cec07771..da6b6650a20 100644 --- a/bench/linux/optimized/nf_nat_helper.ll +++ b/bench/linux/optimized/nf_nat_helper.ll @@ -149,88 +149,88 @@ define internal fastcc void @mangle_contents(ptr noundef %0, i32 noundef %1, i32 %26 = getelementptr inbounds nuw i8, ptr %0, i64 184 %27 = load i32, ptr %26, align 8 %28 = zext i32 %27 to i64 - %29 = add nuw nsw i64 %20, %18 - %30 = add nuw nsw i64 %29, %24 - %31 = add nuw nsw i64 %30, %16 - %gepdiff = sub nsw i64 %28, %31 - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %23, ptr align 1 %25, i64 %gepdiff, i1 false) + %29 = getelementptr i8, ptr %13, i64 %28 + %30 = ptrtoint ptr %29 to i64 + %31 = ptrtoint ptr %25 to i64 + %32 = sub i64 %30, %31 + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %23, ptr align 1 %25, i64 %32, i1 false) tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %21, ptr align 1 %4, i64 %22, i1 false) - %32 = icmp ugt i32 %5, %3 - br i1 %32, label %33, label %36 + %33 = icmp ugt i32 %5, %3 + br i1 %33, label %34, label %37 -33: ; preds = %11 - %34 = sub nuw i32 %5, %3 - %35 = tail call ptr @skb_put(ptr noundef %0, i32 noundef %34) #5 - br label %53 +34: ; preds = %11 + %35 = sub nuw i32 %5, %3 + %36 = tail call ptr @skb_put(ptr noundef %0, i32 noundef %35) #5 + br label %54 -36: ; preds = %11 - %37 = load i32, ptr %7, align 4 - %38 = icmp eq i32 %37, 0 - br i1 %38, label %40, label %39, !prof !5 +37: ; preds = %11 + %38 = load i32, ptr %7, align 4 + %39 = icmp eq i32 %38, 0 + br i1 %39, label %41, label %40, !prof !5 -39: ; preds = %36 +40: ; preds = %37 tail call void asm sideeffect "414: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 414b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 414) #5, !srcloc !8 tail call void asm sideeffect "1:\09.byte 0x0f, 0x0b\0A.pushsection __bug_table,\22aw\22\0A2:\09.long 1b - .\09# bug_entry::bug_addr\0A\09.long ${0:c} - .\09# bug_entry::file\0A\09.word ${1:c}\09# bug_entry::line\0A\09.word ${2:c}\09# bug_entry::flags\0A\09.org 2b+${3:c}\0A.popsection\0A998:\0A\09.pushsection .discard.reachable\0A\09.long 998b\0A\09.popsection\0A\09", "i,i,i,i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @.str.1, i32 3061, i32 2305, i64 12) #5, !srcloc !9 tail call void asm sideeffect "415: nop\0A\09.pushsection .discard.instr_end\0A\09.long 415b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 415) #5, !srcloc !10 - br label %53 - -40: ; preds = %36 - %41 = getelementptr inbounds nuw i8, ptr %0, i64 112 - %42 = load i32, ptr %41, align 8 - %43 = sub i32 %5, %3 - %44 = add i32 %42, %43 - store i32 %44, ptr %41, align 8 - %45 = getelementptr inbounds nuw i8, ptr %0, i64 200 - %46 = load ptr, ptr %45, align 8 - %47 = load ptr, ptr %12, align 8 - %48 = ptrtoint ptr %46 to i64 + br label %54 + +41: ; preds = %37 + %42 = getelementptr inbounds nuw i8, ptr %0, i64 112 + %43 = load i32, ptr %42, align 8 + %44 = sub i32 %5, %3 + %45 = add i32 %43, %44 + store i32 %45, ptr %42, align 8 + %46 = getelementptr inbounds nuw i8, ptr %0, i64 200 + %47 = load ptr, ptr %46, align 8 + %48 = load ptr, ptr %12, align 8 %49 = ptrtoint ptr %47 to i64 - %50 = sub i64 %48, %49 - %51 = trunc i64 %50 to i32 - %52 = add i32 %44, %51 - store i32 %52, ptr %26, align 8 - br label %53 - -53: ; preds = %40, %39, %33 - %54 = getelementptr inbounds nuw i8, ptr %0, i64 104 - %55 = load i64, ptr %54, align 8 - %56 = and i64 %55, -8 - %57 = inttoptr i64 %56 to ptr - %58 = getelementptr inbounds nuw i8, ptr %57, i64 50 - %59 = load i16, ptr %58, align 2 - %60 = icmp eq i16 %59, 2 - %61 = getelementptr inbounds nuw i8, ptr %0, i64 112 - %62 = load i32, ptr %61, align 8 - %63 = trunc i32 %62 to i16 - br i1 %60, label %64, label %75 - -64: ; preds = %53 - %65 = tail call i16 @llvm.bswap.i16(i16 %63) - %66 = load ptr, ptr %12, align 8 - %67 = load i16, ptr %14, align 4 - %68 = zext i16 %67 to i64 - %69 = getelementptr i8, ptr %66, i64 %68 - %70 = getelementptr inbounds nuw i8, ptr %69, i64 2 - store i16 %65, ptr %70, align 2 - %71 = load ptr, ptr %12, align 8 - %72 = load i16, ptr %14, align 4 - %73 = zext i16 %72 to i64 - %74 = getelementptr i8, ptr %71, i64 %73 - tail call void @ip_send_check(ptr noundef %74) #5 - br label %83 - -75: ; preds = %53 - %76 = add i16 %63, -40 - %77 = tail call i16 @llvm.bswap.i16(i16 %76) - %78 = load ptr, ptr %12, align 8 - %79 = load i16, ptr %14, align 4 - %80 = zext i16 %79 to i64 - %81 = getelementptr i8, ptr %78, i64 %80 - %82 = getelementptr inbounds nuw i8, ptr %81, i64 4 - store i16 %77, ptr %82, align 4 - br label %83 - -83: ; preds = %75, %64 + %50 = ptrtoint ptr %48 to i64 + %51 = sub i64 %49, %50 + %52 = trunc i64 %51 to i32 + %53 = add i32 %45, %52 + store i32 %53, ptr %26, align 8 + br label %54 + +54: ; preds = %41, %40, %34 + %55 = getelementptr inbounds nuw i8, ptr %0, i64 104 + %56 = load i64, ptr %55, align 8 + %57 = and i64 %56, -8 + %58 = inttoptr i64 %57 to ptr + %59 = getelementptr inbounds nuw i8, ptr %58, i64 50 + %60 = load i16, ptr %59, align 2 + %61 = icmp eq i16 %60, 2 + %62 = getelementptr inbounds nuw i8, ptr %0, i64 112 + %63 = load i32, ptr %62, align 8 + %64 = trunc i32 %63 to i16 + br i1 %61, label %65, label %76 + +65: ; preds = %54 + %66 = tail call i16 @llvm.bswap.i16(i16 %64) + %67 = load ptr, ptr %12, align 8 + %68 = load i16, ptr %14, align 4 + %69 = zext i16 %68 to i64 + %70 = getelementptr i8, ptr %67, i64 %69 + %71 = getelementptr inbounds nuw i8, ptr %70, i64 2 + store i16 %66, ptr %71, align 2 + %72 = load ptr, ptr %12, align 8 + %73 = load i16, ptr %14, align 4 + %74 = zext i16 %73 to i64 + %75 = getelementptr i8, ptr %72, i64 %74 + tail call void @ip_send_check(ptr noundef %75) #5 + br label %84 + +76: ; preds = %54 + %77 = add i16 %64, -40 + %78 = tail call i16 @llvm.bswap.i16(i16 %77) + %79 = load ptr, ptr %12, align 8 + %80 = load i16, ptr %14, align 4 + %81 = zext i16 %80 to i64 + %82 = getelementptr i8, ptr %79, i64 %81 + %83 = getelementptr inbounds nuw i8, ptr %82, i64 4 + store i16 %78, ptr %83, align 4 + br label %84 + +84: ; preds = %76, %65 ret void } diff --git a/bench/linux/optimized/zstd_decompress.ll b/bench/linux/optimized/zstd_decompress.ll index 0b3b2023a9a..399d03ed08b 100644 --- a/bench/linux/optimized/zstd_decompress.ll +++ b/bench/linux/optimized/zstd_decompress.ll @@ -2117,46 +2117,47 @@ define dso_local noundef i64 @ZSTD_loadDEntropy(ptr noundef %0, ptr noundef %1, 15: ; preds = %3 %16 = getelementptr i8, ptr %1, i64 8 %17 = getelementptr inbounds nuw i8, ptr %0, i64 10264 - %18 = add i64 %2, -8 - %19 = tail call i64 @HUF_readDTableX2_wksp(ptr noundef nonnull %17, ptr noundef %16, i64 noundef %18, ptr noundef %0, i64 noundef 10264) #10 - %20 = icmp ult i64 %19, -119 - %21 = select i1 %20, i64 %19, i64 0 - %22 = getelementptr i8, ptr %16, i64 %21 - br i1 %20, label %23, label %.thread18 - -23: ; preds = %15 + %18 = ptrtoint ptr %13 to i64 + %19 = add i64 %2, -8 + %20 = tail call i64 @HUF_readDTableX2_wksp(ptr noundef nonnull %17, ptr noundef %16, i64 noundef %19, ptr noundef %0, i64 noundef 10264) #10 + %21 = icmp ult i64 %20, -119 + %22 = select i1 %21, i64 %20, i64 0 + %23 = getelementptr i8, ptr %16, i64 %22 + br i1 %21, label %24, label %.thread18 + +24: ; preds = %15 call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %4) #10 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %4, i8 0, i64 64, i1 false), !annotation !11 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #10 store i32 31, ptr %5, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #10 store i32 0, ptr %6, align 4, !annotation !11 - %gepdiff = sub i64 %18, %19 - %24 = call i64 @FSE_readNCount(ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef %22, i64 noundef %gepdiff) #10 - %25 = icmp ult i64 %24, -119 - br i1 %25, label %26, label %.thread - -26: ; preds = %23 - %27 = load i32, ptr %5, align 4 - %28 = icmp ugt i32 %27, 31 - br i1 %28, label %.thread, label %29 + %gepdiff = sub i64 %19, %20 + %25 = call i64 @FSE_readNCount(ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef %23, i64 noundef %gepdiff) #10 + %26 = icmp ult i64 %25, -119 + br i1 %26, label %27, label %.thread + +27: ; preds = %24 + %28 = load i32, ptr %5, align 4 + %29 = icmp ugt i32 %28, 31 + br i1 %29, label %.thread, label %30 -29: ; preds = %26 - %30 = load i32, ptr %6, align 4 - %31 = icmp ugt i32 %30, 8 - br i1 %31, label %.thread, label %32 +30: ; preds = %27 + %31 = load i32, ptr %6, align 4 + %32 = icmp ugt i32 %31, 8 + br i1 %32, label %.thread, label %33 -.thread: ; preds = %23, %26, %29 +.thread: ; preds = %24, %27, %30 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #10 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #10 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %4) #10 br label %.thread18 -32: ; preds = %29 - %33 = getelementptr inbounds nuw i8, ptr %0, i64 4104 - %34 = getelementptr inbounds nuw i8, ptr %0, i64 26664 - call void @ZSTD_buildFSETable(ptr noundef nonnull %33, ptr noundef nonnull %4, i32 noundef %27, ptr noundef nonnull @OF_base, ptr noundef nonnull @OF_bits, i32 noundef %30, ptr noundef nonnull %34, i64 noundef 628, i32 noundef 0) #10 - %35 = getelementptr i8, ptr %22, i64 %24 +33: ; preds = %30 + %34 = getelementptr inbounds nuw i8, ptr %0, i64 4104 + %35 = getelementptr inbounds nuw i8, ptr %0, i64 26664 + call void @ZSTD_buildFSETable(ptr noundef nonnull %34, ptr noundef nonnull %4, i32 noundef %28, ptr noundef nonnull @OF_base, ptr noundef nonnull @OF_bits, i32 noundef %31, ptr noundef nonnull %35, i64 noundef 628, i32 noundef 0) #10 + %36 = getelementptr i8, ptr %23, i64 %25 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #10 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #10 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %4) #10 @@ -2166,32 +2167,32 @@ define dso_local noundef i64 @ZSTD_loadDEntropy(ptr noundef %0, ptr noundef %1, store i32 52, ptr %8, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #10 store i32 0, ptr %9, align 4, !annotation !11 - %36 = add i64 %19, %24 - %gepdiff20 = sub i64 %18, %36 - %37 = call i64 @FSE_readNCount(ptr noundef nonnull %7, ptr noundef nonnull %8, ptr noundef nonnull %9, ptr noundef %35, i64 noundef %gepdiff20) #10 - %38 = icmp ult i64 %37, -119 - br i1 %38, label %39, label %.thread15 - -39: ; preds = %32 - %40 = load i32, ptr %8, align 4 - %41 = icmp ugt i32 %40, 52 - br i1 %41, label %.thread15, label %42 - -42: ; preds = %39 - %43 = load i32, ptr %9, align 4 - %44 = icmp ugt i32 %43, 9 - br i1 %44, label %.thread15, label %45 - -.thread15: ; preds = %32, %39, %42 + %37 = add i64 %20, %25 + %gepdiff20 = sub i64 %19, %37 + %38 = call i64 @FSE_readNCount(ptr noundef nonnull %7, ptr noundef nonnull %8, ptr noundef nonnull %9, ptr noundef %36, i64 noundef %gepdiff20) #10 + %39 = icmp ult i64 %38, -119 + br i1 %39, label %40, label %.thread15 + +40: ; preds = %33 + %41 = load i32, ptr %8, align 4 + %42 = icmp ugt i32 %41, 52 + br i1 %42, label %.thread15, label %43 + +43: ; preds = %40 + %44 = load i32, ptr %9, align 4 + %45 = icmp ugt i32 %44, 9 + br i1 %45, label %.thread15, label %46 + +.thread15: ; preds = %33, %40, %43 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #10 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #10 call void @llvm.lifetime.end.p0(i64 106, ptr nonnull %7) #10 br label %.thread18 -45: ; preds = %42 - %46 = getelementptr inbounds nuw i8, ptr %0, i64 6160 - call void @ZSTD_buildFSETable(ptr noundef nonnull %46, ptr noundef nonnull %7, i32 noundef %40, ptr noundef nonnull @ML_base, ptr noundef nonnull @ML_bits, i32 noundef %43, ptr noundef nonnull %34, i64 noundef 628, i32 noundef 0) #10 - %47 = getelementptr i8, ptr %35, i64 %37 +46: ; preds = %43 + %47 = getelementptr inbounds nuw i8, ptr %0, i64 6160 + call void @ZSTD_buildFSETable(ptr noundef nonnull %47, ptr noundef nonnull %7, i32 noundef %41, ptr noundef nonnull @ML_base, ptr noundef nonnull @ML_bits, i32 noundef %44, ptr noundef nonnull %35, i64 noundef 628, i32 noundef 0) #10 + %48 = getelementptr i8, ptr %36, i64 %38 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #10 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #10 call void @llvm.lifetime.end.p0(i64 106, ptr nonnull %7) #10 @@ -2201,87 +2202,86 @@ define dso_local noundef i64 @ZSTD_loadDEntropy(ptr noundef %0, ptr noundef %1, store i32 35, ptr %11, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #10 store i32 0, ptr %12, align 4, !annotation !11 - %48 = add i64 %36, %37 - %gepdiff21 = sub i64 %18, %48 - %49 = call i64 @FSE_readNCount(ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef %47, i64 noundef %gepdiff21) #10 - %50 = icmp ult i64 %49, -119 - br i1 %50, label %51, label %.thread17 - -51: ; preds = %45 - %52 = load i32, ptr %11, align 4 - %53 = icmp ugt i32 %52, 35 - br i1 %53, label %.thread17, label %54 - -54: ; preds = %51 - %55 = load i32, ptr %12, align 4 - %56 = icmp ugt i32 %55, 9 - br i1 %56, label %.thread17, label %57 - -.thread17: ; preds = %45, %51, %54 + %49 = ptrtoint ptr %48 to i64 + %50 = sub i64 %18, %49 + %51 = call i64 @FSE_readNCount(ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef %48, i64 noundef %50) #10 + %52 = icmp ult i64 %51, -119 + br i1 %52, label %53, label %.thread17 + +53: ; preds = %46 + %54 = load i32, ptr %11, align 4 + %55 = icmp ugt i32 %54, 35 + br i1 %55, label %.thread17, label %56 + +56: ; preds = %53 + %57 = load i32, ptr %12, align 4 + %58 = icmp ugt i32 %57, 9 + br i1 %58, label %.thread17, label %59 + +.thread17: ; preds = %46, %53, %56 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #10 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #10 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %10) #10 br label %.thread18 -57: ; preds = %54 - call void @ZSTD_buildFSETable(ptr noundef %0, ptr noundef nonnull %10, i32 noundef %52, ptr noundef nonnull @LL_base, ptr noundef nonnull @LL_bits, i32 noundef %55, ptr noundef nonnull %34, i64 noundef 628, i32 noundef 0) #10 - %58 = getelementptr i8, ptr %47, i64 %49 +59: ; preds = %56 + call void @ZSTD_buildFSETable(ptr noundef %0, ptr noundef nonnull %10, i32 noundef %54, ptr noundef nonnull @LL_base, ptr noundef nonnull @LL_bits, i32 noundef %57, ptr noundef nonnull %35, i64 noundef 628, i32 noundef 0) #10 + %60 = getelementptr i8, ptr %48, i64 %51 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #10 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #10 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %10) #10 - %59 = getelementptr i8, ptr %58, i64 12 - %60 = icmp ugt ptr %59, %13 - br i1 %60, label %.thread18, label %61 - -61: ; preds = %57 - %.neg33 = add i64 %2, -20 - %62 = add i64 %48, %49 - %gepdiff22 = sub i64 %.neg33, %62 - %63 = getelementptr inbounds nuw i8, ptr %0, i64 26652 - %64 = load i32, ptr %58, align 1 - %65 = icmp eq i32 %64, 0 - %66 = zext i32 %64 to i64 - %67 = icmp ult i64 %gepdiff22, %66 - %68 = or i1 %65, %67 - br i1 %68, label %.thread18, label %.preheader.preheader - -.preheader.preheader: ; preds = %61 - %69 = getelementptr i8, ptr %58, i64 4 + %61 = getelementptr i8, ptr %60, i64 12 + %62 = icmp ugt ptr %61, %13 + br i1 %62, label %.thread18, label %63 + +63: ; preds = %59 + %64 = ptrtoint ptr %61 to i64 + %65 = sub i64 %18, %64 + %66 = getelementptr inbounds nuw i8, ptr %0, i64 26652 + %67 = load i32, ptr %60, align 1 + %68 = icmp eq i32 %67, 0 + %69 = zext i32 %67 to i64 + %70 = icmp ult i64 %65, %69 + %71 = or i1 %68, %70 + br i1 %71, label %.thread18, label %.preheader.preheader + +.preheader.preheader: ; preds = %63 + %72 = getelementptr i8, ptr %60, i64 4 br label %.preheader -70: ; preds = %.preheader - %71 = load i32, ptr %77, align 1 - %72 = getelementptr i8, ptr %77, i64 4 - %73 = icmp eq i32 %71, 0 - %74 = zext i32 %71 to i64 - %75 = icmp ult i64 %gepdiff22, %74 - %76 = or i1 %73, %75 - br i1 %76, label %83, label %.preheader, !llvm.loop !14 - -.preheader: ; preds = %.preheader.preheader, %70 - %77 = phi ptr [ %72, %70 ], [ %69, %.preheader.preheader ] - %78 = phi i32 [ %71, %70 ], [ %64, %.preheader.preheader ] - %79 = phi i64 [ %81, %70 ], [ 0, %.preheader.preheader ] - %80 = getelementptr [3 x i32], ptr %63, i64 0, i64 %79 - store i32 %78, ptr %80, align 4 - %81 = add nuw nsw i64 %79, 1 - %82 = icmp eq i64 %81, 3 - br i1 %82, label %.thread19, label %70, !llvm.loop !14 - -83: ; preds = %70 - %84 = icmp samesign ugt i64 %79, 1 - br i1 %84, label %.thread19, label %.thread18 - -.thread19: ; preds = %.preheader, %83 - %85 = phi ptr [ %72, %83 ], [ %77, %.preheader ] - %86 = ptrtoint ptr %85 to i64 - %87 = ptrtoint ptr %1 to i64 - %88 = sub i64 %86, %87 +73: ; preds = %.preheader + %74 = load i32, ptr %80, align 1 + %75 = getelementptr i8, ptr %80, i64 4 + %76 = icmp eq i32 %74, 0 + %77 = zext i32 %74 to i64 + %78 = icmp ult i64 %65, %77 + %79 = or i1 %76, %78 + br i1 %79, label %86, label %.preheader, !llvm.loop !14 + +.preheader: ; preds = %.preheader.preheader, %73 + %80 = phi ptr [ %75, %73 ], [ %72, %.preheader.preheader ] + %81 = phi i32 [ %74, %73 ], [ %67, %.preheader.preheader ] + %82 = phi i64 [ %84, %73 ], [ 0, %.preheader.preheader ] + %83 = getelementptr [3 x i32], ptr %66, i64 0, i64 %82 + store i32 %81, ptr %83, align 4 + %84 = add nuw nsw i64 %82, 1 + %85 = icmp eq i64 %84, 3 + br i1 %85, label %.thread19, label %73, !llvm.loop !14 + +86: ; preds = %73 + %87 = icmp samesign ugt i64 %82, 1 + br i1 %87, label %.thread19, label %.thread18 + +.thread19: ; preds = %.preheader, %86 + %88 = phi ptr [ %75, %86 ], [ %80, %.preheader ] + %89 = ptrtoint ptr %88 to i64 + %90 = ptrtoint ptr %1 to i64 + %91 = sub i64 %89, %90 br label %.thread18 -.thread18: ; preds = %61, %.thread17, %.thread15, %.thread, %.thread19, %83, %57, %15, %3 - %89 = phi i64 [ %88, %.thread19 ], [ -30, %83 ], [ -30, %15 ], [ -30, %3 ], [ -30, %57 ], [ -30, %.thread ], [ -30, %.thread15 ], [ -30, %.thread17 ], [ -30, %61 ] - ret i64 %89 +.thread18: ; preds = %63, %.thread17, %.thread15, %.thread, %.thread19, %86, %59, %15, %3 + %92 = phi i64 [ %91, %.thread19 ], [ -30, %86 ], [ -30, %15 ], [ -30, %3 ], [ -30, %59 ], [ -30, %.thread ], [ -30, %.thread15 ], [ -30, %.thread17 ], [ -30, %63 ] + ret i64 %92 } ; Function Attrs: null_pointer_is_valid diff --git a/bench/llvm/optimized/PPCaching.ll b/bench/llvm/optimized/PPCaching.ll index 7e918a923b7..792df503c56 100644 --- a/bench/llvm/optimized/PPCaching.ll +++ b/bench/llvm/optimized/PPCaching.ll @@ -1356,36 +1356,34 @@ define dso_local void @_ZN5clang12Preprocessor26ReplacePreviousCachedTokenEN4llv %11 = tail call noundef ptr @_ZN4llvm15SmallVectorImplIN5clang5TokenEE6insertIPKS2_vEEPS2_S7_T_S8_(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull %9, ptr noundef %1, ptr noundef %10) %12 = load ptr, ptr %4, align 8, !tbaa !21 %13 = load i64, ptr %6, align 8, !tbaa !267 - %.idx4 = mul nuw nsw i64 %13, 24 - %14 = getelementptr inbounds nuw i8, ptr %12, i64 %.idx4 + %14 = getelementptr inbounds nuw %"class.clang::Token", ptr %12, i64 %13 %15 = getelementptr inbounds i8, ptr %14, i64 -24 - %.idx5 = mul nuw nsw i64 %2, 24 - %16 = getelementptr inbounds nuw i8, ptr %15, i64 %.idx5 + %16 = getelementptr inbounds nuw %"class.clang::Token", ptr %15, i64 %2 %17 = getelementptr inbounds nuw i8, ptr %16, i64 24 %18 = getelementptr inbounds nuw i8, ptr %0, i64 2896 %19 = load i32, ptr %18, align 8, !tbaa !14 %20 = zext i32 %19 to i64 - %.idx = mul nuw nsw i64 %20, 24 - %21 = getelementptr inbounds nuw i8, ptr %12, i64 %.idx + %21 = getelementptr inbounds nuw %"class.clang::Token", ptr %12, i64 %20 %.not.i.i.i.i.i.i = icmp eq ptr %21, %17 br i1 %.not.i.i.i.i.i.i, label %_ZN4llvm15SmallVectorImplIN5clang5TokenEE5eraseEPKS2_.exit, label %22 22: ; preds = %3 - %23 = add nuw i64 %.idx4, %.idx5 - %gepdiff = sub i64 %.idx, %23 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %16, ptr nonnull align 8 %17, i64 %gepdiff, i1 false) + %23 = ptrtoint ptr %21 to i64 + %24 = ptrtoint ptr %17 to i64 + %25 = sub i64 %23, %24 + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %16, ptr nonnull align 8 %17, i64 %25, i1 false) %.pre.i = load i32, ptr %18, align 8, !tbaa !14 %.pre = load i64, ptr %6, align 8, !tbaa !267 br label %_ZN4llvm15SmallVectorImplIN5clang5TokenEE5eraseEPKS2_.exit _ZN4llvm15SmallVectorImplIN5clang5TokenEE5eraseEPKS2_.exit: ; preds = %3, %22 - %24 = phi i64 [ %13, %3 ], [ %.pre, %22 ] - %25 = phi i32 [ %19, %3 ], [ %.pre.i, %22 ] - %26 = add i32 %25, -1 - store i32 %26, ptr %18, align 8, !tbaa !14 - %27 = add i64 %2, -1 - %28 = add i64 %27, %24 - store i64 %28, ptr %6, align 8, !tbaa !267 + %26 = phi i64 [ %13, %3 ], [ %.pre, %22 ] + %27 = phi i32 [ %19, %3 ], [ %.pre.i, %22 ] + %28 = add i32 %27, -1 + store i32 %28, ptr %18, align 8, !tbaa !14 + %29 = add i64 %2, -1 + %30 = add i64 %29, %26 + store i64 %30, ptr %6, align 8, !tbaa !267 ret void } diff --git a/bench/oiio/optimized/deepdata.ll b/bench/oiio/optimized/deepdata.ll index a523771dc71..af45378ada2 100644 --- a/bench/oiio/optimized/deepdata.ll +++ b/bench/oiio/optimized/deepdata.ll @@ -3589,7 +3589,7 @@ define void @_ZN11OpenImageIO6v3_1_08DeepData11set_samplesEli(ptr noundef nonnul %6 = load i64, ptr %5, align 8 %.not = icmp slt i64 %1, %6 %or.cond = select i1 %4, i1 %.not, i1 false - br i1 %or.cond, label %7, label %67 + br i1 %or.cond, label %7, label %69 7: ; preds = %3 %8 = load ptr, ptr %0, align 8, !tbaa !35 @@ -3599,7 +3599,7 @@ define void @_ZN11OpenImageIO6v3_1_08DeepData11set_samplesEli(ptr noundef nonnul %12 = getelementptr inbounds nuw i8, ptr %8, i64 72 %13 = load ptr, ptr %12, align 8, !tbaa !54 %14 = getelementptr inbounds nuw i32, ptr %13, i64 %1 - br i1 %11, label %15, label %62 + br i1 %11, label %15, label %64 15: ; preds = %7 %16 = load i32, ptr %14, align 4, !tbaa !85 @@ -3620,21 +3620,21 @@ _ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit.i: ; preds = %15 %.pre27.i = load ptr, ptr %0, align 8, !tbaa !35 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %.pre27.i, i64 72 %.pre = load ptr, ptr %.phi.trans.insert, align 8, !tbaa !54 - %.phi.trans.insert35 = getelementptr inbounds nuw i32, ptr %.pre, i64 %1 - %.pre36 = load i32, ptr %.phi.trans.insert35, align 4, !tbaa !85 + %.phi.trans.insert30 = getelementptr inbounds nuw i32, ptr %.pre, i64 %1 + %.pre31 = load i32, ptr %.phi.trans.insert30, align 4, !tbaa !85 br label %_ZN11OpenImageIO6v3_1_08DeepData14insert_samplesElii.exit _ZN11OpenImageIO6v3_1_08DeepData14insert_samplesElii.exit: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit.i, %24 - %25 = phi i32 [ %.pre36, %24 ], [ %16, %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit.i ] + %25 = phi i32 [ %.pre31, %24 ], [ %16, %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit.i ] %26 = phi ptr [ %.pre, %24 ], [ %13, %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit.i ] %27 = getelementptr inbounds nuw i32, ptr %26, i64 %1 %28 = add i32 %18, %25 store i32 %28, ptr %27, align 4, !tbaa !85 - br label %67 + br label %69 29: ; preds = %15 %30 = icmp slt i32 %2, %16 - br i1 %30, label %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit.i24, label %67 + br i1 %30, label %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit.i24, label %69 _ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit.i24: ; preds = %29 %31 = sub nsw i32 %16, %2 @@ -3667,35 +3667,36 @@ _ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit.i24: ; preds = %29 br i1 %.not.i.i.i.i.i.i27, label %_ZN11OpenImageIO6v3_1_08DeepData13erase_samplesElii.exit, label %56 56: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit.i24 - %57 = add i64 %40, %52 - %gepdiff.i28 = sub i64 %46, %57 - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %50, ptr align 1 %53, i64 %gepdiff.i28, i1 false) - %.pre.i29 = load ptr, ptr %0, align 8, !tbaa !35 - %.phi.trans.insert.i = getelementptr inbounds nuw i8, ptr %.pre.i29, i64 72 - %.pre25.i = load ptr, ptr %.phi.trans.insert.i, align 8, !tbaa !54 - %.phi.trans.insert26.i = getelementptr inbounds nuw i32, ptr %.pre25.i, i64 %1 - %.pre27.i30 = load i32, ptr %.phi.trans.insert26.i, align 4, !tbaa !85 + %57 = ptrtoint ptr %55 to i64 + %58 = ptrtoint ptr %53 to i64 + %59 = sub i64 %57, %58 + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %50, ptr align 1 %53, i64 %59, i1 false) + %.pre.i28 = load ptr, ptr %0, align 8, !tbaa !35 + %.phi.trans.insert.i = getelementptr inbounds nuw i8, ptr %.pre.i28, i64 72 + %.pre21.i = load ptr, ptr %.phi.trans.insert.i, align 8, !tbaa !54 + %.phi.trans.insert22.i = getelementptr inbounds nuw i32, ptr %.pre21.i, i64 %1 + %.pre23.i = load i32, ptr %.phi.trans.insert22.i, align 4, !tbaa !85 br label %_ZN11OpenImageIO6v3_1_08DeepData13erase_samplesElii.exit _ZN11OpenImageIO6v3_1_08DeepData13erase_samplesElii.exit: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit.i24, %56 - %58 = phi i32 [ %.pre27.i30, %56 ], [ %16, %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit.i24 ] - %59 = phi ptr [ %.pre25.i, %56 ], [ %13, %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit.i24 ] - %60 = getelementptr inbounds nuw i32, ptr %59, i64 %1 - %61 = sub i32 %58, %.sroa.speculated.i - store i32 %61, ptr %60, align 4, !tbaa !85 - br label %67 - -62: ; preds = %7 - store i32 %2, ptr %14, align 4, !tbaa !85 - %63 = getelementptr inbounds nuw i8, ptr %8, i64 96 - %64 = load ptr, ptr %63, align 8, !tbaa !54 - %65 = getelementptr inbounds nuw i32, ptr %64, i64 %1 - %66 = load i32, ptr %65, align 4, !tbaa !85 - %.sroa.speculated = tail call i32 @llvm.umax.i32(i32 %2, i32 %66) - store i32 %.sroa.speculated, ptr %65, align 4, !tbaa !85 - br label %67 + %60 = phi i32 [ %.pre23.i, %56 ], [ %16, %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit.i24 ] + %61 = phi ptr [ %.pre21.i, %56 ], [ %13, %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit.i24 ] + %62 = getelementptr inbounds nuw i32, ptr %61, i64 %1 + %63 = sub i32 %60, %.sroa.speculated.i + store i32 %63, ptr %62, align 4, !tbaa !85 + br label %69 -67: ; preds = %_ZN11OpenImageIO6v3_1_08DeepData14insert_samplesElii.exit, %_ZN11OpenImageIO6v3_1_08DeepData13erase_samplesElii.exit, %29, %3, %62 +64: ; preds = %7 + store i32 %2, ptr %14, align 4, !tbaa !85 + %65 = getelementptr inbounds nuw i8, ptr %8, i64 96 + %66 = load ptr, ptr %65, align 8, !tbaa !54 + %67 = getelementptr inbounds nuw i32, ptr %66, i64 %1 + %68 = load i32, ptr %67, align 4, !tbaa !85 + %.sroa.speculated = tail call i32 @llvm.umax.i32(i32 %2, i32 %68) + store i32 %.sroa.speculated, ptr %67, align 4, !tbaa !85 + br label %69 + +69: ; preds = %_ZN11OpenImageIO6v3_1_08DeepData14insert_samplesElii.exit, %_ZN11OpenImageIO6v3_1_08DeepData13erase_samplesElii.exit, %29, %3, %64 ret void } @@ -3835,22 +3836,23 @@ _ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit: ; preds = %4 br i1 %.not.i.i.i.i.i, label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit, label %40 40: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit - %41 = add i64 %24, %36 - %gepdiff = sub i64 %30, %41 - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %34, ptr align 1 %37, i64 %gepdiff, i1 false) + %41 = ptrtoint ptr %39 to i64 + %42 = ptrtoint ptr %37 to i64 + %43 = sub i64 %41, %42 + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %34, ptr align 1 %37, i64 %43, i1 false) %.pre = load ptr, ptr %0, align 8, !tbaa !35 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %.pre, i64 72 - %.pre25 = load ptr, ptr %.phi.trans.insert, align 8, !tbaa !54 - %.phi.trans.insert26 = getelementptr inbounds nuw i32, ptr %.pre25, i64 %1 - %.pre27 = load i32, ptr %.phi.trans.insert26, align 4, !tbaa !85 + %.pre21 = load ptr, ptr %.phi.trans.insert, align 8, !tbaa !54 + %.phi.trans.insert22 = getelementptr inbounds nuw i32, ptr %.pre21, i64 %1 + %.pre23 = load i32, ptr %.phi.trans.insert22, align 4, !tbaa !85 br label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit _ZSt4copyIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit: ; preds = %40, %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit, %4 - %42 = phi i32 [ %.pre27, %40 ], [ %9, %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit ], [ %9, %4 ] - %43 = phi ptr [ %.pre25, %40 ], [ %7, %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit ], [ %7, %4 ] - %44 = getelementptr inbounds nuw i32, ptr %43, i64 %1 - %45 = sub i32 %42, %.sroa.speculated - store i32 %45, ptr %44, align 4, !tbaa !85 + %44 = phi i32 [ %.pre23, %40 ], [ %9, %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit ], [ %9, %4 ] + %45 = phi ptr [ %.pre21, %40 ], [ %7, %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit ], [ %7, %4 ] + %46 = getelementptr inbounds nuw i32, ptr %45, i64 %1 + %47 = sub i32 %44, %.sroa.speculated + store i32 %47, ptr %46, align 4, !tbaa !85 ret void } @@ -6281,11 +6283,11 @@ define void @_ZN11OpenImageIO6v3_1_08DeepData14merge_overlapsEl(ptr noundef nonn %15 = icmp sgt i32 %12, 0 %16 = icmp slt i64 %1, 0 %wide.trip.count = zext nneg i32 %12 to i64 - %wide.trip.count267 = zext nneg i32 %12 to i64 + %wide.trip.count265 = zext nneg i32 %12 to i64 br label %17 -17: ; preds = %722, %7 - %.0105 = phi i32 [ 1, %7 ], [ %723, %722 ] +17: ; preds = %724, %7 + %.0105 = phi i32 [ 1, %7 ], [ %725, %724 ] %18 = load i64, ptr %14, align 8 %.not.i = icmp slt i64 %1, %18 %or.cond.i = select i1 %13, i1 %.not.i, i1 false @@ -6310,25 +6312,25 @@ _ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit: ; preds = %17, %19 %29 = add nsw i32 %.0105, -1 %30 = tail call noundef float @_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii(ptr noundef nonnull align 8 dereferenceable(20) %0, i64 noundef %1, i32 noundef %5, i32 noundef %29) %31 = fcmp oeq float %27, %30 - br i1 %31, label %32, label %722 + br i1 %31, label %32, label %724 32: ; preds = %26 %33 = tail call noundef float @_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii(ptr noundef nonnull align 8 dereferenceable(20) %0, i64 noundef %1, i32 noundef %spec.select, i32 noundef %29) %34 = fcmp oeq float %28, %33 - br i1 %34, label %.preheader259, label %722 + br i1 %34, label %.preheader257, label %724 -.preheader259: ; preds = %32 +.preheader257: ; preds = %32 br i1 %15, label %.lr.ph, label %._crit_edge -.lr.ph: ; preds = %.preheader259 +.lr.ph: ; preds = %.preheader257 %35 = icmp slt i32 %.0105, 1 %36 = icmp slt i32 %.0105, 0 br label %39 -.lr.ph262: ; preds = %471 +.lr.ph260: ; preds = %471 %37 = icmp slt i32 %.0105, 1 %38 = icmp slt i32 %.0105, 0 - br label %511 + br label %513 39: ; preds = %.lr.ph, %471 %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %471 ] @@ -6508,11 +6510,11 @@ _ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i: ; preds = %_ZNK11Open %142 = load ptr, ptr @stderr, align 8, !tbaa !89 %143 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %142, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 689, ptr noundef nonnull @__FUNCTION__._ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii, ptr noundef nonnull @.str.11, i32 noundef %141) #33 %.pre = load i64, ptr %14, align 8, !tbaa !62 - %.pre269 = load i32, ptr %11, align 8 + %.pre267 = load i32, ptr %11, align 8 br label %144 144: ; preds = %49, %53, %59, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i, %82, %_ZNK9Imath_3_14halfcvfEv.exit.i, %108, %112, %116, %120, %124, %128, %132, %136, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i - %145 = phi i32 [ %52, %49 ], [ %52, %53 ], [ %52, %59 ], [ %52, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i ], [ %52, %136 ], [ %52, %132 ], [ %52, %128 ], [ %52, %124 ], [ %52, %120 ], [ %52, %116 ], [ %52, %112 ], [ %52, %108 ], [ %52, %_ZNK9Imath_3_14halfcvfEv.exit.i ], [ %52, %82 ], [ %.pre269, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i ] + %145 = phi i32 [ %52, %49 ], [ %52, %53 ], [ %52, %59 ], [ %52, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i ], [ %52, %136 ], [ %52, %132 ], [ %52, %128 ], [ %52, %124 ], [ %52, %120 ], [ %52, %116 ], [ %52, %112 ], [ %52, %108 ], [ %52, %_ZNK9Imath_3_14halfcvfEv.exit.i ], [ %52, %82 ], [ %.pre267, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i ] %146 = phi i64 [ %50, %49 ], [ %50, %53 ], [ %50, %59 ], [ %50, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i ], [ %50, %136 ], [ %50, %132 ], [ %50, %128 ], [ %50, %124 ], [ %50, %120 ], [ %50, %116 ], [ %50, %112 ], [ %50, %108 ], [ %50, %_ZNK9Imath_3_14halfcvfEv.exit.i ], [ %50, %82 ], [ %.pre, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i ] %.0.i127.ph = phi float [ 0.000000e+00, %49 ], [ 0.000000e+00, %53 ], [ 0.000000e+00, %59 ], [ 0.000000e+00, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i ], [ %139, %136 ], [ %135, %132 ], [ %131, %128 ], [ %127, %124 ], [ %123, %120 ], [ %119, %116 ], [ %115, %112 ], [ %111, %108 ], [ %107, %_ZNK9Imath_3_14halfcvfEv.exit.i ], [ %83, %82 ], [ 0.000000e+00, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i ] %.inv255 = fcmp oge float %.0.i127.ph, 0.000000e+00 @@ -6682,13 +6684,13 @@ _ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i144: ; preds = %_ZNK11O %239 = and i32 %238, 255 %240 = load ptr, ptr @stderr, align 8, !tbaa !89 %241 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %240, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 689, ptr noundef nonnull @__FUNCTION__._ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii, ptr noundef nonnull @.str.11, i32 noundef %239) #33 - %.pre270 = load i64, ptr %14, align 8, !tbaa !62 - %.pre271 = load i32, ptr %11, align 8 + %.pre268 = load i64, ptr %14, align 8, !tbaa !62 + %.pre269 = load i32, ptr %11, align 8 br label %242 242: ; preds = %144, %149, %151, %157, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i136, %180, %_ZNK9Imath_3_14halfcvfEv.exit.i142, %206, %210, %214, %218, %222, %226, %230, %234, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i144 - %243 = phi i32 [ %145, %144 ], [ %145, %149 ], [ %145, %151 ], [ %145, %157 ], [ %145, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i136 ], [ %145, %234 ], [ %145, %230 ], [ %145, %226 ], [ %145, %222 ], [ %145, %218 ], [ %145, %214 ], [ %145, %210 ], [ %145, %206 ], [ %145, %_ZNK9Imath_3_14halfcvfEv.exit.i142 ], [ %145, %180 ], [ %.pre271, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i144 ] - %244 = phi i64 [ %146, %144 ], [ %146, %149 ], [ %146, %151 ], [ %146, %157 ], [ %146, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i136 ], [ %146, %234 ], [ %146, %230 ], [ %146, %226 ], [ %146, %222 ], [ %146, %218 ], [ %146, %214 ], [ %146, %210 ], [ %146, %206 ], [ %146, %_ZNK9Imath_3_14halfcvfEv.exit.i142 ], [ %146, %180 ], [ %.pre270, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i144 ] + %243 = phi i32 [ %145, %144 ], [ %145, %149 ], [ %145, %151 ], [ %145, %157 ], [ %145, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i136 ], [ %145, %234 ], [ %145, %230 ], [ %145, %226 ], [ %145, %222 ], [ %145, %218 ], [ %145, %214 ], [ %145, %210 ], [ %145, %206 ], [ %145, %_ZNK9Imath_3_14halfcvfEv.exit.i142 ], [ %145, %180 ], [ %.pre269, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i144 ] + %244 = phi i64 [ %146, %144 ], [ %146, %149 ], [ %146, %151 ], [ %146, %157 ], [ %146, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i136 ], [ %146, %234 ], [ %146, %230 ], [ %146, %226 ], [ %146, %222 ], [ %146, %218 ], [ %146, %214 ], [ %146, %210 ], [ %146, %206 ], [ %146, %_ZNK9Imath_3_14halfcvfEv.exit.i142 ], [ %146, %180 ], [ %.pre268, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i144 ] %.0.i132.ph = phi float [ 0.000000e+00, %144 ], [ 0.000000e+00, %149 ], [ 0.000000e+00, %151 ], [ 0.000000e+00, %157 ], [ 0.000000e+00, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i136 ], [ %237, %234 ], [ %233, %230 ], [ %229, %226 ], [ %225, %222 ], [ %221, %218 ], [ %217, %214 ], [ %213, %210 ], [ %209, %206 ], [ %205, %_ZNK9Imath_3_14halfcvfEv.exit.i142 ], [ %181, %180 ], [ 0.000000e+00, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i144 ] %.inv256 = fcmp oge float %.0.i132.ph, 0.000000e+00 %.0.i122233 = select i1 %.inv256, float %.0.i132.ph, float 0.000000e+00 @@ -6858,14 +6860,14 @@ _ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i161: ; preds = %_ZNK11O %338 = and i32 %337, 255 %339 = load ptr, ptr @stderr, align 8, !tbaa !89 %340 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %339, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 689, ptr noundef nonnull @__FUNCTION__._ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii, ptr noundef nonnull @.str.11, i32 noundef %338) #33 - %.pre272 = load i64, ptr %14, align 8, !tbaa !62 - %.pre273 = load i32, ptr %11, align 8 - %.pre276 = sext i32 %.pre273 to i64 + %.pre270 = load i64, ptr %14, align 8, !tbaa !62 + %.pre271 = load i32, ptr %11, align 8 + %.pre274 = sext i32 %.pre271 to i64 br label %341 341: ; preds = %242, %248, %250, %256, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i153, %279, %_ZNK9Imath_3_14halfcvfEv.exit.i159, %305, %309, %313, %317, %321, %325, %329, %333, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i161 - %.pre-phi = phi i64 [ %247, %242 ], [ %247, %248 ], [ %247, %250 ], [ %247, %256 ], [ %247, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i153 ], [ %247, %279 ], [ %247, %_ZNK9Imath_3_14halfcvfEv.exit.i159 ], [ %247, %305 ], [ %247, %309 ], [ %247, %313 ], [ %247, %317 ], [ %247, %321 ], [ %247, %325 ], [ %247, %329 ], [ %247, %333 ], [ %.pre276, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i161 ] - %342 = phi i64 [ %244, %242 ], [ %244, %248 ], [ %244, %250 ], [ %244, %256 ], [ %244, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i153 ], [ %244, %279 ], [ %244, %_ZNK9Imath_3_14halfcvfEv.exit.i159 ], [ %244, %305 ], [ %244, %309 ], [ %244, %313 ], [ %244, %317 ], [ %244, %321 ], [ %244, %325 ], [ %244, %329 ], [ %244, %333 ], [ %.pre272, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i161 ] + %.pre-phi = phi i64 [ %247, %242 ], [ %247, %248 ], [ %247, %250 ], [ %247, %256 ], [ %247, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i153 ], [ %247, %279 ], [ %247, %_ZNK9Imath_3_14halfcvfEv.exit.i159 ], [ %247, %305 ], [ %247, %309 ], [ %247, %313 ], [ %247, %317 ], [ %247, %321 ], [ %247, %325 ], [ %247, %329 ], [ %247, %333 ], [ %.pre274, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i161 ] + %342 = phi i64 [ %244, %242 ], [ %244, %248 ], [ %244, %250 ], [ %244, %256 ], [ %244, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i153 ], [ %244, %279 ], [ %244, %_ZNK9Imath_3_14halfcvfEv.exit.i159 ], [ %244, %305 ], [ %244, %309 ], [ %244, %313 ], [ %244, %317 ], [ %244, %321 ], [ %244, %325 ], [ %244, %329 ], [ %244, %333 ], [ %.pre270, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i161 ] %.0.i149.ph = phi float [ 0.000000e+00, %242 ], [ 0.000000e+00, %248 ], [ 0.000000e+00, %250 ], [ 0.000000e+00, %256 ], [ 0.000000e+00, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i153 ], [ %280, %279 ], [ %304, %_ZNK9Imath_3_14halfcvfEv.exit.i159 ], [ %308, %305 ], [ %312, %309 ], [ %316, %313 ], [ %320, %317 ], [ %324, %321 ], [ %328, %325 ], [ %332, %329 ], [ %336, %333 ], [ 0.000000e+00, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i161 ] %343 = icmp slt i64 %1, %342 %.not.i.i164 = icmp slt i64 %indvars.iv, %.pre-phi @@ -7090,9 +7092,9 @@ _ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit179: ; preds = %48, %341, 471: ; preds = %39, %469 %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 %.lr.ph262, label %39, !llvm.loop !162 + br i1 %exitcond.not, label %.lr.ph260, label %39, !llvm.loop !162 -._crit_edge: ; preds = %721, %.preheader259 +._crit_edge: ; preds = %723, %.preheader257 %472 = load ptr, ptr %0, align 8, !tbaa !35 %473 = getelementptr inbounds nuw i8, ptr %472, i64 72 %474 = load ptr, ptr %473, align 8, !tbaa !54 @@ -7137,407 +7139,408 @@ _ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit.i: ; preds = %._crit_edge br i1 %.not.i.i.i.i.i.i, label %_ZN11OpenImageIO6v3_1_08DeepData13erase_samplesElii.exit, label %505 505: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit.i - %506 = add i64 %489, %501 - %gepdiff.i = sub i64 %495, %506 - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %499, ptr align 1 %502, i64 %gepdiff.i, i1 false) + %506 = ptrtoint ptr %504 to i64 + %507 = ptrtoint ptr %502 to i64 + %508 = sub i64 %506, %507 + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %499, ptr align 1 %502, i64 %508, i1 false) %.pre.i = load ptr, ptr %0, align 8, !tbaa !35 %.phi.trans.insert.i = getelementptr inbounds nuw i8, ptr %.pre.i, i64 72 - %.pre25.i = load ptr, ptr %.phi.trans.insert.i, align 8, !tbaa !54 - %.phi.trans.insert26.i = getelementptr inbounds nuw i32, ptr %.pre25.i, i64 %1 - %.pre27.i = load i32, ptr %.phi.trans.insert26.i, align 4, !tbaa !85 + %.pre21.i = load ptr, ptr %.phi.trans.insert.i, align 8, !tbaa !54 + %.phi.trans.insert22.i = getelementptr inbounds nuw i32, ptr %.pre21.i, i64 %1 + %.pre23.i = load i32, ptr %.phi.trans.insert22.i, align 4, !tbaa !85 br label %_ZN11OpenImageIO6v3_1_08DeepData13erase_samplesElii.exit _ZN11OpenImageIO6v3_1_08DeepData13erase_samplesElii.exit: ; preds = %._crit_edge, %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit.i, %505 - %507 = phi i32 [ %.pre27.i, %505 ], [ %476, %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit.i ], [ %476, %._crit_edge ] - %508 = phi ptr [ %.pre25.i, %505 ], [ %474, %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit.i ], [ %474, %._crit_edge ] - %509 = getelementptr inbounds nuw i32, ptr %508, i64 %1 - %510 = sub i32 %507, %.sroa.speculated.i - store i32 %510, ptr %509, align 4, !tbaa !85 - br label %722 - -511: ; preds = %.lr.ph262, %721 - %indvars.iv264 = phi i64 [ 0, %.lr.ph262 ], [ %indvars.iv.next265, %721 ] - %512 = load ptr, ptr %0, align 8, !tbaa !35 - %513 = getelementptr inbounds nuw i8, ptr %512, i64 192 - %514 = load ptr, ptr %513, align 8, !tbaa !38 - %515 = getelementptr inbounds nuw i32, ptr %514, i64 %indvars.iv264 - %516 = load i32, ptr %515, align 4, !tbaa !85 - %517 = zext i32 %516 to i64 - %.not = icmp eq i64 %indvars.iv264, %517 - br i1 %.not, label %518, label %721 - -518: ; preds = %511 - %519 = icmp slt i32 %516, 0 - br i1 %519, label %.thread, label %520 - -520: ; preds = %518 - br i1 %16, label %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214, label %521 - -521: ; preds = %520 - %522 = load i64, ptr %14, align 8, !tbaa !62 - %523 = icmp slt i64 %1, %522 - %524 = load i32, ptr %11, align 8 - %.not.i.i182 = icmp slt i32 %516, %524 - %or.cond21.i.i183 = select i1 %523, i1 %.not.i.i182, i1 false - br i1 %or.cond21.i.i183, label %525, label %616 - -525: ; preds = %521 - %526 = getelementptr inbounds nuw i8, ptr %512, i64 144 - %527 = getelementptr inbounds nuw i8, ptr %512, i64 152 - %528 = load ptr, ptr %527, align 8, !tbaa !129 - %529 = load ptr, ptr %526, align 8, !tbaa !51 - %530 = icmp eq ptr %528, %529 - %or.cond3.i.i186 = or i1 %37, %530 - br i1 %or.cond3.i.i186, label %616, label %531 - -531: ; preds = %525 - %532 = getelementptr inbounds nuw i8, ptr %512, i64 72 - %533 = load ptr, ptr %532, align 8, !tbaa !54 - %534 = getelementptr inbounds nuw i32, ptr %533, i64 %1 - %535 = load i32, ptr %534, align 4, !tbaa !85 - %.not19.i.i187.not = icmp sgt i32 %.0105, %535 - br i1 %.not19.i.i187.not, label %616, label %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i188 - -_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i188: ; preds = %531 - %536 = getelementptr inbounds nuw i8, ptr %512, i64 120 - %537 = load ptr, ptr %536, align 8, !tbaa !54 - %538 = getelementptr inbounds nuw i32, ptr %537, i64 %1 - %539 = load i32, ptr %538, align 4, !tbaa !85 - %540 = add i32 %539, %29 - %541 = zext i32 %540 to i64 - %542 = getelementptr inbounds nuw i8, ptr %512, i64 216 - %543 = load i64, ptr %542, align 8, !tbaa !93 - %544 = mul i64 %543, %541 - %545 = getelementptr inbounds nuw i8, ptr %512, i64 48 - %546 = load ptr, ptr %545, align 8, !tbaa !57 - %547 = getelementptr inbounds nuw i64, ptr %546, i64 %indvars.iv264 - %548 = load i64, ptr %547, align 8, !tbaa !96 - %549 = getelementptr i8, ptr %529, i64 %544 - %550 = getelementptr i8, ptr %549, i64 %548 - %.not.i189 = icmp eq ptr %550, null - br i1 %.not.i189, label %616, label %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 + %509 = phi i32 [ %.pre23.i, %505 ], [ %476, %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit.i ], [ %476, %._crit_edge ] + %510 = phi ptr [ %.pre21.i, %505 ], [ %474, %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit.i ], [ %474, %._crit_edge ] + %511 = getelementptr inbounds nuw i32, ptr %510, i64 %1 + %512 = sub i32 %509, %.sroa.speculated.i + store i32 %512, ptr %511, align 4, !tbaa !85 + br label %724 + +513: ; preds = %.lr.ph260, %723 + %indvars.iv262 = phi i64 [ 0, %.lr.ph260 ], [ %indvars.iv.next263, %723 ] + %514 = load ptr, ptr %0, align 8, !tbaa !35 + %515 = getelementptr inbounds nuw i8, ptr %514, i64 192 + %516 = load ptr, ptr %515, align 8, !tbaa !38 + %517 = getelementptr inbounds nuw i32, ptr %516, i64 %indvars.iv262 + %518 = load i32, ptr %517, align 4, !tbaa !85 + %519 = zext i32 %518 to i64 + %.not = icmp eq i64 %indvars.iv262, %519 + br i1 %.not, label %520, label %723 + +520: ; preds = %513 + %521 = icmp slt i32 %518, 0 + br i1 %521, label %.thread, label %522 + +522: ; preds = %520 + br i1 %16, label %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214, label %523 + +523: ; preds = %522 + %524 = load i64, ptr %14, align 8, !tbaa !62 + %525 = icmp slt i64 %1, %524 + %526 = load i32, ptr %11, align 8 + %.not.i.i182 = icmp slt i32 %518, %526 + %or.cond21.i.i183 = select i1 %525, i1 %.not.i.i182, i1 false + br i1 %or.cond21.i.i183, label %527, label %618 + +527: ; preds = %523 + %528 = getelementptr inbounds nuw i8, ptr %514, i64 144 + %529 = getelementptr inbounds nuw i8, ptr %514, i64 152 + %530 = load ptr, ptr %529, align 8, !tbaa !129 + %531 = load ptr, ptr %528, align 8, !tbaa !51 + %532 = icmp eq ptr %530, %531 + %or.cond3.i.i186 = or i1 %37, %532 + br i1 %or.cond3.i.i186, label %618, label %533 + +533: ; preds = %527 + %534 = getelementptr inbounds nuw i8, ptr %514, i64 72 + %535 = load ptr, ptr %534, align 8, !tbaa !54 + %536 = getelementptr inbounds nuw i32, ptr %535, i64 %1 + %537 = load i32, ptr %536, align 4, !tbaa !85 + %.not19.i.i187.not = icmp sgt i32 %.0105, %537 + br i1 %.not19.i.i187.not, label %618, label %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i188 + +_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i188: ; preds = %533 + %538 = getelementptr inbounds nuw i8, ptr %514, i64 120 + %539 = load ptr, ptr %538, align 8, !tbaa !54 + %540 = getelementptr inbounds nuw i32, ptr %539, i64 %1 + %541 = load i32, ptr %540, align 4, !tbaa !85 + %542 = add i32 %541, %29 + %543 = zext i32 %542 to i64 + %544 = getelementptr inbounds nuw i8, ptr %514, i64 216 + %545 = load i64, ptr %544, align 8, !tbaa !93 + %546 = mul i64 %545, %543 + %547 = getelementptr inbounds nuw i8, ptr %514, i64 48 + %548 = load ptr, ptr %547, align 8, !tbaa !57 + %549 = getelementptr inbounds nuw i64, ptr %548, i64 %indvars.iv262 + %550 = load i64, ptr %549, align 8, !tbaa !96 + %551 = getelementptr i8, ptr %531, i64 %546 + %552 = getelementptr i8, ptr %551, i64 %550 + %.not.i189 = icmp eq ptr %552, null + br i1 %.not.i189, label %618, label %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 _ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i188 - %551 = load ptr, ptr %512, align 8, !tbaa !9 - %552 = getelementptr inbounds nuw %"struct.OpenImageIO::v3_1_0::TypeDesc", ptr %551, i64 %indvars.iv264 - %553 = load i64, ptr %552, align 4 - %.sroa.01.0.extract.trunc.i191 = trunc i64 %553 to i8 + %553 = load ptr, ptr %514, align 8, !tbaa !9 + %554 = getelementptr inbounds nuw %"struct.OpenImageIO::v3_1_0::TypeDesc", ptr %553, i64 %indvars.iv262 + %555 = load i64, ptr %554, align 4 + %.sroa.01.0.extract.trunc.i191 = trunc i64 %555 to i8 switch i8 %.sroa.01.0.extract.trunc.i191, label %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i196 [ - i8 11, label %554 - i8 10, label %556 - i8 6, label %580 - i8 2, label %584 - i8 3, label %588 - i8 4, label %592 - i8 5, label %596 - i8 7, label %600 - i8 8, label %604 - i8 9, label %608 + i8 11, label %556 + i8 10, label %558 + i8 6, label %582 + i8 2, label %586 + i8 3, label %590 + i8 4, label %594 + i8 5, label %598 + i8 7, label %602 + i8 8, label %606 + i8 9, label %610 ] -554: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 - %555 = load float, ptr %550, align 4, !tbaa !138 - br label %616 - 556: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 - %557 = load i16, ptr %550, align 2, !tbaa !140 - %558 = zext i16 %557 to i32 - %559 = shl nuw nsw i32 %558, 13 - %560 = and i32 %559, 268427264 - %.signext.i.i.i192 = sext i16 %557 to i32 - %561 = and i32 %.signext.i.i.i192, -2147483648 - %562 = icmp samesign ugt i32 %560, 8388607 - br i1 %562, label %563, label %570, !prof !143 - -563: ; preds = %556 - %564 = or disjoint i32 %560, %561 - %565 = icmp samesign ult i32 %560, 260046848 - br i1 %565, label %566, label %568, !prof !143 - -566: ; preds = %563 - %567 = add nuw nsw i32 %564, 939524096 + %557 = load float, ptr %552, align 4, !tbaa !138 + br label %618 + +558: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 + %559 = load i16, ptr %552, align 2, !tbaa !140 + %560 = zext i16 %559 to i32 + %561 = shl nuw nsw i32 %560, 13 + %562 = and i32 %561, 268427264 + %.signext.i.i.i192 = sext i16 %559 to i32 + %563 = and i32 %.signext.i.i.i192, -2147483648 + %564 = icmp samesign ugt i32 %562, 8388607 + br i1 %564, label %565, label %572, !prof !143 + +565: ; preds = %558 + %566 = or disjoint i32 %562, %563 + %567 = icmp samesign ult i32 %562, 260046848 + br i1 %567, label %568, label %570, !prof !143 + +568: ; preds = %565 + %569 = add nuw nsw i32 %566, 939524096 br label %_ZNK9Imath_3_14halfcvfEv.exit.i194 -568: ; preds = %563 - %569 = or i32 %564, 2139095040 +570: ; preds = %565 + %571 = or i32 %566, 2139095040 br label %_ZNK9Imath_3_14halfcvfEv.exit.i194 -570: ; preds = %556 - %.not.i.i.i193 = icmp eq i32 %560, 0 - br i1 %.not.i.i.i193, label %_ZNK9Imath_3_14halfcvfEv.exit.i194, label %571 - -571: ; preds = %570 - %572 = tail call range(i32 9, 33) i32 @llvm.ctlz.i32(i32 %560, i1 true) - %573 = add nsw i32 %572, -8 - %574 = shl i32 %560, %573 - %575 = or i32 %561, %574 - %576 = or i32 %575, 947912704 - %577 = shl nuw nsw i32 %573, 23 - %578 = sub nuw i32 %576, %577 +572: ; preds = %558 + %.not.i.i.i193 = icmp eq i32 %562, 0 + br i1 %.not.i.i.i193, label %_ZNK9Imath_3_14halfcvfEv.exit.i194, label %573 + +573: ; preds = %572 + %574 = tail call range(i32 9, 33) i32 @llvm.ctlz.i32(i32 %562, i1 true) + %575 = add nsw i32 %574, -8 + %576 = shl i32 %562, %575 + %577 = or i32 %563, %576 + %578 = or i32 %577, 947912704 + %579 = shl nuw nsw i32 %575, 23 + %580 = sub nuw i32 %578, %579 br label %_ZNK9Imath_3_14halfcvfEv.exit.i194 -_ZNK9Imath_3_14halfcvfEv.exit.i194: ; preds = %571, %570, %568, %566 - %.sroa.0.0.i.i.i195 = phi i32 [ %567, %566 ], [ %569, %568 ], [ %578, %571 ], [ %561, %570 ] - %579 = bitcast i32 %.sroa.0.0.i.i.i195 to float - br label %616 - -580: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 - %581 = load i32, ptr %550, align 4, !tbaa !85 - %582 = uitofp i32 %581 to float - %583 = fmul float %582, 0x3DF0000000000000 - br label %616 - -584: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 - %585 = load i8, ptr %550, align 1, !tbaa !47 - %586 = uitofp i8 %585 to float - %587 = fmul float %586, 0x3F70101020000000 - br label %616 - -588: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 - %589 = load i8, ptr %550, align 1, !tbaa !47 - %590 = sitofp i8 %589 to float - %591 = fmul float %590, 0x3F80204080000000 - br label %616 - -592: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 - %593 = load i16, ptr %550, align 2, !tbaa !144 - %594 = uitofp i16 %593 to float - %595 = fmul float %594, 0x3EF0001000000000 - br label %616 - -596: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 - %597 = load i16, ptr %550, align 2, !tbaa !144 - %598 = sitofp i16 %597 to float - %599 = fmul float %598, 0x3F00002000000000 - br label %616 - -600: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 - %601 = load i32, ptr %550, align 4, !tbaa !85 - %602 = sitofp i32 %601 to float - %603 = fmul float %602, 0x3E00000000000000 - br label %616 - -604: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 - %605 = load i64, ptr %550, align 8, !tbaa !145 - %606 = uitofp i64 %605 to float - %607 = fmul float %606, 0x3BF0000000000000 - br label %616 - -608: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 - %609 = load i64, ptr %550, align 8, !tbaa !145 - %610 = sitofp i64 %609 to float - %611 = fmul float %610, 0x3C00000000000000 - br label %616 +_ZNK9Imath_3_14halfcvfEv.exit.i194: ; preds = %573, %572, %570, %568 + %.sroa.0.0.i.i.i195 = phi i32 [ %569, %568 ], [ %571, %570 ], [ %580, %573 ], [ %563, %572 ] + %581 = bitcast i32 %.sroa.0.0.i.i.i195 to float + br label %618 + +582: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 + %583 = load i32, ptr %552, align 4, !tbaa !85 + %584 = uitofp i32 %583 to float + %585 = fmul float %584, 0x3DF0000000000000 + br label %618 + +586: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 + %587 = load i8, ptr %552, align 1, !tbaa !47 + %588 = uitofp i8 %587 to float + %589 = fmul float %588, 0x3F70101020000000 + br label %618 + +590: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 + %591 = load i8, ptr %552, align 1, !tbaa !47 + %592 = sitofp i8 %591 to float + %593 = fmul float %592, 0x3F80204080000000 + br label %618 + +594: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 + %595 = load i16, ptr %552, align 2, !tbaa !144 + %596 = uitofp i16 %595 to float + %597 = fmul float %596, 0x3EF0001000000000 + br label %618 + +598: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 + %599 = load i16, ptr %552, align 2, !tbaa !144 + %600 = sitofp i16 %599 to float + %601 = fmul float %600, 0x3F00002000000000 + br label %618 + +602: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 + %603 = load i32, ptr %552, align 4, !tbaa !85 + %604 = sitofp i32 %603 to float + %605 = fmul float %604, 0x3E00000000000000 + br label %618 + +606: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 + %607 = load i64, ptr %552, align 8, !tbaa !145 + %608 = uitofp i64 %607 to float + %609 = fmul float %608, 0x3BF0000000000000 + br label %618 + +610: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 + %611 = load i64, ptr %552, align 8, !tbaa !145 + %612 = sitofp i64 %611 to float + %613 = fmul float %612, 0x3C00000000000000 + br label %618 _ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i196: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 - %612 = trunc i64 %553 to i32 - %613 = and i32 %612, 255 - %614 = load ptr, ptr @stderr, align 8, !tbaa !89 - %615 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %614, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 689, ptr noundef nonnull @__FUNCTION__._ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii, ptr noundef nonnull @.str.11, i32 noundef %613) #33 - %.pre274 = load i64, ptr %14, align 8, !tbaa !62 - %.pre275 = load i32, ptr %11, align 8 - br label %616 - -616: ; preds = %521, %525, %531, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i188, %554, %_ZNK9Imath_3_14halfcvfEv.exit.i194, %580, %584, %588, %592, %596, %600, %604, %608, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i196 - %617 = phi i32 [ %524, %521 ], [ %524, %525 ], [ %524, %531 ], [ %524, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i188 ], [ %524, %608 ], [ %524, %604 ], [ %524, %600 ], [ %524, %596 ], [ %524, %592 ], [ %524, %588 ], [ %524, %584 ], [ %524, %580 ], [ %524, %_ZNK9Imath_3_14halfcvfEv.exit.i194 ], [ %524, %554 ], [ %.pre275, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i196 ] - %618 = phi i64 [ %522, %521 ], [ %522, %525 ], [ %522, %531 ], [ %522, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i188 ], [ %522, %608 ], [ %522, %604 ], [ %522, %600 ], [ %522, %596 ], [ %522, %592 ], [ %522, %588 ], [ %522, %584 ], [ %522, %580 ], [ %522, %_ZNK9Imath_3_14halfcvfEv.exit.i194 ], [ %522, %554 ], [ %.pre274, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i196 ] - %.0.i184.ph = phi float [ 0.000000e+00, %521 ], [ 0.000000e+00, %525 ], [ 0.000000e+00, %531 ], [ 0.000000e+00, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i188 ], [ %611, %608 ], [ %607, %604 ], [ %603, %600 ], [ %599, %596 ], [ %595, %592 ], [ %591, %588 ], [ %587, %584 ], [ %583, %580 ], [ %579, %_ZNK9Imath_3_14halfcvfEv.exit.i194 ], [ %555, %554 ], [ 0.000000e+00, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i196 ] + %614 = trunc i64 %555 to i32 + %615 = and i32 %614, 255 + %616 = load ptr, ptr @stderr, align 8, !tbaa !89 + %617 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %616, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 689, ptr noundef nonnull @__FUNCTION__._ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii, ptr noundef nonnull @.str.11, i32 noundef %615) #33 + %.pre272 = load i64, ptr %14, align 8, !tbaa !62 + %.pre273 = load i32, ptr %11, align 8 + br label %618 + +618: ; preds = %523, %527, %533, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i188, %556, %_ZNK9Imath_3_14halfcvfEv.exit.i194, %582, %586, %590, %594, %598, %602, %606, %610, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i196 + %619 = phi i32 [ %526, %523 ], [ %526, %527 ], [ %526, %533 ], [ %526, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i188 ], [ %526, %610 ], [ %526, %606 ], [ %526, %602 ], [ %526, %598 ], [ %526, %594 ], [ %526, %590 ], [ %526, %586 ], [ %526, %582 ], [ %526, %_ZNK9Imath_3_14halfcvfEv.exit.i194 ], [ %526, %556 ], [ %.pre273, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i196 ] + %620 = phi i64 [ %524, %523 ], [ %524, %527 ], [ %524, %533 ], [ %524, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i188 ], [ %524, %610 ], [ %524, %606 ], [ %524, %602 ], [ %524, %598 ], [ %524, %594 ], [ %524, %590 ], [ %524, %586 ], [ %524, %582 ], [ %524, %_ZNK9Imath_3_14halfcvfEv.exit.i194 ], [ %524, %556 ], [ %.pre272, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i196 ] + %.0.i184.ph = phi float [ 0.000000e+00, %523 ], [ 0.000000e+00, %527 ], [ 0.000000e+00, %533 ], [ 0.000000e+00, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i188 ], [ %613, %610 ], [ %609, %606 ], [ %605, %602 ], [ %601, %598 ], [ %597, %594 ], [ %593, %590 ], [ %589, %586 ], [ %585, %582 ], [ %581, %_ZNK9Imath_3_14halfcvfEv.exit.i194 ], [ %557, %556 ], [ 0.000000e+00, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i196 ] %.inv = fcmp oge float %.0.i184.ph, 0.000000e+00 %.0.i120250 = select i1 %.inv, float %.0.i184.ph, float 0.000000e+00 - %619 = fcmp ogt float %.0.i120250, 1.000000e+00 - %.1.i121251 = select i1 %619, float 1.000000e+00, float %.0.i120250 - %620 = icmp slt i64 %1, %618 - %.not.i.i199 = icmp slt i32 %516, %617 - %or.cond21.i.i200 = select i1 %620, i1 %.not.i.i199, i1 false - br i1 %or.cond21.i.i200, label %621, label %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214 - -621: ; preds = %616 - %622 = load ptr, ptr %0, align 8, !tbaa !35 - %.not18.i.i202 = icmp eq ptr %622, null - br i1 %.not18.i.i202, label %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214, label %623 - -623: ; preds = %621 - %624 = getelementptr inbounds nuw i8, ptr %622, i64 144 - %625 = getelementptr inbounds nuw i8, ptr %622, i64 152 - %626 = load ptr, ptr %625, align 8, !tbaa !129 - %627 = load ptr, ptr %624, align 8, !tbaa !51 - %628 = icmp eq ptr %626, %627 - %or.cond3.i.i203 = or i1 %38, %628 - br i1 %or.cond3.i.i203, label %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214, label %629 - -629: ; preds = %623 - %630 = getelementptr inbounds nuw i8, ptr %622, i64 72 - %631 = load ptr, ptr %630, align 8, !tbaa !54 - %632 = getelementptr inbounds nuw i32, ptr %631, i64 %1 - %633 = load i32, ptr %632, align 4, !tbaa !85 - %.not19.i.i204 = icmp slt i32 %.0105, %633 + %621 = fcmp ogt float %.0.i120250, 1.000000e+00 + %.1.i121251 = select i1 %621, float 1.000000e+00, float %.0.i120250 + %622 = icmp slt i64 %1, %620 + %.not.i.i199 = icmp slt i32 %518, %619 + %or.cond21.i.i200 = select i1 %622, i1 %.not.i.i199, i1 false + br i1 %or.cond21.i.i200, label %623, label %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214 + +623: ; preds = %618 + %624 = load ptr, ptr %0, align 8, !tbaa !35 + %.not18.i.i202 = icmp eq ptr %624, null + br i1 %.not18.i.i202, label %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214, label %625 + +625: ; preds = %623 + %626 = getelementptr inbounds nuw i8, ptr %624, i64 144 + %627 = getelementptr inbounds nuw i8, ptr %624, i64 152 + %628 = load ptr, ptr %627, align 8, !tbaa !129 + %629 = load ptr, ptr %626, align 8, !tbaa !51 + %630 = icmp eq ptr %628, %629 + %or.cond3.i.i203 = or i1 %38, %630 + br i1 %or.cond3.i.i203, label %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214, label %631 + +631: ; preds = %625 + %632 = getelementptr inbounds nuw i8, ptr %624, i64 72 + %633 = load ptr, ptr %632, align 8, !tbaa !54 + %634 = getelementptr inbounds nuw i32, ptr %633, i64 %1 + %635 = load i32, ptr %634, align 4, !tbaa !85 + %.not19.i.i204 = icmp slt i32 %.0105, %635 br i1 %.not19.i.i204, label %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i205, label %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214 -_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i205: ; preds = %629 - %634 = getelementptr inbounds nuw i8, ptr %622, i64 120 - %635 = load ptr, ptr %634, align 8, !tbaa !54 - %636 = getelementptr inbounds nuw i32, ptr %635, i64 %1 - %637 = load i32, ptr %636, align 4, !tbaa !85 - %638 = add i32 %637, %.0105 - %639 = zext i32 %638 to i64 - %640 = getelementptr inbounds nuw i8, ptr %622, i64 216 - %641 = load i64, ptr %640, align 8, !tbaa !93 - %642 = mul i64 %641, %639 - %643 = getelementptr inbounds nuw i8, ptr %622, i64 48 - %644 = load ptr, ptr %643, align 8, !tbaa !57 - %645 = getelementptr inbounds nuw i64, ptr %644, i64 %indvars.iv264 - %646 = load i64, ptr %645, align 8, !tbaa !96 - %647 = getelementptr i8, ptr %627, i64 %642 - %648 = getelementptr i8, ptr %647, i64 %646 - %.not.i206 = icmp eq ptr %648, null +_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i205: ; preds = %631 + %636 = getelementptr inbounds nuw i8, ptr %624, i64 120 + %637 = load ptr, ptr %636, align 8, !tbaa !54 + %638 = getelementptr inbounds nuw i32, ptr %637, i64 %1 + %639 = load i32, ptr %638, align 4, !tbaa !85 + %640 = add i32 %639, %.0105 + %641 = zext i32 %640 to i64 + %642 = getelementptr inbounds nuw i8, ptr %624, i64 216 + %643 = load i64, ptr %642, align 8, !tbaa !93 + %644 = mul i64 %643, %641 + %645 = getelementptr inbounds nuw i8, ptr %624, i64 48 + %646 = load ptr, ptr %645, align 8, !tbaa !57 + %647 = getelementptr inbounds nuw i64, ptr %646, i64 %indvars.iv262 + %648 = load i64, ptr %647, align 8, !tbaa !96 + %649 = getelementptr i8, ptr %629, i64 %644 + %650 = getelementptr i8, ptr %649, i64 %648 + %.not.i206 = icmp eq ptr %650, null br i1 %.not.i206, label %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214, label %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 _ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i205 - %649 = load ptr, ptr %622, align 8, !tbaa !9 - %650 = getelementptr inbounds nuw %"struct.OpenImageIO::v3_1_0::TypeDesc", ptr %649, i64 %indvars.iv264 - %651 = load i64, ptr %650, align 4 - %.sroa.01.0.extract.trunc.i208 = trunc i64 %651 to i8 + %651 = load ptr, ptr %624, align 8, !tbaa !9 + %652 = getelementptr inbounds nuw %"struct.OpenImageIO::v3_1_0::TypeDesc", ptr %651, i64 %indvars.iv262 + %653 = load i64, ptr %652, align 4 + %.sroa.01.0.extract.trunc.i208 = trunc i64 %653 to i8 switch i8 %.sroa.01.0.extract.trunc.i208, label %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i213 [ - i8 11, label %652 - i8 10, label %654 - i8 6, label %678 - i8 2, label %682 - i8 3, label %686 - i8 4, label %690 - i8 5, label %694 - i8 7, label %698 - i8 8, label %702 - i8 9, label %706 + i8 11, label %654 + i8 10, label %656 + i8 6, label %680 + i8 2, label %684 + i8 3, label %688 + i8 4, label %692 + i8 5, label %696 + i8 7, label %700 + i8 8, label %704 + i8 9, label %708 ] -652: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 - %653 = load float, ptr %648, align 4, !tbaa !138 +654: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 + %655 = load float, ptr %650, align 4, !tbaa !138 br label %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214 -654: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 - %655 = load i16, ptr %648, align 2, !tbaa !140 - %656 = zext i16 %655 to i32 - %657 = shl nuw nsw i32 %656, 13 - %658 = and i32 %657, 268427264 - %.signext.i.i.i209 = sext i16 %655 to i32 - %659 = and i32 %.signext.i.i.i209, -2147483648 - %660 = icmp samesign ugt i32 %658, 8388607 - br i1 %660, label %661, label %668, !prof !143 - -661: ; preds = %654 - %662 = or disjoint i32 %658, %659 - %663 = icmp samesign ult i32 %658, 260046848 - br i1 %663, label %664, label %666, !prof !143 - -664: ; preds = %661 - %665 = add nuw nsw i32 %662, 939524096 +656: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 + %657 = load i16, ptr %650, align 2, !tbaa !140 + %658 = zext i16 %657 to i32 + %659 = shl nuw nsw i32 %658, 13 + %660 = and i32 %659, 268427264 + %.signext.i.i.i209 = sext i16 %657 to i32 + %661 = and i32 %.signext.i.i.i209, -2147483648 + %662 = icmp samesign ugt i32 %660, 8388607 + br i1 %662, label %663, label %670, !prof !143 + +663: ; preds = %656 + %664 = or disjoint i32 %660, %661 + %665 = icmp samesign ult i32 %660, 260046848 + br i1 %665, label %666, label %668, !prof !143 + +666: ; preds = %663 + %667 = add nuw nsw i32 %664, 939524096 br label %_ZNK9Imath_3_14halfcvfEv.exit.i211 -666: ; preds = %661 - %667 = or i32 %662, 2139095040 +668: ; preds = %663 + %669 = or i32 %664, 2139095040 br label %_ZNK9Imath_3_14halfcvfEv.exit.i211 -668: ; preds = %654 - %.not.i.i.i210 = icmp eq i32 %658, 0 - br i1 %.not.i.i.i210, label %_ZNK9Imath_3_14halfcvfEv.exit.i211, label %669 - -669: ; preds = %668 - %670 = tail call range(i32 9, 33) i32 @llvm.ctlz.i32(i32 %658, i1 true) - %671 = add nsw i32 %670, -8 - %672 = shl i32 %658, %671 - %673 = or i32 %659, %672 - %674 = or i32 %673, 947912704 - %675 = shl nuw nsw i32 %671, 23 - %676 = sub nuw i32 %674, %675 +670: ; preds = %656 + %.not.i.i.i210 = icmp eq i32 %660, 0 + br i1 %.not.i.i.i210, label %_ZNK9Imath_3_14halfcvfEv.exit.i211, label %671 + +671: ; preds = %670 + %672 = tail call range(i32 9, 33) i32 @llvm.ctlz.i32(i32 %660, i1 true) + %673 = add nsw i32 %672, -8 + %674 = shl i32 %660, %673 + %675 = or i32 %661, %674 + %676 = or i32 %675, 947912704 + %677 = shl nuw nsw i32 %673, 23 + %678 = sub nuw i32 %676, %677 br label %_ZNK9Imath_3_14halfcvfEv.exit.i211 -_ZNK9Imath_3_14halfcvfEv.exit.i211: ; preds = %669, %668, %666, %664 - %.sroa.0.0.i.i.i212 = phi i32 [ %665, %664 ], [ %667, %666 ], [ %676, %669 ], [ %659, %668 ] - %677 = bitcast i32 %.sroa.0.0.i.i.i212 to float +_ZNK9Imath_3_14halfcvfEv.exit.i211: ; preds = %671, %670, %668, %666 + %.sroa.0.0.i.i.i212 = phi i32 [ %667, %666 ], [ %669, %668 ], [ %678, %671 ], [ %661, %670 ] + %679 = bitcast i32 %.sroa.0.0.i.i.i212 to float br label %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214 -678: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 - %679 = load i32, ptr %648, align 4, !tbaa !85 - %680 = uitofp i32 %679 to float - %681 = fmul float %680, 0x3DF0000000000000 +680: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 + %681 = load i32, ptr %650, align 4, !tbaa !85 + %682 = uitofp i32 %681 to float + %683 = fmul float %682, 0x3DF0000000000000 br label %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214 -682: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 - %683 = load i8, ptr %648, align 1, !tbaa !47 - %684 = uitofp i8 %683 to float - %685 = fmul float %684, 0x3F70101020000000 +684: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 + %685 = load i8, ptr %650, align 1, !tbaa !47 + %686 = uitofp i8 %685 to float + %687 = fmul float %686, 0x3F70101020000000 br label %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214 -686: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 - %687 = load i8, ptr %648, align 1, !tbaa !47 - %688 = sitofp i8 %687 to float - %689 = fmul float %688, 0x3F80204080000000 +688: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 + %689 = load i8, ptr %650, align 1, !tbaa !47 + %690 = sitofp i8 %689 to float + %691 = fmul float %690, 0x3F80204080000000 br label %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214 -690: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 - %691 = load i16, ptr %648, align 2, !tbaa !144 - %692 = uitofp i16 %691 to float - %693 = fmul float %692, 0x3EF0001000000000 +692: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 + %693 = load i16, ptr %650, align 2, !tbaa !144 + %694 = uitofp i16 %693 to float + %695 = fmul float %694, 0x3EF0001000000000 br label %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214 -694: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 - %695 = load i16, ptr %648, align 2, !tbaa !144 - %696 = sitofp i16 %695 to float - %697 = fmul float %696, 0x3F00002000000000 +696: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 + %697 = load i16, ptr %650, align 2, !tbaa !144 + %698 = sitofp i16 %697 to float + %699 = fmul float %698, 0x3F00002000000000 br label %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214 -698: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 - %699 = load i32, ptr %648, align 4, !tbaa !85 - %700 = sitofp i32 %699 to float - %701 = fmul float %700, 0x3E00000000000000 +700: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 + %701 = load i32, ptr %650, align 4, !tbaa !85 + %702 = sitofp i32 %701 to float + %703 = fmul float %702, 0x3E00000000000000 br label %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214 -702: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 - %703 = load i64, ptr %648, align 8, !tbaa !145 - %704 = uitofp i64 %703 to float - %705 = fmul float %704, 0x3BF0000000000000 +704: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 + %705 = load i64, ptr %650, align 8, !tbaa !145 + %706 = uitofp i64 %705 to float + %707 = fmul float %706, 0x3BF0000000000000 br label %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214 -706: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 - %707 = load i64, ptr %648, align 8, !tbaa !145 - %708 = sitofp i64 %707 to float - %709 = fmul float %708, 0x3C00000000000000 +708: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 + %709 = load i64, ptr %650, align 8, !tbaa !145 + %710 = sitofp i64 %709 to float + %711 = fmul float %710, 0x3C00000000000000 br label %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214 _ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i213: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 - %710 = trunc i64 %651 to i32 - %711 = and i32 %710, 255 - %712 = load ptr, ptr @stderr, align 8, !tbaa !89 - %713 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %712, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 689, ptr noundef nonnull @__FUNCTION__._ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii, ptr noundef nonnull @.str.11, i32 noundef %711) #33 + %712 = trunc i64 %653 to i32 + %713 = and i32 %712, 255 + %714 = load ptr, ptr @stderr, align 8, !tbaa !89 + %715 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %714, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 689, ptr noundef nonnull @__FUNCTION__._ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii, ptr noundef nonnull @.str.11, i32 noundef %713) #33 br label %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214 -_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214: ; preds = %520, %616, %621, %623, %629, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i205, %652, %_ZNK9Imath_3_14halfcvfEv.exit.i211, %678, %682, %686, %690, %694, %698, %702, %706, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i213 - %.1.i121253 = phi float [ %.1.i121251, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i213 ], [ %.1.i121251, %652 ], [ %.1.i121251, %_ZNK9Imath_3_14halfcvfEv.exit.i211 ], [ %.1.i121251, %678 ], [ %.1.i121251, %682 ], [ %.1.i121251, %686 ], [ %.1.i121251, %690 ], [ %.1.i121251, %694 ], [ %.1.i121251, %698 ], [ %.1.i121251, %702 ], [ %.1.i121251, %706 ], [ %.1.i121251, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i205 ], [ %.1.i121251, %629 ], [ %.1.i121251, %623 ], [ %.1.i121251, %621 ], [ %.1.i121251, %616 ], [ 0.000000e+00, %520 ] - %.0.i201 = phi float [ 0.000000e+00, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i213 ], [ %653, %652 ], [ %677, %_ZNK9Imath_3_14halfcvfEv.exit.i211 ], [ %681, %678 ], [ %685, %682 ], [ %689, %686 ], [ %693, %690 ], [ %697, %694 ], [ %701, %698 ], [ %705, %702 ], [ %709, %706 ], [ 0.000000e+00, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i205 ], [ 0.000000e+00, %629 ], [ 0.000000e+00, %623 ], [ 0.000000e+00, %621 ], [ 0.000000e+00, %616 ], [ 0.000000e+00, %520 ] +_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214: ; preds = %522, %618, %623, %625, %631, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i205, %654, %_ZNK9Imath_3_14halfcvfEv.exit.i211, %680, %684, %688, %692, %696, %700, %704, %708, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i213 + %.1.i121253 = phi float [ %.1.i121251, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i213 ], [ %.1.i121251, %654 ], [ %.1.i121251, %_ZNK9Imath_3_14halfcvfEv.exit.i211 ], [ %.1.i121251, %680 ], [ %.1.i121251, %684 ], [ %.1.i121251, %688 ], [ %.1.i121251, %692 ], [ %.1.i121251, %696 ], [ %.1.i121251, %700 ], [ %.1.i121251, %704 ], [ %.1.i121251, %708 ], [ %.1.i121251, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i205 ], [ %.1.i121251, %631 ], [ %.1.i121251, %625 ], [ %.1.i121251, %623 ], [ %.1.i121251, %618 ], [ 0.000000e+00, %522 ] + %.0.i201 = phi float [ 0.000000e+00, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i213 ], [ %655, %654 ], [ %679, %_ZNK9Imath_3_14halfcvfEv.exit.i211 ], [ %683, %680 ], [ %687, %684 ], [ %691, %688 ], [ %695, %692 ], [ %699, %696 ], [ %703, %700 ], [ %707, %704 ], [ %711, %708 ], [ 0.000000e+00, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i205 ], [ 0.000000e+00, %631 ], [ 0.000000e+00, %625 ], [ 0.000000e+00, %623 ], [ 0.000000e+00, %618 ], [ 0.000000e+00, %522 ] %.inv254 = fcmp oge float %.0.i201, 0.000000e+00 %.0.i = select i1 %.inv254, float %.0.i201, float 0.000000e+00 - %714 = fcmp ogt float %.0.i, 1.000000e+00 - %.1.i = select i1 %714, float 1.000000e+00, float %.0.i + %716 = fcmp ogt float %.0.i, 1.000000e+00 + %.1.i = select i1 %716, float 1.000000e+00, float %.0.i br label %.thread -.thread: ; preds = %518, %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214 - %715 = phi float [ %.1.i121253, %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214 ], [ 1.000000e+00, %518 ] - %716 = phi float [ %.1.i, %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214 ], [ 1.000000e+00, %518 ] - %717 = fadd float %715, %716 - %718 = fneg float %715 - %719 = tail call float @llvm.fmuladd.f32(float %718, float %716, float %717) - %720 = trunc nuw nsw i64 %indvars.iv264 to i32 - tail call void @_ZN11OpenImageIO6v3_1_08DeepData14set_deep_valueEliif(ptr noundef nonnull align 8 dereferenceable(20) %0, i64 noundef %1, i32 noundef %720, i32 noundef %29, float noundef %719) - br label %721 - -721: ; preds = %511, %.thread - %indvars.iv.next265 = add nuw nsw i64 %indvars.iv264, 1 - %exitcond268.not = icmp eq i64 %indvars.iv.next265, %wide.trip.count267 - br i1 %exitcond268.not, label %._crit_edge, label %511, !llvm.loop !163 - -722: ; preds = %_ZN11OpenImageIO6v3_1_08DeepData13erase_samplesElii.exit, %32, %26 +.thread: ; preds = %520, %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214 + %717 = phi float [ %.1.i121253, %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214 ], [ 1.000000e+00, %520 ] + %718 = phi float [ %.1.i, %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214 ], [ 1.000000e+00, %520 ] + %719 = fadd float %717, %718 + %720 = fneg float %717 + %721 = tail call float @llvm.fmuladd.f32(float %720, float %718, float %719) + %722 = trunc nuw nsw i64 %indvars.iv262 to i32 + tail call void @_ZN11OpenImageIO6v3_1_08DeepData14set_deep_valueEliif(ptr noundef nonnull align 8 dereferenceable(20) %0, i64 noundef %1, i32 noundef %722, i32 noundef %29, float noundef %721) + br label %723 + +723: ; preds = %513, %.thread + %indvars.iv.next263 = add nuw nsw i64 %indvars.iv262, 1 + %exitcond266.not = icmp eq i64 %indvars.iv.next263, %wide.trip.count265 + br i1 %exitcond266.not, label %._crit_edge, label %513, !llvm.loop !163 + +724: ; preds = %_ZN11OpenImageIO6v3_1_08DeepData13erase_samplesElii.exit, %32, %26 %.1 = phi i32 [ %29, %_ZN11OpenImageIO6v3_1_08DeepData13erase_samplesElii.exit ], [ %.0105, %32 ], [ %.0105, %26 ] - %723 = add nsw i32 %.1, 1 + %725 = add nsw i32 %.1, 1 br label %17, !llvm.loop !164 .loopexit: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit, %2 diff --git a/bench/openssl/optimized/cipher_aes_cbc_hmac_sha1_hw.ll b/bench/openssl/optimized/cipher_aes_cbc_hmac_sha1_hw.ll index 49e51f44904..0c6e4b63aac 100644 --- a/bench/openssl/optimized/cipher_aes_cbc_hmac_sha1_hw.ll +++ b/bench/openssl/optimized/cipher_aes_cbc_hmac_sha1_hw.ll @@ -78,7 +78,7 @@ define internal range(i32 0, 2) i32 @aesni_cbc_hmac_sha1_cipher(ptr noundef %0, store i64 -1, ptr %6, align 8, !tbaa !9 %13 = and i64 %3, 15 %.not = icmp eq i64 %13, 0 - br i1 %.not, label %14, label %488 + br i1 %.not, label %14, label %492 14: ; preds = %4 %15 = getelementptr inbounds nuw i8, ptr %0, i64 108 @@ -94,8 +94,8 @@ define internal range(i32 0, 2) i32 @aesni_cbc_hmac_sha1_cipher(ptr noundef %0, 20: ; preds = %18 %21 = add i64 %7, 36 %22 = and i64 %21, -16 - %.not384 = icmp eq i64 %3, %22 - br i1 %.not384, label %23, label %488 + %.not382 = icmp eq i64 %3, %22 + br i1 %.not382, label %23, label %492 23: ; preds = %20 %24 = getelementptr inbounds nuw i8, ptr %0, i64 448 @@ -113,8 +113,8 @@ define internal range(i32 0, 2) i32 @aesni_cbc_hmac_sha1_cipher(ptr noundef %0, 30: ; preds = %27 %31 = sub nuw i64 %.0343, %28 - %.not385 = icmp ult i64 %31, 64 - br i1 %.not385, label %79, label %32 + %.not383 = icmp ult i64 %31, 64 + br i1 %.not383, label %79, label %32 32: ; preds = %30 %33 = lshr i64 %31, 6 @@ -206,31 +206,31 @@ sha1_update.exit: ; preds = %59, %60 %81 = getelementptr inbounds nuw i8, ptr %2, i64 %80 %82 = sub i64 %.0343, %80 %83 = load i32, ptr %9, align 4, !tbaa !28 - %.not.i388 = icmp eq i32 %83, 0 - br i1 %.not.i388, label %90, label %84 + %.not.i386 = icmp eq i32 %83, 0 + br i1 %.not.i386, label %90, label %84 84: ; preds = %79 %85 = zext i32 %83 to i64 %86 = sub nsw i64 64, %85 - %spec.select.i389 = tail call i64 @llvm.umin.i64(i64 %82, i64 %86) - %87 = tail call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef %81, i64 noundef %spec.select.i389) #9 - %88 = getelementptr inbounds nuw i8, ptr %81, i64 %spec.select.i389 - %89 = sub i64 %82, %spec.select.i389 + %spec.select.i387 = tail call i64 @llvm.umin.i64(i64 %82, i64 %86) + %87 = tail call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef %81, i64 noundef %spec.select.i387) #9 + %88 = getelementptr inbounds nuw i8, ptr %81, i64 %spec.select.i387 + %89 = sub i64 %82, %spec.select.i387 br label %90 90: ; preds = %84, %79 - %.033.i390 = phi i64 [ %89, %84 ], [ %82, %79 ] - %.032.i391 = phi ptr [ %88, %84 ], [ %81, %79 ] - %91 = and i64 %.033.i390, 63 - %92 = and i64 %.033.i390, -64 - %.not39.i392 = icmp eq i64 %92, 0 - br i1 %.not39.i392, label %108, label %93 + %.033.i388 = phi i64 [ %89, %84 ], [ %82, %79 ] + %.032.i389 = phi ptr [ %88, %84 ], [ %81, %79 ] + %91 = and i64 %.033.i388, 63 + %92 = and i64 %.033.i388, -64 + %.not39.i390 = icmp eq i64 %92, 0 + br i1 %.not39.i390, label %108, label %93 93: ; preds = %90 - %94 = lshr i64 %.033.i390, 6 - tail call void @sha1_block_data_order(ptr noundef nonnull %8, ptr noundef %.032.i391, i64 noundef %94) #9 - %95 = getelementptr inbounds nuw i8, ptr %.032.i391, i64 %92 - %96 = lshr i64 %.033.i390, 29 + %94 = lshr i64 %.033.i388, 6 + tail call void @sha1_block_data_order(ptr noundef nonnull %8, ptr noundef %.032.i389, i64 noundef %94) #9 + %95 = getelementptr inbounds nuw i8, ptr %.032.i389, i64 %92 + %96 = lshr i64 %.033.i388, 29 %97 = getelementptr inbounds nuw i8, ptr %0, i64 720 %98 = load i32, ptr %97, align 4, !tbaa !24 %99 = trunc i64 %96 to i32 @@ -238,8 +238,8 @@ sha1_update.exit: ; preds = %59, %60 store i32 %100, ptr %97, align 4, !tbaa !24 %101 = getelementptr inbounds nuw i8, ptr %0, i64 716 %102 = load i32, ptr %101, align 4, !tbaa !25 - %.tr.i393 = trunc i64 %92 to i32 - %103 = shl i32 %.tr.i393, 3 + %.tr.i391 = trunc i64 %92 to i32 + %103 = shl i32 %.tr.i391, 3 %104 = add i32 %102, %103 store i32 %104, ptr %101, align 4, !tbaa !25 %105 = icmp ult i32 %104, %103 @@ -251,21 +251,21 @@ sha1_update.exit: ; preds = %59, %60 br label %108 108: ; preds = %106, %93, %90 - %.1.i394 = phi ptr [ %95, %106 ], [ %95, %93 ], [ %.032.i391, %90 ] - %.not40.i395 = icmp eq i64 %91, 0 - br i1 %.not40.i395, label %sha1_update.exit396, label %109 + %.1.i392 = phi ptr [ %95, %106 ], [ %95, %93 ], [ %.032.i389, %90 ] + %.not40.i393 = icmp eq i64 %91, 0 + br i1 %.not40.i393, label %sha1_update.exit394, label %109 109: ; preds = %108 - %110 = tail call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef %.1.i394, i64 noundef %91) #9 - br label %sha1_update.exit396 + %110 = tail call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef %.1.i392, i64 noundef %91) #9 + br label %sha1_update.exit394 -sha1_update.exit396: ; preds = %108, %109 - %.not386 = icmp eq i64 %.0343, %3 - br i1 %.not386, label %140, label %111 +sha1_update.exit394: ; preds = %108, %109 + %.not384 = icmp eq i64 %.0343, %3 + br i1 %.not384, label %140, label %111 -111: ; preds = %sha1_update.exit396 - %.not387 = icmp eq ptr %2, %1 - br i1 %.not387, label %116, label %112 +111: ; preds = %sha1_update.exit394 + %.not385 = icmp eq ptr %2, %1 + br i1 %.not385, label %116, label %112 112: ; preds = %111 %113 = getelementptr inbounds nuw i8, ptr %1, i64 %.0346 @@ -280,32 +280,32 @@ sha1_update.exit396: ; preds = %108, %109 %119 = getelementptr inbounds nuw i8, ptr %0, i64 600 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(96) %8, ptr noundef nonnull align 8 dereferenceable(96) %119, i64 96, i1 false), !tbaa.struct !7 %120 = load i32, ptr %9, align 4, !tbaa !28 - %.not.i397 = icmp eq i32 %120, 0 - br i1 %.not.i397, label %.thread445, label %121 + %.not.i395 = icmp eq i32 %120, 0 + br i1 %.not.i395, label %.thread443, label %121 121: ; preds = %116 %122 = zext i32 %120 to i64 %123 = sub nsw i64 64, %122 - %spec.select.i398 = tail call i64 @llvm.umin.i64(i64 %123, i64 20) - %124 = tail call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef %117, i64 noundef %spec.select.i398) #9 - %125 = getelementptr inbounds nuw i8, ptr %117, i64 %spec.select.i398 - %126 = sub nuw nsw i64 20, %spec.select.i398 - %.not40.i404 = icmp ugt i64 %123, 19 - br i1 %.not40.i404, label %sha1_update.exit405, label %.thread445 - -.thread445: ; preds = %116, %121 - %.1.i403448 = phi ptr [ %125, %121 ], [ %117, %116 ] + %spec.select.i396 = tail call i64 @llvm.umin.i64(i64 %123, i64 20) + %124 = tail call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef %117, i64 noundef %spec.select.i396) #9 + %125 = getelementptr inbounds nuw i8, ptr %117, i64 %spec.select.i396 + %126 = sub nuw nsw i64 20, %spec.select.i396 + %.not40.i402 = icmp ugt i64 %123, 19 + br i1 %.not40.i402, label %sha1_update.exit403, label %.thread443 + +.thread443: ; preds = %116, %121 + %.1.i401446 = phi ptr [ %125, %121 ], [ %117, %116 ] %127 = phi i64 [ %126, %121 ], [ 20, %116 ] - %128 = tail call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef %.1.i403448, i64 noundef %127) #9 - br label %sha1_update.exit405 + %128 = tail call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef %.1.i401446, i64 noundef %127) #9 + br label %sha1_update.exit403 -sha1_update.exit405: ; preds = %121, %.thread445 +sha1_update.exit403: ; preds = %121, %.thread443 %129 = tail call i32 @SHA1_Final(ptr noundef %117, ptr noundef nonnull %8) #9 %130 = add i64 %.0343, 20 %131 = icmp ult i64 %130, %3 br i1 %131, label %.lr.ph.preheader, label %._crit_edge -.lr.ph.preheader: ; preds = %sha1_update.exit405 +.lr.ph.preheader: ; preds = %sha1_update.exit403 %reass.sub = sub i64 %3, %.0343 %132 = trunc i64 %reass.sub to i8 %133 = add i8 %132, -21 @@ -315,22 +315,22 @@ sha1_update.exit405: ; preds = %121, %.thread445 tail call void @llvm.memset.p0.i64(ptr align 1 %scevgep, i8 %133, i64 %135, i1 false), !tbaa !8 br label %._crit_edge -._crit_edge: ; preds = %.lr.ph.preheader, %sha1_update.exit405 +._crit_edge: ; preds = %.lr.ph.preheader, %sha1_update.exit403 %136 = getelementptr inbounds nuw i8, ptr %1, i64 %.0346 %137 = sub i64 %3, %.0346 %138 = getelementptr inbounds nuw i8, ptr %0, i64 192 %139 = getelementptr inbounds nuw i8, ptr %0, i64 32 tail call void @aesni_cbc_encrypt(ptr noundef %136, ptr noundef %136, i64 noundef %137, ptr noundef nonnull %138, ptr noundef nonnull %139, i32 noundef 1) #9 - br label %488 + br label %492 -140: ; preds = %sha1_update.exit396 +140: ; preds = %sha1_update.exit394 %141 = getelementptr inbounds nuw i8, ptr %2, i64 %.0346 %142 = getelementptr inbounds nuw i8, ptr %1, i64 %.0346 %143 = sub i64 %3, %.0346 %144 = getelementptr inbounds nuw i8, ptr %0, i64 192 %145 = getelementptr inbounds nuw i8, ptr %0, i64 32 tail call void @aesni_cbc_encrypt(ptr noundef %141, ptr noundef %142, i64 noundef %143, ptr noundef nonnull %144, ptr noundef nonnull %145, i32 noundef 1) #9 - br label %488 + br label %492 146: ; preds = %14 call void @llvm.lifetime.start.p0(i64 52, ptr nonnull %5) #9 @@ -339,7 +339,7 @@ sha1_update.exit405: ; preds = %121, %.thread445 %149 = and i64 %148, -32 %150 = inttoptr i64 %149 to ptr %.not372 = icmp eq i64 %7, -1 - br i1 %.not372, label %456, label %151 + br i1 %.not372, label %460, label %151 151: ; preds = %146 %152 = getelementptr inbounds nuw i8, ptr %0, i64 724 @@ -359,7 +359,7 @@ sha1_update.exit405: ; preds = %121, %.thread445 165: ; preds = %151 %166 = icmp ult i64 %3, 37 - br i1 %166, label %sha1_update.exit441.thread459, label %167 + br i1 %166, label %sha1_update.exit439.thread457, label %167 167: ; preds = %165 %168 = getelementptr inbounds nuw i8, ptr %0, i64 32 @@ -371,7 +371,7 @@ sha1_update.exit405: ; preds = %121, %.thread445 172: ; preds = %151 %173 = icmp ult i64 %3, 21 - br i1 %173, label %sha1_update.exit441.thread459, label %174 + br i1 %173, label %sha1_update.exit439.thread457, label %174 174: ; preds = %172, %167 %.0341 = phi i64 [ %171, %167 ], [ %3, %172 ] @@ -413,31 +413,31 @@ sha1_update.exit405: ; preds = %121, %.thread445 %204 = getelementptr inbounds nuw i8, ptr %0, i64 504 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(96) %8, ptr noundef nonnull align 8 dereferenceable(96) %204, i64 96, i1 false), !tbaa.struct !7 %205 = load i32, ptr %9, align 4, !tbaa !28 - %.not.i406 = icmp eq i32 %205, 0 - br i1 %.not.i406, label %212, label %206 + %.not.i404 = icmp eq i32 %205, 0 + br i1 %.not.i404, label %212, label %206 206: ; preds = %174 %207 = zext i32 %205 to i64 %208 = sub nsw i64 64, %207 - %spec.select.i407 = call i64 @llvm.umin.i64(i64 %7, i64 %208) - %209 = call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef nonnull %153, i64 noundef %spec.select.i407) #9 - %210 = getelementptr inbounds nuw i8, ptr %153, i64 %spec.select.i407 - %211 = sub i64 %7, %spec.select.i407 + %spec.select.i405 = call i64 @llvm.umin.i64(i64 %7, i64 %208) + %209 = call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef nonnull %153, i64 noundef %spec.select.i405) #9 + %210 = getelementptr inbounds nuw i8, ptr %153, i64 %spec.select.i405 + %211 = sub i64 %7, %spec.select.i405 br label %212 212: ; preds = %206, %174 - %.033.i408 = phi i64 [ %211, %206 ], [ %7, %174 ] - %.032.i409 = phi ptr [ %210, %206 ], [ %153, %174 ] - %213 = and i64 %.033.i408, 63 - %214 = and i64 %.033.i408, -64 - %.not39.i410 = icmp eq i64 %214, 0 - br i1 %.not39.i410, label %230, label %215 + %.033.i406 = phi i64 [ %211, %206 ], [ %7, %174 ] + %.032.i407 = phi ptr [ %210, %206 ], [ %153, %174 ] + %213 = and i64 %.033.i406, 63 + %214 = and i64 %.033.i406, -64 + %.not39.i408 = icmp eq i64 %214, 0 + br i1 %.not39.i408, label %230, label %215 215: ; preds = %212 - %216 = lshr i64 %.033.i408, 6 - call void @sha1_block_data_order(ptr noundef nonnull %8, ptr noundef nonnull %.032.i409, i64 noundef %216) #9 - %217 = getelementptr inbounds nuw i8, ptr %.032.i409, i64 %214 - %218 = lshr i64 %.033.i408, 29 + %216 = lshr i64 %.033.i406, 6 + call void @sha1_block_data_order(ptr noundef nonnull %8, ptr noundef nonnull %.032.i407, i64 noundef %216) #9 + %217 = getelementptr inbounds nuw i8, ptr %.032.i407, i64 %214 + %218 = lshr i64 %.033.i406, 29 %219 = getelementptr inbounds nuw i8, ptr %0, i64 720 %220 = load i32, ptr %219, align 4, !tbaa !24 %221 = trunc i64 %218 to i32 @@ -445,8 +445,8 @@ sha1_update.exit405: ; preds = %121, %.thread445 store i32 %222, ptr %219, align 4, !tbaa !24 %223 = getelementptr inbounds nuw i8, ptr %0, i64 716 %224 = load i32, ptr %223, align 4, !tbaa !25 - %.tr.i411 = trunc i64 %214 to i32 - %225 = shl i32 %.tr.i411, 3 + %.tr.i409 = trunc i64 %214 to i32 + %225 = shl i32 %.tr.i409, 3 %226 = add i32 %224, %225 store i32 %226, ptr %223, align 4, !tbaa !25 %227 = icmp ult i32 %226, %225 @@ -458,51 +458,51 @@ sha1_update.exit405: ; preds = %121, %.thread445 br label %230 230: ; preds = %228, %215, %212 - %.1.i412 = phi ptr [ %217, %228 ], [ %217, %215 ], [ %.032.i409, %212 ] - %.not40.i413 = icmp eq i64 %213, 0 - br i1 %.not40.i413, label %sha1_update.exit414, label %231 + %.1.i410 = phi ptr [ %217, %228 ], [ %217, %215 ], [ %.032.i407, %212 ] + %.not40.i411 = icmp eq i64 %213, 0 + br i1 %.not40.i411, label %sha1_update.exit412, label %231 231: ; preds = %230 - %232 = call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef nonnull %.1.i412, i64 noundef %213) #9 - br label %sha1_update.exit414 + %232 = call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef nonnull %.1.i410, i64 noundef %213) #9 + br label %sha1_update.exit412 -sha1_update.exit414: ; preds = %230, %231 +sha1_update.exit412: ; preds = %230, %231 %233 = add i64 %.0341, -20 %234 = icmp ugt i64 %233, 319 br i1 %234, label %235, label %272 -235: ; preds = %sha1_update.exit414 +235: ; preds = %sha1_update.exit412 %236 = add i64 %.0341, -340 %237 = and i64 %236, -64 %238 = load i32, ptr %9, align 4, !tbaa !21 %239 = sub i32 64, %238 %240 = zext i32 %239 to i64 %241 = add i64 %237, %240 - %.not.i415 = icmp eq i32 %238, 0 - br i1 %.not.i415, label %248, label %242 + %.not.i413 = icmp eq i32 %238, 0 + br i1 %.not.i413, label %248, label %242 242: ; preds = %235 %243 = zext i32 %238 to i64 %244 = sub nsw i64 64, %243 - %spec.select.i416 = call i64 @llvm.umin.i64(i64 %241, i64 %244) - %245 = call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef nonnull %.0338, i64 noundef %spec.select.i416) #9 - %246 = getelementptr inbounds nuw i8, ptr %.0338, i64 %spec.select.i416 - %247 = sub i64 %241, %spec.select.i416 + %spec.select.i414 = call i64 @llvm.umin.i64(i64 %241, i64 %244) + %245 = call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef nonnull %.0338, i64 noundef %spec.select.i414) #9 + %246 = getelementptr inbounds nuw i8, ptr %.0338, i64 %spec.select.i414 + %247 = sub i64 %241, %spec.select.i414 br label %248 248: ; preds = %242, %235 - %.033.i417 = phi i64 [ %247, %242 ], [ %241, %235 ] - %.032.i418 = phi ptr [ %246, %242 ], [ %.0338, %235 ] - %249 = and i64 %.033.i417, 63 - %250 = and i64 %.033.i417, -64 - %.not39.i419 = icmp eq i64 %250, 0 - br i1 %.not39.i419, label %266, label %251 + %.033.i415 = phi i64 [ %247, %242 ], [ %241, %235 ] + %.032.i416 = phi ptr [ %246, %242 ], [ %.0338, %235 ] + %249 = and i64 %.033.i415, 63 + %250 = and i64 %.033.i415, -64 + %.not39.i417 = icmp eq i64 %250, 0 + br i1 %.not39.i417, label %266, label %251 251: ; preds = %248 - %252 = lshr i64 %.033.i417, 6 - call void @sha1_block_data_order(ptr noundef nonnull %8, ptr noundef nonnull %.032.i418, i64 noundef %252) #9 - %253 = getelementptr inbounds nuw i8, ptr %.032.i418, i64 %250 - %254 = lshr i64 %.033.i417, 29 + %252 = lshr i64 %.033.i415, 6 + call void @sha1_block_data_order(ptr noundef nonnull %8, ptr noundef nonnull %.032.i416, i64 noundef %252) #9 + %253 = getelementptr inbounds nuw i8, ptr %.032.i416, i64 %250 + %254 = lshr i64 %.033.i415, 29 %255 = getelementptr inbounds nuw i8, ptr %0, i64 720 %256 = load i32, ptr %255, align 4, !tbaa !24 %257 = trunc i64 %254 to i32 @@ -510,8 +510,8 @@ sha1_update.exit414: ; preds = %230, %231 store i32 %258, ptr %255, align 4, !tbaa !24 %259 = getelementptr inbounds nuw i8, ptr %0, i64 716 %260 = load i32, ptr %259, align 4, !tbaa !25 - %.tr.i420 = trunc i64 %250 to i32 - %261 = shl i32 %.tr.i420, 3 + %.tr.i418 = trunc i64 %250 to i32 + %261 = shl i32 %.tr.i418, 3 %262 = add i32 %260, %261 store i32 %262, ptr %259, align 4, !tbaa !25 %263 = icmp ult i32 %262, %261 @@ -523,24 +523,24 @@ sha1_update.exit414: ; preds = %230, %231 br label %266 266: ; preds = %264, %251, %248 - %.1.i421 = phi ptr [ %253, %264 ], [ %253, %251 ], [ %.032.i418, %248 ] - %.not40.i422 = icmp eq i64 %249, 0 - br i1 %.not40.i422, label %sha1_update.exit423, label %267 + %.1.i419 = phi ptr [ %253, %264 ], [ %253, %251 ], [ %.032.i416, %248 ] + %.not40.i420 = icmp eq i64 %249, 0 + br i1 %.not40.i420, label %sha1_update.exit421, label %267 267: ; preds = %266 - %268 = call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef %.1.i421, i64 noundef %249) #9 - br label %sha1_update.exit423 + %268 = call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef %.1.i419, i64 noundef %249) #9 + br label %sha1_update.exit421 -sha1_update.exit423: ; preds = %266, %267 +sha1_update.exit421: ; preds = %266, %267 %269 = getelementptr inbounds nuw i8, ptr %.0338, i64 %241 %270 = sub i64 %233, %241 %271 = sub i64 %196, %241 br label %272 -272: ; preds = %sha1_update.exit423, %sha1_update.exit414 - %.0350 = phi i64 [ %271, %sha1_update.exit423 ], [ %196, %sha1_update.exit414 ] - %.1342 = phi i64 [ %270, %sha1_update.exit423 ], [ %233, %sha1_update.exit414 ] - %.1339 = phi ptr [ %269, %sha1_update.exit423 ], [ %.0338, %sha1_update.exit414 ] +272: ; preds = %sha1_update.exit421, %sha1_update.exit412 + %.0350 = phi i64 [ %271, %sha1_update.exit421 ], [ %196, %sha1_update.exit412 ] + %.1342 = phi i64 [ %270, %sha1_update.exit421 ], [ %233, %sha1_update.exit412 ] + %.1339 = phi ptr [ %269, %sha1_update.exit421 ], [ %.0338, %sha1_update.exit412 ] %273 = getelementptr inbounds nuw i8, ptr %0, i64 716 %274 = load i32, ptr %273, align 4, !tbaa !27 %.0350.tr = trunc i64 %.0350 to i32 @@ -553,10 +553,10 @@ sha1_update.exit423: ; preds = %266, %267 %281 = getelementptr inbounds nuw i8, ptr %150, i64 16 call void @llvm.memset.p0.i64(ptr noundef nonnull align 32 dereferenceable(20) %150, i8 0, i64 20, i1 false) %282 = load i32, ptr %9, align 4, !tbaa !21 - %.not478 = icmp eq i64 %.1342, 0 - br i1 %.not478, label %._crit_edge467, label %.lr.ph466 + %.not475 = icmp eq i64 %.1342, 0 + br i1 %.not475, label %._crit_edge464, label %.lr.ph463 -.lr.ph466: ; preds = %272 +.lr.ph463: ; preds = %272 %283 = add i64 %.0350, 7 %284 = getelementptr inbounds nuw i8, ptr %0, i64 784 %285 = getelementptr inbounds nuw i8, ptr %0, i64 700 @@ -565,42 +565,42 @@ sha1_update.exit423: ; preds = %266, %267 %288 = getelementptr inbounds nuw i8, ptr %0, i64 712 br label %289 -289: ; preds = %.lr.ph466, %336 - %.0351464 = phi i64 [ 0, %.lr.ph466 ], [ %337, %336 ] - %.0356463 = phi i32 [ %282, %.lr.ph466 ], [ %.1357, %336 ] - %290 = getelementptr inbounds nuw i8, ptr %.1339, i64 %.0351464 +289: ; preds = %.lr.ph463, %336 + %.0351461 = phi i64 [ 0, %.lr.ph463 ], [ %337, %336 ] + %.0356460 = phi i32 [ %282, %.lr.ph463 ], [ %.1357, %336 ] + %290 = getelementptr inbounds nuw i8, ptr %.1339, i64 %.0351461 %291 = load i8, ptr %290, align 1, !tbaa !8 %292 = zext i8 %291 to i64 - %293 = sub i64 %.0351464, %.0350 + %293 = sub i64 %.0351461, %.0350 %294 = lshr i64 %293, 56 %295 = and i64 %294, %292 %296 = and i64 %294, 128 %297 = xor i64 %296, 128 - %298 = sub i64 %.0350, %.0351464 + %298 = sub i64 %.0350, %.0351461 %299 = lshr i64 %298, 56 %300 = xor i64 %299, -1 %301 = and i64 %297, %300 %302 = or i64 %295, %301 %303 = trunc nuw i64 %302 to i8 - %304 = add i32 %.0356463, 1 - %305 = zext i32 %.0356463 to i64 + %304 = add i32 %.0356460, 1 + %305 = zext i32 %.0356460 to i64 %306 = getelementptr inbounds nuw [64 x i8], ptr %152, i64 0, i64 %305 store i8 %303, ptr %306, align 1, !tbaa !8 - %.not380 = icmp eq i32 %304, 64 - br i1 %.not380, label %307, label %336 + %.not378 = icmp eq i32 %304, 64 + br i1 %.not378, label %307, label %336 307: ; preds = %289 - %308 = sub i64 %283, %.0351464 - %.neg381 = ashr i64 %308, 63 + %308 = sub i64 %283, %.0351461 + %.neg379 = ashr i64 %308, 63 %309 = load i32, ptr %284, align 4, !tbaa !8 - %310 = trunc nsw i64 %.neg381 to i32 + %310 = trunc nsw i64 %.neg379 to i32 %311 = and i32 %277, %310 %312 = or i32 %309, %311 store i32 %312, ptr %284, align 4, !tbaa !8 call void @sha1_block_data_order(ptr noundef nonnull %8, ptr noundef nonnull %152, i64 noundef 1) #9 %313 = add i64 %293, -72 - %.neg381383 = and i64 %313, %308 - %314 = ashr i64 %.neg381383, 63 + %.neg379381 = and i64 %313, %308 + %314 = ashr i64 %.neg379381, 63 %315 = load i32, ptr %8, align 8, !tbaa !31 %316 = load i32, ptr %150, align 32, !tbaa !8 %317 = trunc nsw i64 %314 to i32 @@ -631,30 +631,30 @@ sha1_update.exit423: ; preds = %266, %267 336: ; preds = %289, %307 %.1357 = phi i32 [ 0, %307 ], [ %304, %289 ] - %337 = add nuw i64 %.0351464, 1 + %337 = add nuw i64 %.0351461, 1 %exitcond.not = icmp eq i64 %337, %.1342 - br i1 %exitcond.not, label %._crit_edge467, label %289, !llvm.loop !36 + br i1 %exitcond.not, label %._crit_edge464, label %289, !llvm.loop !36 -._crit_edge467: ; preds = %336, %272 +._crit_edge464: ; preds = %336, %272 %.0356.lcssa = phi i32 [ %282, %272 ], [ %.1357, %336 ] %338 = icmp ult i32 %.0356.lcssa, 64 - br i1 %338, label %._crit_edge473, label %._crit_edge473.thread + br i1 %338, label %._crit_edge470, label %._crit_edge470.thread -._crit_edge473: ; preds = %._crit_edge467 +._crit_edge470: ; preds = %._crit_edge464 %339 = zext nneg i32 %.0356.lcssa to i64 %340 = getelementptr i8, ptr %0, i64 %339 - %scevgep483 = getelementptr i8, ptr %340, i64 724 + %scevgep480 = getelementptr i8, ptr %340, i64 724 %341 = sub nuw nsw i64 64, %339 - call void @llvm.memset.p0.i64(ptr align 1 %scevgep483, i8 0, i64 %341, i1 false), !tbaa !8 + call void @llvm.memset.p0.i64(ptr align 1 %scevgep480, i8 0, i64 %341, i1 false), !tbaa !8 %342 = add i64 %.1342, 64 %343 = sub i64 %342, %339 %344 = icmp samesign ugt i32 %.0356.lcssa, 56 - br i1 %344, label %._crit_edge473.thread, label %380 + br i1 %344, label %._crit_edge470.thread, label %380 -._crit_edge473.thread: ; preds = %._crit_edge467, %._crit_edge473 - %.1352.lcssa486 = phi i64 [ %343, %._crit_edge473 ], [ %.1342, %._crit_edge467 ] +._crit_edge470.thread: ; preds = %._crit_edge464, %._crit_edge470 + %.1352.lcssa483 = phi i64 [ %343, %._crit_edge470 ], [ %.1342, %._crit_edge464 ] %345 = add i64 %.0350, 8 - %346 = sub i64 %345, %.1352.lcssa486 + %346 = sub i64 %345, %.1352.lcssa483 %.neg = ashr i64 %346, 63 %347 = getelementptr inbounds nuw i8, ptr %0, i64 784 %348 = load i32, ptr %347, align 4, !tbaa !8 @@ -663,8 +663,8 @@ sha1_update.exit423: ; preds = %266, %267 %351 = or i32 %348, %350 store i32 %351, ptr %347, align 4, !tbaa !8 call void @sha1_block_data_order(ptr noundef nonnull %8, ptr noundef nonnull %152, i64 noundef 1) #9 - %reass.sub479 = sub i64 %.1352.lcssa486, %.0350 - %352 = add i64 %reass.sub479, -73 + %reass.sub476 = sub i64 %.1352.lcssa483, %.0350 + %352 = add i64 %reass.sub476, -73 %.neg374 = and i64 %346, %352 %353 = ashr i64 %.neg374, 63 %354 = load i32, ptr %8, align 8, !tbaa !31 @@ -698,16 +698,16 @@ sha1_update.exit423: ; preds = %266, %267 %378 = or i32 %377, %376 store i32 %378, ptr %281, align 16, !tbaa !8 call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %152, i8 0, i64 60, i1 false) - %379 = add i64 %.1352.lcssa486, 64 + %379 = add i64 %.1352.lcssa483, 64 br label %380 -380: ; preds = %._crit_edge473.thread, %._crit_edge473 - %.2353 = phi i64 [ %379, %._crit_edge473.thread ], [ %343, %._crit_edge473 ] +380: ; preds = %._crit_edge470.thread, %._crit_edge470 + %.2353 = phi i64 [ %379, %._crit_edge470.thread ], [ %343, %._crit_edge470 ] %381 = getelementptr inbounds nuw i8, ptr %0, i64 784 store i32 %277, ptr %381, align 4, !tbaa !8 call void @sha1_block_data_order(ptr noundef nonnull %8, ptr noundef nonnull %152, i64 noundef 1) #9 - %reass.sub480 = sub i64 %.2353, %.0350 - %382 = add i64 %reass.sub480, -73 + %reass.sub477 = sub i64 %.2353, %.0350 + %382 = add i64 %reass.sub477, -73 %.neg375 = ashr i64 %382, 63 %383 = load i32, ptr %8, align 8, !tbaa !31 %384 = load i32, ptr %150, align 32, !tbaa !8 @@ -751,147 +751,148 @@ sha1_update.exit423: ; preds = %266, %267 %413 = getelementptr inbounds nuw i8, ptr %0, i64 600 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(96) %8, ptr noundef nonnull align 8 dereferenceable(96) %413, i64 96, i1 false), !tbaa.struct !7 %414 = load i32, ptr %9, align 4, !tbaa !28 - %.not.i424 = icmp eq i32 %414, 0 - br i1 %.not.i424, label %.thread453, label %415 + %.not.i422 = icmp eq i32 %414, 0 + br i1 %.not.i422, label %.thread451, label %415 415: ; preds = %380 %416 = zext i32 %414 to i64 %417 = sub nsw i64 64, %416 - %spec.select.i425 = call i64 @llvm.umin.i64(i64 %417, i64 20) - %418 = call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef nonnull %150, i64 noundef %spec.select.i425) #9 - %419 = getelementptr inbounds nuw i8, ptr %150, i64 %spec.select.i425 - %420 = sub nuw nsw i64 20, %spec.select.i425 - %.not40.i431 = icmp ugt i64 %417, 19 - br i1 %.not40.i431, label %sha1_update.exit432, label %.thread453 - -.thread453: ; preds = %380, %415 - %.1.i430456 = phi ptr [ %419, %415 ], [ %150, %380 ] + %spec.select.i423 = call i64 @llvm.umin.i64(i64 %417, i64 20) + %418 = call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef nonnull %150, i64 noundef %spec.select.i423) #9 + %419 = getelementptr inbounds nuw i8, ptr %150, i64 %spec.select.i423 + %420 = sub nuw nsw i64 20, %spec.select.i423 + %.not40.i429 = icmp ugt i64 %417, 19 + br i1 %.not40.i429, label %sha1_update.exit430, label %.thread451 + +.thread451: ; preds = %380, %415 + %.1.i428454 = phi ptr [ %419, %415 ], [ %150, %380 ] %421 = phi i64 [ %420, %415 ], [ 20, %380 ] - %422 = call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef nonnull %.1.i430456, i64 noundef %421) #9 - br label %sha1_update.exit432 + %422 = call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef nonnull %.1.i428454, i64 noundef %421) #9 + br label %sha1_update.exit430 -sha1_update.exit432: ; preds = %415, %.thread453 +sha1_update.exit430: ; preds = %415, %.thread451 %423 = call i32 @SHA1_Final(ptr noundef nonnull %150, ptr noundef nonnull %8) #9 - %424 = getelementptr i8, ptr %.1339, i64 %.1342 - %425 = getelementptr i8, ptr %424, i64 19 - %426 = zext nneg i32 %185 to i64 - %427 = sub nsw i64 0, %426 - %428 = getelementptr inbounds i8, ptr %425, i64 %427 - %429 = getelementptr inbounds i8, ptr %428, i64 -20 - %.neg376 = add nuw nsw i64 %426, 1 - %.neg377 = add i64 %.neg376, %.0350 - %gepdiff = sub i64 %.neg377, %.1342 - %430 = add nuw nsw i32 %185, 20 - %431 = zext nneg i32 %430 to i64 - br label %432 - -432: ; preds = %sha1_update.exit432, %432 - %.3477 = phi i64 [ 0, %sha1_update.exit432 ], [ %455, %432 ] - %.1355476 = phi i64 [ 0, %sha1_update.exit432 ], [ %454, %432 ] - %.2358475 = phi i32 [ 0, %sha1_update.exit432 ], [ %451, %432 ] - %433 = getelementptr inbounds nuw i8, ptr %429, i64 %.3477 - %434 = load i8, ptr %433, align 1, !tbaa !8 - %435 = zext i8 %434 to i32 - %436 = sub i64 %.3477, %gepdiff - %437 = trunc i64 %436 to i32 - %438 = add i32 %437, -20 - %439 = xor i32 %193, %435 - %isneg = icmp slt i32 %438, 0 - %440 = select i1 %isneg, i32 0, i32 %439 - %441 = xor i64 %.3477, -1 - %442 = add i64 %gepdiff, %441 - %443 = trunc i64 %442 to i32 - %444 = and i32 %438, %443 - %445 = getelementptr inbounds nuw [52 x i8], ptr %150, i64 0, i64 %.1355476 - %446 = load i8, ptr %445, align 1, !tbaa !8 - %447 = xor i8 %446, %434 - %448 = zext i8 %447 to i32 - %isneg379 = icmp slt i32 %444, 0 - %449 = select i1 %isneg379, i32 %448, i32 0 - %450 = or i32 %440, %.2358475 - %451 = or i32 %450, %449 - %452 = lshr i32 %444, 31 - %453 = zext nneg i32 %452 to i64 - %454 = add i64 %.1355476, %453 - %455 = add nuw nsw i64 %.3477, 1 - %exitcond484.not = icmp eq i64 %455, %431 - br i1 %exitcond484.not, label %sha1_update.exit441, label %432, !llvm.loop !43 - -456: ; preds = %146 - %457 = getelementptr inbounds nuw i8, ptr %0, i64 192 - %458 = getelementptr inbounds nuw i8, ptr %0, i64 32 - call void @aesni_cbc_encrypt(ptr noundef %2, ptr noundef %1, i64 noundef %3, ptr noundef nonnull %457, ptr noundef nonnull %458, i32 noundef 0) #9 - %459 = load i32, ptr %9, align 4, !tbaa !28 - %.not.i433 = icmp eq i32 %459, 0 - br i1 %.not.i433, label %466, label %460 - -460: ; preds = %456 - %461 = zext i32 %459 to i64 - %462 = sub nsw i64 64, %461 - %spec.select.i434 = call i64 @llvm.umin.i64(i64 %3, i64 %462) - %463 = call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef %1, i64 noundef %spec.select.i434) #9 - %464 = getelementptr inbounds nuw i8, ptr %1, i64 %spec.select.i434 - %465 = sub i64 %3, %spec.select.i434 - br label %466 - -466: ; preds = %460, %456 - %.033.i435 = phi i64 [ %465, %460 ], [ %3, %456 ] - %.032.i436 = phi ptr [ %464, %460 ], [ %1, %456 ] - %467 = and i64 %.033.i435, 63 - %468 = and i64 %.033.i435, -64 - %.not39.i437 = icmp eq i64 %468, 0 - br i1 %.not39.i437, label %484, label %469 - -469: ; preds = %466 - %470 = lshr i64 %.033.i435, 6 - call void @sha1_block_data_order(ptr noundef nonnull %8, ptr noundef %.032.i436, i64 noundef %470) #9 - %471 = getelementptr inbounds nuw i8, ptr %.032.i436, i64 %468 - %472 = lshr i64 %.033.i435, 29 - %473 = getelementptr inbounds nuw i8, ptr %0, i64 720 - %474 = load i32, ptr %473, align 4, !tbaa !24 - %475 = trunc i64 %472 to i32 - %476 = add i32 %474, %475 - store i32 %476, ptr %473, align 4, !tbaa !24 - %477 = getelementptr inbounds nuw i8, ptr %0, i64 716 - %478 = load i32, ptr %477, align 4, !tbaa !25 - %.tr.i438 = trunc i64 %468 to i32 - %479 = shl i32 %.tr.i438, 3 + %424 = getelementptr inbounds nuw i8, ptr %.1339, i64 %.0350 + %425 = getelementptr i8, ptr %.1339, i64 %.1342 + %426 = getelementptr i8, ptr %425, i64 19 + %427 = zext nneg i32 %185 to i64 + %428 = sub nsw i64 0, %427 + %429 = getelementptr inbounds i8, ptr %426, i64 %428 + %430 = getelementptr inbounds i8, ptr %429, i64 -20 + %431 = ptrtoint ptr %424 to i64 + %432 = ptrtoint ptr %430 to i64 + %433 = sub i64 %431, %432 + %434 = add nuw nsw i32 %185, 20 + %435 = zext nneg i32 %434 to i64 + br label %436 + +436: ; preds = %sha1_update.exit430, %436 + %.3474 = phi i64 [ 0, %sha1_update.exit430 ], [ %459, %436 ] + %.1355473 = phi i64 [ 0, %sha1_update.exit430 ], [ %458, %436 ] + %.2358472 = phi i32 [ 0, %sha1_update.exit430 ], [ %455, %436 ] + %437 = getelementptr inbounds nuw i8, ptr %430, i64 %.3474 + %438 = load i8, ptr %437, align 1, !tbaa !8 + %439 = zext i8 %438 to i32 + %440 = sub i64 %.3474, %433 + %441 = trunc i64 %440 to i32 + %442 = add i32 %441, -20 + %443 = xor i32 %193, %439 + %isneg = icmp slt i32 %442, 0 + %444 = select i1 %isneg, i32 0, i32 %443 + %445 = xor i64 %.3474, -1 + %446 = add i64 %433, %445 + %447 = trunc i64 %446 to i32 + %448 = and i32 %442, %447 + %449 = getelementptr inbounds nuw [52 x i8], ptr %150, i64 0, i64 %.1355473 + %450 = load i8, ptr %449, align 1, !tbaa !8 + %451 = xor i8 %450, %438 + %452 = zext i8 %451 to i32 + %isneg377 = icmp slt i32 %448, 0 + %453 = select i1 %isneg377, i32 %452, i32 0 + %454 = or i32 %444, %.2358472 + %455 = or i32 %454, %453 + %456 = lshr i32 %448, 31 + %457 = zext nneg i32 %456 to i64 + %458 = add i64 %.1355473, %457 + %459 = add nuw nsw i64 %.3474, 1 + %exitcond481.not = icmp eq i64 %459, %435 + br i1 %exitcond481.not, label %sha1_update.exit439, label %436, !llvm.loop !43 + +460: ; preds = %146 + %461 = getelementptr inbounds nuw i8, ptr %0, i64 192 + %462 = getelementptr inbounds nuw i8, ptr %0, i64 32 + call void @aesni_cbc_encrypt(ptr noundef %2, ptr noundef %1, i64 noundef %3, ptr noundef nonnull %461, ptr noundef nonnull %462, i32 noundef 0) #9 + %463 = load i32, ptr %9, align 4, !tbaa !28 + %.not.i431 = icmp eq i32 %463, 0 + br i1 %.not.i431, label %470, label %464 + +464: ; preds = %460 + %465 = zext i32 %463 to i64 + %466 = sub nsw i64 64, %465 + %spec.select.i432 = call i64 @llvm.umin.i64(i64 %3, i64 %466) + %467 = call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef %1, i64 noundef %spec.select.i432) #9 + %468 = getelementptr inbounds nuw i8, ptr %1, i64 %spec.select.i432 + %469 = sub i64 %3, %spec.select.i432 + br label %470 + +470: ; preds = %464, %460 + %.033.i433 = phi i64 [ %469, %464 ], [ %3, %460 ] + %.032.i434 = phi ptr [ %468, %464 ], [ %1, %460 ] + %471 = and i64 %.033.i433, 63 + %472 = and i64 %.033.i433, -64 + %.not39.i435 = icmp eq i64 %472, 0 + br i1 %.not39.i435, label %488, label %473 + +473: ; preds = %470 + %474 = lshr i64 %.033.i433, 6 + call void @sha1_block_data_order(ptr noundef nonnull %8, ptr noundef %.032.i434, i64 noundef %474) #9 + %475 = getelementptr inbounds nuw i8, ptr %.032.i434, i64 %472 + %476 = lshr i64 %.033.i433, 29 + %477 = getelementptr inbounds nuw i8, ptr %0, i64 720 + %478 = load i32, ptr %477, align 4, !tbaa !24 + %479 = trunc i64 %476 to i32 %480 = add i32 %478, %479 - store i32 %480, ptr %477, align 4, !tbaa !25 - %481 = icmp ult i32 %480, %479 - br i1 %481, label %482, label %484 - -482: ; preds = %469 - %483 = add i32 %476, 1 - store i32 %483, ptr %473, align 4, !tbaa !24 - br label %484 + store i32 %480, ptr %477, align 4, !tbaa !24 + %481 = getelementptr inbounds nuw i8, ptr %0, i64 716 + %482 = load i32, ptr %481, align 4, !tbaa !25 + %.tr.i436 = trunc i64 %472 to i32 + %483 = shl i32 %.tr.i436, 3 + %484 = add i32 %482, %483 + store i32 %484, ptr %481, align 4, !tbaa !25 + %485 = icmp ult i32 %484, %483 + br i1 %485, label %486, label %488 + +486: ; preds = %473 + %487 = add i32 %480, 1 + store i32 %487, ptr %477, align 4, !tbaa !24 + br label %488 -484: ; preds = %482, %469, %466 - %.1.i439 = phi ptr [ %471, %482 ], [ %471, %469 ], [ %.032.i436, %466 ] - %.not40.i440 = icmp eq i64 %467, 0 - br i1 %.not40.i440, label %sha1_update.exit441.thread, label %485 +488: ; preds = %486, %473, %470 + %.1.i437 = phi ptr [ %475, %486 ], [ %475, %473 ], [ %.032.i434, %470 ] + %.not40.i438 = icmp eq i64 %471, 0 + br i1 %.not40.i438, label %sha1_update.exit439.thread, label %489 -485: ; preds = %484 - %486 = call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef %.1.i439, i64 noundef %467) #9 - br label %sha1_update.exit441.thread +489: ; preds = %488 + %490 = call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef %.1.i437, i64 noundef %471) #9 + br label %sha1_update.exit439.thread -sha1_update.exit441.thread: ; preds = %485, %484 +sha1_update.exit439.thread: ; preds = %489, %488 call void @llvm.lifetime.end.p0(i64 52, ptr nonnull %5) #9 - br label %488 + br label %492 -sha1_update.exit441.thread459: ; preds = %165, %172 +sha1_update.exit439.thread457: ; preds = %165, %172 call void @llvm.lifetime.end.p0(i64 52, ptr nonnull %5) #9 - br label %488 + br label %492 -sha1_update.exit441: ; preds = %432 - %.inv = icmp slt i32 %451, 1 +sha1_update.exit439: ; preds = %436 + %.inv = icmp slt i32 %455, 1 %narrow = select i1 %.inv, i1 %186, i1 false - %487 = zext i1 %narrow to i32 + %491 = zext i1 %narrow to i32 call void @llvm.lifetime.end.p0(i64 52, ptr nonnull %5) #9 - br label %488 + br label %492 -488: ; preds = %140, %._crit_edge, %sha1_update.exit441.thread, %sha1_update.exit441, %sha1_update.exit441.thread459, %20, %4 - %.0 = phi i32 [ %487, %sha1_update.exit441 ], [ 0, %4 ], [ 0, %20 ], [ 0, %sha1_update.exit441.thread459 ], [ 1, %sha1_update.exit441.thread ], [ 1, %._crit_edge ], [ 1, %140 ] +492: ; preds = %140, %._crit_edge, %sha1_update.exit439.thread, %sha1_update.exit439, %sha1_update.exit439.thread457, %20, %4 + %.0 = phi i32 [ %491, %sha1_update.exit439 ], [ 0, %4 ], [ 0, %20 ], [ 0, %sha1_update.exit439.thread457 ], [ 1, %sha1_update.exit439.thread ], [ 1, %._crit_edge ], [ 1, %140 ] ret i32 %.0 } diff --git a/bench/openssl/optimized/cipher_aes_cbc_hmac_sha256_hw.ll b/bench/openssl/optimized/cipher_aes_cbc_hmac_sha256_hw.ll index 4267eb11b4a..3ff203b61f8 100644 --- a/bench/openssl/optimized/cipher_aes_cbc_hmac_sha256_hw.ll +++ b/bench/openssl/optimized/cipher_aes_cbc_hmac_sha256_hw.ll @@ -93,7 +93,7 @@ define internal range(i32 0, 2) i32 @aesni_cbc_hmac_sha256_cipher(ptr noundef %0 store i64 -1, ptr %6, align 8, !tbaa !19 %13 = and i64 %3, 15 %.not = icmp eq i64 %13, 0 - br i1 %.not, label %14, label %544 + br i1 %.not, label %14, label %548 14: ; preds = %4 %15 = getelementptr inbounds nuw i8, ptr %0, i64 108 @@ -109,8 +109,8 @@ define internal range(i32 0, 2) i32 @aesni_cbc_hmac_sha256_cipher(ptr noundef %0 20: ; preds = %18 %21 = and i64 %7, -16 %22 = add i64 %21, 48 - %.not421 = icmp eq i64 %3, %22 - br i1 %.not421, label %23, label %544 + %.not419 = icmp eq i64 %3, %22 + br i1 %.not419, label %23, label %548 23: ; preds = %20 %24 = getelementptr inbounds nuw i8, ptr %0, i64 448 @@ -124,22 +124,22 @@ define internal range(i32 0, 2) i32 @aesni_cbc_hmac_sha256_cipher(ptr noundef %0 %.0379 = phi i64 [ %3, %18 ], [ %7, %23 ] %28 = load i32, ptr getelementptr inbounds nuw (i8, ptr @OPENSSL_ia32cap_P, i64 8), align 4, !tbaa !3 %29 = and i32 %28, 536870912 - %.not422 = icmp eq i32 %29, 0 - br i1 %.not422, label %30, label %38 + %.not420 = icmp eq i32 %29, 0 + br i1 %.not420, label %30, label %38 30: ; preds = %27 %31 = load i32, ptr getelementptr inbounds nuw (i8, ptr @OPENSSL_ia32cap_P, i64 4), align 4, !tbaa !3 %32 = and i32 %31, 268435456 - %.not423 = icmp eq i32 %32, 0 - br i1 %.not423, label %91, label %33 + %.not421 = icmp eq i32 %32, 0 + br i1 %.not421, label %91, label %33 33: ; preds = %30 %34 = and i32 %31, 2048 %35 = load i32, ptr @OPENSSL_ia32cap_P, align 4, !tbaa !3 %36 = and i32 %35, 1073741824 %37 = or disjoint i32 %36, %34 - %.not424 = icmp eq i32 %37, 0 - br i1 %.not424, label %91, label %38 + %.not422 = icmp eq i32 %37, 0 + br i1 %.not422, label %91, label %38 38: ; preds = %33, %27 %39 = add nuw nsw i64 %.0381, %12 @@ -148,8 +148,8 @@ define internal range(i32 0, 2) i32 @aesni_cbc_hmac_sha256_cipher(ptr noundef %0 41: ; preds = %38 %42 = sub nuw i64 %.0379, %39 - %.not425 = icmp ult i64 %42, 64 - br i1 %.not425, label %91, label %43 + %.not423 = icmp ult i64 %42, 64 + br i1 %.not423, label %91, label %43 43: ; preds = %41 %44 = lshr i64 %42, 6 @@ -241,31 +241,31 @@ sha256_update.exit: ; preds = %70, %71 %93 = getelementptr inbounds nuw i8, ptr %2, i64 %92 %94 = sub i64 %.0379, %92 %95 = load i32, ptr %9, align 4, !tbaa !29 - %.not.i429 = icmp eq i32 %95, 0 - br i1 %.not.i429, label %102, label %96 + %.not.i427 = icmp eq i32 %95, 0 + br i1 %.not.i427, label %102, label %96 96: ; preds = %91 %97 = zext i32 %95 to i64 %98 = sub nsw i64 64, %97 - %spec.select.i430 = tail call i64 @llvm.umin.i64(i64 %94, i64 %98) - %99 = tail call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef %93, i64 noundef %spec.select.i430) #8 - %100 = getelementptr inbounds nuw i8, ptr %93, i64 %spec.select.i430 - %101 = sub i64 %94, %spec.select.i430 + %spec.select.i428 = tail call i64 @llvm.umin.i64(i64 %94, i64 %98) + %99 = tail call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef %93, i64 noundef %spec.select.i428) #8 + %100 = getelementptr inbounds nuw i8, ptr %93, i64 %spec.select.i428 + %101 = sub i64 %94, %spec.select.i428 br label %102 102: ; preds = %96, %91 - %.033.i431 = phi i64 [ %101, %96 ], [ %94, %91 ] - %.032.i432 = phi ptr [ %100, %96 ], [ %93, %91 ] - %103 = and i64 %.033.i431, 63 - %104 = and i64 %.033.i431, -64 - %.not39.i433 = icmp eq i64 %104, 0 - br i1 %.not39.i433, label %120, label %105 + %.033.i429 = phi i64 [ %101, %96 ], [ %94, %91 ] + %.032.i430 = phi ptr [ %100, %96 ], [ %93, %91 ] + %103 = and i64 %.033.i429, 63 + %104 = and i64 %.033.i429, -64 + %.not39.i431 = icmp eq i64 %104, 0 + br i1 %.not39.i431, label %120, label %105 105: ; preds = %102 - %106 = lshr i64 %.033.i431, 6 - tail call void @sha256_block_data_order(ptr noundef nonnull %8, ptr noundef %.032.i432, i64 noundef %106) #8 - %107 = getelementptr inbounds nuw i8, ptr %.032.i432, i64 %104 - %108 = lshr i64 %.033.i431, 29 + %106 = lshr i64 %.033.i429, 6 + tail call void @sha256_block_data_order(ptr noundef nonnull %8, ptr noundef %.032.i430, i64 noundef %106) #8 + %107 = getelementptr inbounds nuw i8, ptr %.032.i430, i64 %104 + %108 = lshr i64 %.033.i429, 29 %109 = getelementptr inbounds nuw i8, ptr %0, i64 764 %110 = load i32, ptr %109, align 4, !tbaa !25 %111 = trunc i64 %108 to i32 @@ -273,8 +273,8 @@ sha256_update.exit: ; preds = %70, %71 store i32 %112, ptr %109, align 4, !tbaa !25 %113 = getelementptr inbounds nuw i8, ptr %0, i64 760 %114 = load i32, ptr %113, align 4, !tbaa !26 - %.tr.i434 = trunc i64 %104 to i32 - %115 = shl i32 %.tr.i434, 3 + %.tr.i432 = trunc i64 %104 to i32 + %115 = shl i32 %.tr.i432, 3 %116 = add i32 %114, %115 store i32 %116, ptr %113, align 4, !tbaa !26 %117 = icmp ult i32 %116, %115 @@ -286,21 +286,21 @@ sha256_update.exit: ; preds = %70, %71 br label %120 120: ; preds = %118, %105, %102 - %.1.i435 = phi ptr [ %107, %118 ], [ %107, %105 ], [ %.032.i432, %102 ] - %.not40.i436 = icmp eq i64 %103, 0 - br i1 %.not40.i436, label %sha256_update.exit437, label %121 + %.1.i433 = phi ptr [ %107, %118 ], [ %107, %105 ], [ %.032.i430, %102 ] + %.not40.i434 = icmp eq i64 %103, 0 + br i1 %.not40.i434, label %sha256_update.exit435, label %121 121: ; preds = %120 - %122 = tail call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef %.1.i435, i64 noundef %103) #8 - br label %sha256_update.exit437 + %122 = tail call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef %.1.i433, i64 noundef %103) #8 + br label %sha256_update.exit435 -sha256_update.exit437: ; preds = %120, %121 - %.not426 = icmp eq i64 %.0379, %3 - br i1 %.not426, label %152, label %123 +sha256_update.exit435: ; preds = %120, %121 + %.not424 = icmp eq i64 %.0379, %3 + br i1 %.not424, label %152, label %123 -123: ; preds = %sha256_update.exit437 - %.not427 = icmp eq ptr %2, %1 - br i1 %.not427, label %128, label %124 +123: ; preds = %sha256_update.exit435 + %.not425 = icmp eq ptr %2, %1 + br i1 %.not425, label %128, label %124 124: ; preds = %123 %125 = getelementptr inbounds nuw i8, ptr %1, i64 %.0383 @@ -315,32 +315,32 @@ sha256_update.exit437: ; preds = %120, %121 %131 = getelementptr inbounds nuw i8, ptr %0, i64 616 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(112) %8, ptr noundef nonnull align 8 dereferenceable(112) %131, i64 112, i1 false), !tbaa.struct !17 %132 = load i32, ptr %9, align 4, !tbaa !29 - %.not.i438 = icmp eq i32 %132, 0 - br i1 %.not.i438, label %.thread486, label %133 + %.not.i436 = icmp eq i32 %132, 0 + br i1 %.not.i436, label %.thread484, label %133 133: ; preds = %128 %134 = zext i32 %132 to i64 %135 = sub nsw i64 64, %134 - %spec.select.i439 = tail call i64 @llvm.umin.i64(i64 %135, i64 32) - %136 = tail call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef %129, i64 noundef %spec.select.i439) #8 - %137 = getelementptr inbounds nuw i8, ptr %129, i64 %spec.select.i439 - %138 = sub nuw nsw i64 32, %spec.select.i439 - %.not40.i445 = icmp ugt i64 %135, 31 - br i1 %.not40.i445, label %sha256_update.exit446, label %.thread486 - -.thread486: ; preds = %128, %133 - %.1.i444489 = phi ptr [ %137, %133 ], [ %129, %128 ] + %spec.select.i437 = tail call i64 @llvm.umin.i64(i64 %135, i64 32) + %136 = tail call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef %129, i64 noundef %spec.select.i437) #8 + %137 = getelementptr inbounds nuw i8, ptr %129, i64 %spec.select.i437 + %138 = sub nuw nsw i64 32, %spec.select.i437 + %.not40.i443 = icmp ugt i64 %135, 31 + br i1 %.not40.i443, label %sha256_update.exit444, label %.thread484 + +.thread484: ; preds = %128, %133 + %.1.i442487 = phi ptr [ %137, %133 ], [ %129, %128 ] %139 = phi i64 [ %138, %133 ], [ 32, %128 ] - %140 = tail call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef %.1.i444489, i64 noundef %139) #8 - br label %sha256_update.exit446 + %140 = tail call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef %.1.i442487, i64 noundef %139) #8 + br label %sha256_update.exit444 -sha256_update.exit446: ; preds = %133, %.thread486 +sha256_update.exit444: ; preds = %133, %.thread484 %141 = tail call i32 @SHA256_Final(ptr noundef %129, ptr noundef nonnull %8) #8 %142 = add i64 %.0379, 32 %143 = icmp ult i64 %142, %3 br i1 %143, label %.lr.ph.preheader, label %._crit_edge -.lr.ph.preheader: ; preds = %sha256_update.exit446 +.lr.ph.preheader: ; preds = %sha256_update.exit444 %reass.sub = sub i64 %3, %.0379 %144 = trunc i64 %reass.sub to i8 %145 = add i8 %144, -33 @@ -350,22 +350,22 @@ sha256_update.exit446: ; preds = %133, %.thread486 tail call void @llvm.memset.p0.i64(ptr align 1 %scevgep, i8 %145, i64 %147, i1 false), !tbaa !18 br label %._crit_edge -._crit_edge: ; preds = %.lr.ph.preheader, %sha256_update.exit446 +._crit_edge: ; preds = %.lr.ph.preheader, %sha256_update.exit444 %148 = getelementptr inbounds nuw i8, ptr %1, i64 %.0383 %149 = sub i64 %3, %.0383 %150 = getelementptr inbounds nuw i8, ptr %0, i64 192 %151 = getelementptr inbounds nuw i8, ptr %0, i64 32 tail call void @aesni_cbc_encrypt(ptr noundef %148, ptr noundef %148, i64 noundef %149, ptr noundef nonnull %150, ptr noundef nonnull %151, i32 noundef 1) #8 - br label %544 + br label %548 -152: ; preds = %sha256_update.exit437 +152: ; preds = %sha256_update.exit435 %153 = getelementptr inbounds nuw i8, ptr %2, i64 %.0383 %154 = getelementptr inbounds nuw i8, ptr %1, i64 %.0383 %155 = sub i64 %3, %.0383 %156 = getelementptr inbounds nuw i8, ptr %0, i64 192 %157 = getelementptr inbounds nuw i8, ptr %0, i64 32 tail call void @aesni_cbc_encrypt(ptr noundef %153, ptr noundef %154, i64 noundef %155, ptr noundef nonnull %156, ptr noundef nonnull %157, i32 noundef 1) #8 - br label %544 + br label %548 158: ; preds = %14 call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %5) #8 @@ -377,7 +377,7 @@ sha256_update.exit446: ; preds = %133, %.thread486 %164 = getelementptr inbounds nuw i8, ptr %0, i64 32 call void @aesni_cbc_encrypt(ptr noundef %2, ptr noundef %1, i64 noundef %3, ptr noundef nonnull %163, ptr noundef nonnull %164, i32 noundef 0) #8 %.not409 = icmp eq i64 %7, -1 - br i1 %.not409, label %514, label %165 + br i1 %.not409, label %518, label %165 165: ; preds = %158 %166 = getelementptr inbounds nuw i8, ptr %0, i64 768 @@ -393,18 +393,18 @@ sha256_update.exit446: ; preds = %133, %.thread486 %176 = zext i8 %175 to i32 %177 = or disjoint i32 %172, %176 %178 = icmp samesign ugt i32 %177, 769 - %spec.select428 = select i1 %178, i64 16, i64 0 - %179 = or disjoint i64 %spec.select428, 33 + %spec.select426 = select i1 %178, i64 16, i64 0 + %179 = or disjoint i64 %spec.select426, 33 %180 = icmp ult i64 %3, %179 - br i1 %180, label %sha256_update.exit482.thread499, label %181 + br i1 %180, label %sha256_update.exit480.thread497, label %181 -sha256_update.exit482.thread499: ; preds = %165 +sha256_update.exit480.thread497: ; preds = %165 call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %5) #8 - br label %544 + br label %548 181: ; preds = %165 - %182 = getelementptr inbounds nuw i8, ptr %1, i64 %spec.select428 - %183 = sub nuw i64 %3, %spec.select428 + %182 = getelementptr inbounds nuw i8, ptr %1, i64 %spec.select426 + %183 = sub nuw i64 %3, %spec.select426 %184 = getelementptr i8, ptr %1, i64 %3 %185 = getelementptr i8, ptr %184, i64 -1 %186 = load i8, ptr %185, align 1, !tbaa !18 @@ -438,31 +438,31 @@ sha256_update.exit482.thread499: ; preds = %165 %211 = getelementptr inbounds nuw i8, ptr %0, i64 504 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(112) %8, ptr noundef nonnull align 8 dereferenceable(112) %211, i64 112, i1 false), !tbaa.struct !17 %212 = load i32, ptr %9, align 4, !tbaa !29 - %.not.i447 = icmp eq i32 %212, 0 - br i1 %.not.i447, label %219, label %213 + %.not.i445 = icmp eq i32 %212, 0 + br i1 %.not.i445, label %219, label %213 213: ; preds = %181 %214 = zext i32 %212 to i64 %215 = sub nsw i64 64, %214 - %spec.select.i448 = call i64 @llvm.umin.i64(i64 %7, i64 %215) - %216 = call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef nonnull %167, i64 noundef %spec.select.i448) #8 - %217 = getelementptr inbounds nuw i8, ptr %167, i64 %spec.select.i448 - %218 = sub i64 %7, %spec.select.i448 + %spec.select.i446 = call i64 @llvm.umin.i64(i64 %7, i64 %215) + %216 = call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef nonnull %167, i64 noundef %spec.select.i446) #8 + %217 = getelementptr inbounds nuw i8, ptr %167, i64 %spec.select.i446 + %218 = sub i64 %7, %spec.select.i446 br label %219 219: ; preds = %213, %181 - %.033.i449 = phi i64 [ %218, %213 ], [ %7, %181 ] - %.032.i450 = phi ptr [ %217, %213 ], [ %167, %181 ] - %220 = and i64 %.033.i449, 63 - %221 = and i64 %.033.i449, -64 - %.not39.i451 = icmp eq i64 %221, 0 - br i1 %.not39.i451, label %237, label %222 + %.033.i447 = phi i64 [ %218, %213 ], [ %7, %181 ] + %.032.i448 = phi ptr [ %217, %213 ], [ %167, %181 ] + %220 = and i64 %.033.i447, 63 + %221 = and i64 %.033.i447, -64 + %.not39.i449 = icmp eq i64 %221, 0 + br i1 %.not39.i449, label %237, label %222 222: ; preds = %219 - %223 = lshr i64 %.033.i449, 6 - call void @sha256_block_data_order(ptr noundef nonnull %8, ptr noundef nonnull %.032.i450, i64 noundef %223) #8 - %224 = getelementptr inbounds nuw i8, ptr %.032.i450, i64 %221 - %225 = lshr i64 %.033.i449, 29 + %223 = lshr i64 %.033.i447, 6 + call void @sha256_block_data_order(ptr noundef nonnull %8, ptr noundef nonnull %.032.i448, i64 noundef %223) #8 + %224 = getelementptr inbounds nuw i8, ptr %.032.i448, i64 %221 + %225 = lshr i64 %.033.i447, 29 %226 = getelementptr inbounds nuw i8, ptr %0, i64 764 %227 = load i32, ptr %226, align 4, !tbaa !25 %228 = trunc i64 %225 to i32 @@ -470,8 +470,8 @@ sha256_update.exit482.thread499: ; preds = %165 store i32 %229, ptr %226, align 4, !tbaa !25 %230 = getelementptr inbounds nuw i8, ptr %0, i64 760 %231 = load i32, ptr %230, align 4, !tbaa !26 - %.tr.i452 = trunc i64 %221 to i32 - %232 = shl i32 %.tr.i452, 3 + %.tr.i450 = trunc i64 %221 to i32 + %232 = shl i32 %.tr.i450, 3 %233 = add i32 %231, %232 store i32 %233, ptr %230, align 4, !tbaa !26 %234 = icmp ult i32 %233, %232 @@ -483,51 +483,51 @@ sha256_update.exit482.thread499: ; preds = %165 br label %237 237: ; preds = %235, %222, %219 - %.1.i453 = phi ptr [ %224, %235 ], [ %224, %222 ], [ %.032.i450, %219 ] - %.not40.i454 = icmp eq i64 %220, 0 - br i1 %.not40.i454, label %sha256_update.exit455, label %238 + %.1.i451 = phi ptr [ %224, %235 ], [ %224, %222 ], [ %.032.i448, %219 ] + %.not40.i452 = icmp eq i64 %220, 0 + br i1 %.not40.i452, label %sha256_update.exit453, label %238 238: ; preds = %237 - %239 = call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef nonnull %.1.i453, i64 noundef %220) #8 - br label %sha256_update.exit455 + %239 = call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef nonnull %.1.i451, i64 noundef %220) #8 + br label %sha256_update.exit453 -sha256_update.exit455: ; preds = %237, %238 +sha256_update.exit453: ; preds = %237, %238 %240 = add i64 %183, -32 %241 = icmp ugt i64 %240, 319 br i1 %241, label %242, label %279 -242: ; preds = %sha256_update.exit455 +242: ; preds = %sha256_update.exit453 %243 = add i64 %183, -352 %244 = and i64 %243, -64 %245 = load i32, ptr %9, align 8, !tbaa !22 %246 = sub i32 64, %245 %247 = zext i32 %246 to i64 %248 = add i64 %244, %247 - %.not.i456 = icmp eq i32 %245, 0 - br i1 %.not.i456, label %255, label %249 + %.not.i454 = icmp eq i32 %245, 0 + br i1 %.not.i454, label %255, label %249 249: ; preds = %242 %250 = zext i32 %245 to i64 %251 = sub nsw i64 64, %250 - %spec.select.i457 = call i64 @llvm.umin.i64(i64 %248, i64 %251) - %252 = call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef nonnull %182, i64 noundef %spec.select.i457) #8 - %253 = getelementptr inbounds nuw i8, ptr %182, i64 %spec.select.i457 - %254 = sub i64 %248, %spec.select.i457 + %spec.select.i455 = call i64 @llvm.umin.i64(i64 %248, i64 %251) + %252 = call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef nonnull %182, i64 noundef %spec.select.i455) #8 + %253 = getelementptr inbounds nuw i8, ptr %182, i64 %spec.select.i455 + %254 = sub i64 %248, %spec.select.i455 br label %255 255: ; preds = %249, %242 - %.033.i458 = phi i64 [ %254, %249 ], [ %248, %242 ] - %.032.i459 = phi ptr [ %253, %249 ], [ %182, %242 ] - %256 = and i64 %.033.i458, 63 - %257 = and i64 %.033.i458, -64 - %.not39.i460 = icmp eq i64 %257, 0 - br i1 %.not39.i460, label %273, label %258 + %.033.i456 = phi i64 [ %254, %249 ], [ %248, %242 ] + %.032.i457 = phi ptr [ %253, %249 ], [ %182, %242 ] + %256 = and i64 %.033.i456, 63 + %257 = and i64 %.033.i456, -64 + %.not39.i458 = icmp eq i64 %257, 0 + br i1 %.not39.i458, label %273, label %258 258: ; preds = %255 - %259 = lshr i64 %.033.i458, 6 - call void @sha256_block_data_order(ptr noundef nonnull %8, ptr noundef nonnull %.032.i459, i64 noundef %259) #8 - %260 = getelementptr inbounds nuw i8, ptr %.032.i459, i64 %257 - %261 = lshr i64 %.033.i458, 29 + %259 = lshr i64 %.033.i456, 6 + call void @sha256_block_data_order(ptr noundef nonnull %8, ptr noundef nonnull %.032.i457, i64 noundef %259) #8 + %260 = getelementptr inbounds nuw i8, ptr %.032.i457, i64 %257 + %261 = lshr i64 %.033.i456, 29 %262 = getelementptr inbounds nuw i8, ptr %0, i64 764 %263 = load i32, ptr %262, align 4, !tbaa !25 %264 = trunc i64 %261 to i32 @@ -535,8 +535,8 @@ sha256_update.exit455: ; preds = %237, %238 store i32 %265, ptr %262, align 4, !tbaa !25 %266 = getelementptr inbounds nuw i8, ptr %0, i64 760 %267 = load i32, ptr %266, align 4, !tbaa !26 - %.tr.i461 = trunc i64 %257 to i32 - %268 = shl i32 %.tr.i461, 3 + %.tr.i459 = trunc i64 %257 to i32 + %268 = shl i32 %.tr.i459, 3 %269 = add i32 %267, %268 store i32 %269, ptr %266, align 4, !tbaa !26 %270 = icmp ult i32 %269, %268 @@ -548,24 +548,24 @@ sha256_update.exit455: ; preds = %237, %238 br label %273 273: ; preds = %271, %258, %255 - %.1.i462 = phi ptr [ %260, %271 ], [ %260, %258 ], [ %.032.i459, %255 ] - %.not40.i463 = icmp eq i64 %256, 0 - br i1 %.not40.i463, label %sha256_update.exit464, label %274 + %.1.i460 = phi ptr [ %260, %271 ], [ %260, %258 ], [ %.032.i457, %255 ] + %.not40.i461 = icmp eq i64 %256, 0 + br i1 %.not40.i461, label %sha256_update.exit462, label %274 274: ; preds = %273 - %275 = call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef %.1.i462, i64 noundef %256) #8 - br label %sha256_update.exit464 + %275 = call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef %.1.i460, i64 noundef %256) #8 + br label %sha256_update.exit462 -sha256_update.exit464: ; preds = %273, %274 +sha256_update.exit462: ; preds = %273, %274 %276 = getelementptr inbounds nuw i8, ptr %182, i64 %248 %277 = sub i64 %240, %248 %278 = sub i64 %203, %248 br label %279 -279: ; preds = %sha256_update.exit464, %sha256_update.exit455 - %.0387 = phi i64 [ %278, %sha256_update.exit464 ], [ %203, %sha256_update.exit455 ] - %.0378 = phi i64 [ %277, %sha256_update.exit464 ], [ %240, %sha256_update.exit455 ] - %.0377 = phi ptr [ %276, %sha256_update.exit464 ], [ %182, %sha256_update.exit455 ] +279: ; preds = %sha256_update.exit462, %sha256_update.exit453 + %.0387 = phi i64 [ %278, %sha256_update.exit462 ], [ %203, %sha256_update.exit453 ] + %.0378 = phi i64 [ %277, %sha256_update.exit462 ], [ %240, %sha256_update.exit453 ] + %.0377 = phi ptr [ %276, %sha256_update.exit462 ], [ %182, %sha256_update.exit453 ] %280 = getelementptr inbounds nuw i8, ptr %0, i64 760 %281 = load i32, ptr %280, align 8, !tbaa !28 %.0387.tr = trunc i64 %.0387 to i32 @@ -581,10 +581,10 @@ sha256_update.exit464: ; preds = %273, %274 %291 = getelementptr inbounds nuw i8, ptr %162, i64 28 call void @llvm.memset.p0.i64(ptr noundef nonnull align 64 dereferenceable(32) %162, i8 0, i64 32, i1 false) %292 = load i32, ptr %9, align 8, !tbaa !22 - %.not518 = icmp eq i64 %.0378, 0 - br i1 %.not518, label %._crit_edge507, label %.lr.ph506 + %.not515 = icmp eq i64 %.0378, 0 + br i1 %.not515, label %._crit_edge504, label %.lr.ph503 -.lr.ph506: ; preds = %279 +.lr.ph503: ; preds = %279 %293 = add i64 %.0387, 7 %294 = getelementptr inbounds nuw i8, ptr %0, i64 828 %295 = getelementptr inbounds nuw i8, ptr %0, i64 732 @@ -596,42 +596,42 @@ sha256_update.exit464: ; preds = %273, %274 %301 = getelementptr inbounds nuw i8, ptr %0, i64 756 br label %302 -302: ; preds = %.lr.ph506, %361 - %.0388504 = phi i64 [ 0, %.lr.ph506 ], [ %362, %361 ] - %.0393503 = phi i32 [ %292, %.lr.ph506 ], [ %.1394, %361 ] - %303 = getelementptr inbounds nuw i8, ptr %.0377, i64 %.0388504 +302: ; preds = %.lr.ph503, %361 + %.0388501 = phi i64 [ 0, %.lr.ph503 ], [ %362, %361 ] + %.0393500 = phi i32 [ %292, %.lr.ph503 ], [ %.1394, %361 ] + %303 = getelementptr inbounds nuw i8, ptr %.0377, i64 %.0388501 %304 = load i8, ptr %303, align 1, !tbaa !18 %305 = zext i8 %304 to i64 - %306 = sub i64 %.0388504, %.0387 + %306 = sub i64 %.0388501, %.0387 %307 = lshr i64 %306, 56 %308 = and i64 %307, %305 %309 = and i64 %307, 128 %310 = xor i64 %309, 128 - %311 = sub i64 %.0387, %.0388504 + %311 = sub i64 %.0387, %.0388501 %312 = lshr i64 %311, 56 %313 = xor i64 %312, -1 %314 = and i64 %310, %313 %315 = or i64 %308, %314 %316 = trunc nuw i64 %315 to i8 - %317 = add i32 %.0393503, 1 - %318 = zext i32 %.0393503 to i64 + %317 = add i32 %.0393500, 1 + %318 = zext i32 %.0393500 to i64 %319 = getelementptr inbounds nuw [64 x i8], ptr %166, i64 0, i64 %318 store i8 %316, ptr %319, align 1, !tbaa !18 - %.not417 = icmp eq i32 %317, 64 - br i1 %.not417, label %320, label %361 + %.not415 = icmp eq i32 %317, 64 + br i1 %.not415, label %320, label %361 320: ; preds = %302 - %321 = sub i64 %293, %.0388504 - %.neg418 = ashr i64 %321, 63 + %321 = sub i64 %293, %.0388501 + %.neg416 = ashr i64 %321, 63 %322 = load i32, ptr %294, align 4, !tbaa !18 - %323 = trunc nsw i64 %.neg418 to i32 + %323 = trunc nsw i64 %.neg416 to i32 %324 = and i32 %284, %323 %325 = or i32 %322, %324 store i32 %325, ptr %294, align 4, !tbaa !18 call void @sha256_block_data_order(ptr noundef nonnull %8, ptr noundef nonnull %166, i64 noundef 1) #8 %326 = add i64 %306, -72 - %.neg418420 = and i64 %326, %321 - %327 = ashr i64 %.neg418420, 63 + %.neg416418 = and i64 %326, %321 + %327 = ashr i64 %.neg416418, 63 %328 = load i32, ptr %8, align 8, !tbaa !3 %329 = load i32, ptr %162, align 64, !tbaa !18 %330 = trunc nsw i64 %327 to i32 @@ -677,30 +677,30 @@ sha256_update.exit464: ; preds = %273, %274 361: ; preds = %302, %320 %.1394 = phi i32 [ 0, %320 ], [ %317, %302 ] - %362 = add nuw i64 %.0388504, 1 + %362 = add nuw i64 %.0388501, 1 %exitcond.not = icmp eq i64 %362, %.0378 - br i1 %exitcond.not, label %._crit_edge507, label %302, !llvm.loop !32 + br i1 %exitcond.not, label %._crit_edge504, label %302, !llvm.loop !32 -._crit_edge507: ; preds = %361, %279 +._crit_edge504: ; preds = %361, %279 %.0393.lcssa = phi i32 [ %292, %279 ], [ %.1394, %361 ] %363 = icmp ult i32 %.0393.lcssa, 64 - br i1 %363, label %._crit_edge513, label %._crit_edge513.thread + br i1 %363, label %._crit_edge510, label %._crit_edge510.thread -._crit_edge513: ; preds = %._crit_edge507 +._crit_edge510: ; preds = %._crit_edge504 %364 = zext nneg i32 %.0393.lcssa to i64 %365 = getelementptr i8, ptr %0, i64 %364 - %scevgep523 = getelementptr i8, ptr %365, i64 768 + %scevgep520 = getelementptr i8, ptr %365, i64 768 %366 = sub nuw nsw i64 64, %364 - call void @llvm.memset.p0.i64(ptr align 1 %scevgep523, i8 0, i64 %366, i1 false), !tbaa !18 + call void @llvm.memset.p0.i64(ptr align 1 %scevgep520, i8 0, i64 %366, i1 false), !tbaa !18 %367 = add i64 %.0378, 64 %368 = sub i64 %367, %364 %369 = icmp samesign ugt i32 %.0393.lcssa, 56 - br i1 %369, label %._crit_edge513.thread, label %420 + br i1 %369, label %._crit_edge510.thread, label %420 -._crit_edge513.thread: ; preds = %._crit_edge507, %._crit_edge513 - %.1389.lcssa526 = phi i64 [ %368, %._crit_edge513 ], [ %.0378, %._crit_edge507 ] +._crit_edge510.thread: ; preds = %._crit_edge504, %._crit_edge510 + %.1389.lcssa523 = phi i64 [ %368, %._crit_edge510 ], [ %.0378, %._crit_edge504 ] %370 = add i64 %.0387, 8 - %371 = sub i64 %370, %.1389.lcssa526 + %371 = sub i64 %370, %.1389.lcssa523 %.neg = ashr i64 %371, 63 %372 = getelementptr inbounds nuw i8, ptr %0, i64 828 %373 = load i32, ptr %372, align 4, !tbaa !18 @@ -709,8 +709,8 @@ sha256_update.exit464: ; preds = %273, %274 %376 = or i32 %373, %375 store i32 %376, ptr %372, align 4, !tbaa !18 call void @sha256_block_data_order(ptr noundef nonnull %8, ptr noundef nonnull %166, i64 noundef 1) #8 - %reass.sub519 = sub i64 %.1389.lcssa526, %.0387 - %377 = add i64 %reass.sub519, -73 + %reass.sub516 = sub i64 %.1389.lcssa523, %.0387 + %377 = add i64 %reass.sub516, -73 %.neg411 = and i64 %371, %377 %378 = ashr i64 %.neg411, 63 %379 = load i32, ptr %8, align 8, !tbaa !3 @@ -762,16 +762,16 @@ sha256_update.exit464: ; preds = %273, %274 %418 = or i32 %417, %416 store i32 %418, ptr %291, align 4, !tbaa !18 call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %166, i8 0, i64 60, i1 false) - %419 = add i64 %.1389.lcssa526, 64 + %419 = add i64 %.1389.lcssa523, 64 br label %420 -420: ; preds = %._crit_edge513.thread, %._crit_edge513 - %.2390 = phi i64 [ %419, %._crit_edge513.thread ], [ %368, %._crit_edge513 ] +420: ; preds = %._crit_edge510.thread, %._crit_edge510 + %.2390 = phi i64 [ %419, %._crit_edge510.thread ], [ %368, %._crit_edge510 ] %421 = getelementptr inbounds nuw i8, ptr %0, i64 828 store i32 %284, ptr %421, align 4, !tbaa !18 call void @sha256_block_data_order(ptr noundef nonnull %8, ptr noundef nonnull %166, i64 noundef 1) #8 - %reass.sub520 = sub i64 %.2390, %.0387 - %422 = add i64 %reass.sub520, -73 + %reass.sub517 = sub i64 %.2390, %.0387 + %422 = add i64 %reass.sub517, -73 %.neg412 = ashr i64 %422, 63 %423 = load i32, ptr %8, align 8, !tbaa !3 %424 = load i32, ptr %162, align 64, !tbaa !18 @@ -839,140 +839,141 @@ sha256_update.exit464: ; preds = %273, %274 %471 = getelementptr inbounds nuw i8, ptr %0, i64 616 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(112) %8, ptr noundef nonnull align 8 dereferenceable(112) %471, i64 112, i1 false), !tbaa.struct !17 %472 = load i32, ptr %9, align 4, !tbaa !29 - %.not.i465 = icmp eq i32 %472, 0 - br i1 %.not.i465, label %.thread494, label %473 + %.not.i463 = icmp eq i32 %472, 0 + br i1 %.not.i463, label %.thread492, label %473 473: ; preds = %420 %474 = zext i32 %472 to i64 %475 = sub nsw i64 64, %474 - %spec.select.i466 = call i64 @llvm.umin.i64(i64 %475, i64 32) - %476 = call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef nonnull %162, i64 noundef %spec.select.i466) #8 - %477 = getelementptr inbounds nuw i8, ptr %162, i64 %spec.select.i466 - %478 = sub nuw nsw i64 32, %spec.select.i466 - %.not40.i472 = icmp ugt i64 %475, 31 - br i1 %.not40.i472, label %sha256_update.exit473, label %.thread494 - -.thread494: ; preds = %420, %473 - %.1.i471497 = phi ptr [ %477, %473 ], [ %162, %420 ] + %spec.select.i464 = call i64 @llvm.umin.i64(i64 %475, i64 32) + %476 = call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef nonnull %162, i64 noundef %spec.select.i464) #8 + %477 = getelementptr inbounds nuw i8, ptr %162, i64 %spec.select.i464 + %478 = sub nuw nsw i64 32, %spec.select.i464 + %.not40.i470 = icmp ugt i64 %475, 31 + br i1 %.not40.i470, label %sha256_update.exit471, label %.thread492 + +.thread492: ; preds = %420, %473 + %.1.i469495 = phi ptr [ %477, %473 ], [ %162, %420 ] %479 = phi i64 [ %478, %473 ], [ 32, %420 ] - %480 = call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef nonnull %.1.i471497, i64 noundef %479) #8 - br label %sha256_update.exit473 + %480 = call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef nonnull %.1.i469495, i64 noundef %479) #8 + br label %sha256_update.exit471 -sha256_update.exit473: ; preds = %473, %.thread494 +sha256_update.exit471: ; preds = %473, %.thread492 %481 = call i32 @SHA256_Final(ptr noundef nonnull %162, ptr noundef nonnull %8) #8 - %482 = getelementptr i8, ptr %.0377, i64 %.0378 - %483 = getelementptr i8, ptr %482, i64 31 - %484 = zext nneg i32 %192 to i64 - %485 = sub nsw i64 0, %484 - %486 = getelementptr inbounds i8, ptr %483, i64 %485 - %487 = getelementptr inbounds i8, ptr %486, i64 -32 - %.neg413 = add nuw nsw i64 %484, 1 - %.neg414 = add i64 %.neg413, %.0387 - %gepdiff = sub i64 %.neg414, %.0378 - %488 = add nuw nsw i32 %192, 32 - %489 = zext nneg i32 %488 to i64 - br label %490 - -490: ; preds = %sha256_update.exit473, %490 - %.3517 = phi i64 [ 0, %sha256_update.exit473 ], [ %513, %490 ] - %.1392516 = phi i64 [ 0, %sha256_update.exit473 ], [ %512, %490 ] - %.2395515 = phi i32 [ 0, %sha256_update.exit473 ], [ %509, %490 ] - %491 = getelementptr inbounds nuw i8, ptr %487, i64 %.3517 - %492 = load i8, ptr %491, align 1, !tbaa !18 - %493 = zext i8 %492 to i32 - %494 = sub i64 %.3517, %gepdiff - %495 = trunc i64 %494 to i32 - %496 = add i32 %495, -32 - %497 = xor i32 %200, %493 - %isneg = icmp slt i32 %496, 0 - %498 = select i1 %isneg, i32 0, i32 %497 - %499 = xor i64 %.3517, -1 - %500 = add i64 %gepdiff, %499 - %501 = trunc i64 %500 to i32 - %502 = and i32 %496, %501 - %503 = getelementptr inbounds nuw [96 x i8], ptr %162, i64 0, i64 %.1392516 - %504 = load i8, ptr %503, align 1, !tbaa !18 - %505 = xor i8 %504, %492 - %506 = zext i8 %505 to i32 - %isneg416 = icmp slt i32 %502, 0 - %507 = select i1 %isneg416, i32 %506, i32 0 - %508 = or i32 %498, %.2395515 - %509 = or i32 %508, %507 - %510 = lshr i32 %502, 31 - %511 = zext nneg i32 %510 to i64 - %512 = add i64 %.1392516, %511 - %513 = add nuw nsw i64 %.3517, 1 - %exitcond524.not = icmp eq i64 %513, %489 - br i1 %exitcond524.not, label %sha256_update.exit482, label %490, !llvm.loop !42 - -514: ; preds = %158 - %515 = load i32, ptr %9, align 4, !tbaa !29 - %.not.i474 = icmp eq i32 %515, 0 - br i1 %.not.i474, label %522, label %516 - -516: ; preds = %514 - %517 = zext i32 %515 to i64 - %518 = sub nsw i64 64, %517 - %spec.select.i475 = call i64 @llvm.umin.i64(i64 %3, i64 %518) - %519 = call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef %1, i64 noundef %spec.select.i475) #8 - %520 = getelementptr inbounds nuw i8, ptr %1, i64 %spec.select.i475 - %521 = sub i64 %3, %spec.select.i475 - br label %522 - -522: ; preds = %516, %514 - %.033.i476 = phi i64 [ %521, %516 ], [ %3, %514 ] - %.032.i477 = phi ptr [ %520, %516 ], [ %1, %514 ] - %523 = and i64 %.033.i476, 63 - %524 = and i64 %.033.i476, -64 - %.not39.i478 = icmp eq i64 %524, 0 - br i1 %.not39.i478, label %540, label %525 - -525: ; preds = %522 - %526 = lshr i64 %.033.i476, 6 - call void @sha256_block_data_order(ptr noundef nonnull %8, ptr noundef %.032.i477, i64 noundef %526) #8 - %527 = getelementptr inbounds nuw i8, ptr %.032.i477, i64 %524 - %528 = lshr i64 %.033.i476, 29 - %529 = getelementptr inbounds nuw i8, ptr %0, i64 764 - %530 = load i32, ptr %529, align 4, !tbaa !25 - %531 = trunc i64 %528 to i32 - %532 = add i32 %530, %531 - store i32 %532, ptr %529, align 4, !tbaa !25 - %533 = getelementptr inbounds nuw i8, ptr %0, i64 760 - %534 = load i32, ptr %533, align 4, !tbaa !26 - %.tr.i479 = trunc i64 %524 to i32 - %535 = shl i32 %.tr.i479, 3 + %482 = getelementptr inbounds nuw i8, ptr %.0377, i64 %.0387 + %483 = getelementptr i8, ptr %.0377, i64 %.0378 + %484 = getelementptr i8, ptr %483, i64 31 + %485 = zext nneg i32 %192 to i64 + %486 = sub nsw i64 0, %485 + %487 = getelementptr inbounds i8, ptr %484, i64 %486 + %488 = getelementptr inbounds i8, ptr %487, i64 -32 + %489 = ptrtoint ptr %482 to i64 + %490 = ptrtoint ptr %488 to i64 + %491 = sub i64 %489, %490 + %492 = add nuw nsw i32 %192, 32 + %493 = zext nneg i32 %492 to i64 + br label %494 + +494: ; preds = %sha256_update.exit471, %494 + %.3514 = phi i64 [ 0, %sha256_update.exit471 ], [ %517, %494 ] + %.1392513 = phi i64 [ 0, %sha256_update.exit471 ], [ %516, %494 ] + %.2395512 = phi i32 [ 0, %sha256_update.exit471 ], [ %513, %494 ] + %495 = getelementptr inbounds nuw i8, ptr %488, i64 %.3514 + %496 = load i8, ptr %495, align 1, !tbaa !18 + %497 = zext i8 %496 to i32 + %498 = sub i64 %.3514, %491 + %499 = trunc i64 %498 to i32 + %500 = add i32 %499, -32 + %501 = xor i32 %200, %497 + %isneg = icmp slt i32 %500, 0 + %502 = select i1 %isneg, i32 0, i32 %501 + %503 = xor i64 %.3514, -1 + %504 = add i64 %491, %503 + %505 = trunc i64 %504 to i32 + %506 = and i32 %500, %505 + %507 = getelementptr inbounds nuw [96 x i8], ptr %162, i64 0, i64 %.1392513 + %508 = load i8, ptr %507, align 1, !tbaa !18 + %509 = xor i8 %508, %496 + %510 = zext i8 %509 to i32 + %isneg414 = icmp slt i32 %506, 0 + %511 = select i1 %isneg414, i32 %510, i32 0 + %512 = or i32 %502, %.2395512 + %513 = or i32 %512, %511 + %514 = lshr i32 %506, 31 + %515 = zext nneg i32 %514 to i64 + %516 = add i64 %.1392513, %515 + %517 = add nuw nsw i64 %.3514, 1 + %exitcond521.not = icmp eq i64 %517, %493 + br i1 %exitcond521.not, label %sha256_update.exit480, label %494, !llvm.loop !42 + +518: ; preds = %158 + %519 = load i32, ptr %9, align 4, !tbaa !29 + %.not.i472 = icmp eq i32 %519, 0 + br i1 %.not.i472, label %526, label %520 + +520: ; preds = %518 + %521 = zext i32 %519 to i64 + %522 = sub nsw i64 64, %521 + %spec.select.i473 = call i64 @llvm.umin.i64(i64 %3, i64 %522) + %523 = call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef %1, i64 noundef %spec.select.i473) #8 + %524 = getelementptr inbounds nuw i8, ptr %1, i64 %spec.select.i473 + %525 = sub i64 %3, %spec.select.i473 + br label %526 + +526: ; preds = %520, %518 + %.033.i474 = phi i64 [ %525, %520 ], [ %3, %518 ] + %.032.i475 = phi ptr [ %524, %520 ], [ %1, %518 ] + %527 = and i64 %.033.i474, 63 + %528 = and i64 %.033.i474, -64 + %.not39.i476 = icmp eq i64 %528, 0 + br i1 %.not39.i476, label %544, label %529 + +529: ; preds = %526 + %530 = lshr i64 %.033.i474, 6 + call void @sha256_block_data_order(ptr noundef nonnull %8, ptr noundef %.032.i475, i64 noundef %530) #8 + %531 = getelementptr inbounds nuw i8, ptr %.032.i475, i64 %528 + %532 = lshr i64 %.033.i474, 29 + %533 = getelementptr inbounds nuw i8, ptr %0, i64 764 + %534 = load i32, ptr %533, align 4, !tbaa !25 + %535 = trunc i64 %532 to i32 %536 = add i32 %534, %535 - store i32 %536, ptr %533, align 4, !tbaa !26 - %537 = icmp ult i32 %536, %535 - br i1 %537, label %538, label %540 - -538: ; preds = %525 - %539 = add i32 %532, 1 - store i32 %539, ptr %529, align 4, !tbaa !25 - br label %540 + store i32 %536, ptr %533, align 4, !tbaa !25 + %537 = getelementptr inbounds nuw i8, ptr %0, i64 760 + %538 = load i32, ptr %537, align 4, !tbaa !26 + %.tr.i477 = trunc i64 %528 to i32 + %539 = shl i32 %.tr.i477, 3 + %540 = add i32 %538, %539 + store i32 %540, ptr %537, align 4, !tbaa !26 + %541 = icmp ult i32 %540, %539 + br i1 %541, label %542, label %544 + +542: ; preds = %529 + %543 = add i32 %536, 1 + store i32 %543, ptr %533, align 4, !tbaa !25 + br label %544 -540: ; preds = %538, %525, %522 - %.1.i480 = phi ptr [ %527, %538 ], [ %527, %525 ], [ %.032.i477, %522 ] - %.not40.i481 = icmp eq i64 %523, 0 - br i1 %.not40.i481, label %sha256_update.exit482.thread, label %541 +544: ; preds = %542, %529, %526 + %.1.i478 = phi ptr [ %531, %542 ], [ %531, %529 ], [ %.032.i475, %526 ] + %.not40.i479 = icmp eq i64 %527, 0 + br i1 %.not40.i479, label %sha256_update.exit480.thread, label %545 -541: ; preds = %540 - %542 = call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef %.1.i480, i64 noundef %523) #8 - br label %sha256_update.exit482.thread +545: ; preds = %544 + %546 = call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef %.1.i478, i64 noundef %527) #8 + br label %sha256_update.exit480.thread -sha256_update.exit482.thread: ; preds = %541, %540 +sha256_update.exit480.thread: ; preds = %545, %544 call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %5) #8 - br label %544 + br label %548 -sha256_update.exit482: ; preds = %490 - %.inv = icmp slt i32 %509, 1 +sha256_update.exit480: ; preds = %494 + %.inv = icmp slt i32 %513, 1 %narrow = select i1 %.inv, i1 %193, i1 false - %543 = zext i1 %narrow to i32 + %547 = zext i1 %narrow to i32 call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %5) #8 - br label %544 + br label %548 -544: ; preds = %152, %._crit_edge, %sha256_update.exit482.thread, %sha256_update.exit482, %sha256_update.exit482.thread499, %20, %4 - %.0 = phi i32 [ %543, %sha256_update.exit482 ], [ 0, %4 ], [ 0, %20 ], [ 0, %sha256_update.exit482.thread499 ], [ 1, %sha256_update.exit482.thread ], [ 1, %._crit_edge ], [ 1, %152 ] +548: ; preds = %152, %._crit_edge, %sha256_update.exit480.thread, %sha256_update.exit480, %sha256_update.exit480.thread497, %20, %4 + %.0 = phi i32 [ %547, %sha256_update.exit480 ], [ 0, %4 ], [ 0, %20 ], [ 0, %sha256_update.exit480.thread497 ], [ 1, %sha256_update.exit480.thread ], [ 1, %._crit_edge ], [ 1, %152 ] ret i32 %.0 } diff --git a/bench/openssl/optimized/e_aes_cbc_hmac_sha1.ll b/bench/openssl/optimized/e_aes_cbc_hmac_sha1.ll index b047f43b31f..e92af1535fb 100644 --- a/bench/openssl/optimized/e_aes_cbc_hmac_sha1.ll +++ b/bench/openssl/optimized/e_aes_cbc_hmac_sha1.ll @@ -92,7 +92,7 @@ define internal range(i32 0, 2) i32 @aesni_cbc_hmac_sha1_cipher(ptr noundef %0, store i64 -1, ptr %7, align 8, !tbaa !9 %14 = and i64 %3, 15 %.not = icmp eq i64 %14, 0 - br i1 %.not, label %15, label %483 + br i1 %.not, label %15, label %487 15: ; preds = %4 %16 = tail call i32 @EVP_CIPHER_CTX_is_encrypting(ptr noundef %0) #7 @@ -106,8 +106,8 @@ define internal range(i32 0, 2) i32 @aesni_cbc_hmac_sha1_cipher(ptr noundef %0, 19: ; preds = %17 %20 = add i64 %8, 36 %21 = and i64 %20, -16 - %.not383 = icmp eq i64 %3, %21 - br i1 %.not383, label %22, label %483 + %.not381 = icmp eq i64 %3, %21 + br i1 %.not381, label %22, label %487 22: ; preds = %19 %23 = getelementptr inbounds nuw i8, ptr %6, i64 544 @@ -125,8 +125,8 @@ define internal range(i32 0, 2) i32 @aesni_cbc_hmac_sha1_cipher(ptr noundef %0, 29: ; preds = %26 %30 = sub nuw i64 %.0342, %27 - %.not384 = icmp ult i64 %30, 64 - br i1 %.not384, label %78, label %31 + %.not382 = icmp ult i64 %30, 64 + br i1 %.not382, label %78, label %31 31: ; preds = %29 %32 = lshr i64 %30, 6 @@ -218,31 +218,31 @@ sha1_update.exit: ; preds = %59, %60 %80 = getelementptr inbounds nuw i8, ptr %2, i64 %79 %81 = sub i64 %.0342, %79 %82 = load i32, ptr %10, align 4, !tbaa !15 - %.not.i387 = icmp eq i32 %82, 0 - br i1 %.not.i387, label %89, label %83 + %.not.i385 = icmp eq i32 %82, 0 + br i1 %.not.i385, label %89, label %83 83: ; preds = %78 %84 = zext i32 %82 to i64 %85 = sub nsw i64 64, %84 - %spec.select.i388 = tail call i64 @llvm.umin.i64(i64 %81, i64 %85) - %86 = tail call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef %80, i64 noundef %spec.select.i388) #7 - %87 = getelementptr inbounds nuw i8, ptr %80, i64 %spec.select.i388 - %88 = sub i64 %81, %spec.select.i388 + %spec.select.i386 = tail call i64 @llvm.umin.i64(i64 %81, i64 %85) + %86 = tail call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef %80, i64 noundef %spec.select.i386) #7 + %87 = getelementptr inbounds nuw i8, ptr %80, i64 %spec.select.i386 + %88 = sub i64 %81, %spec.select.i386 br label %89 89: ; preds = %83, %78 - %.033.i389 = phi i64 [ %88, %83 ], [ %81, %78 ] - %.032.i390 = phi ptr [ %87, %83 ], [ %80, %78 ] - %90 = and i64 %.033.i389, 63 - %91 = and i64 %.033.i389, -64 - %.not39.i391 = icmp eq i64 %91, 0 - br i1 %.not39.i391, label %107, label %92 + %.033.i387 = phi i64 [ %88, %83 ], [ %81, %78 ] + %.032.i388 = phi ptr [ %87, %83 ], [ %80, %78 ] + %90 = and i64 %.033.i387, 63 + %91 = and i64 %.033.i387, -64 + %.not39.i389 = icmp eq i64 %91, 0 + br i1 %.not39.i389, label %107, label %92 92: ; preds = %89 - %93 = lshr i64 %.033.i389, 6 - tail call void @sha1_block_data_order(ptr noundef nonnull %9, ptr noundef %.032.i390, i64 noundef %93) #7 - %94 = getelementptr inbounds nuw i8, ptr %.032.i390, i64 %91 - %95 = lshr i64 %.033.i389, 29 + %93 = lshr i64 %.033.i387, 6 + tail call void @sha1_block_data_order(ptr noundef nonnull %9, ptr noundef %.032.i388, i64 noundef %93) #7 + %94 = getelementptr inbounds nuw i8, ptr %.032.i388, i64 %91 + %95 = lshr i64 %.033.i387, 29 %96 = getelementptr inbounds nuw i8, ptr %6, i64 460 %97 = load i32, ptr %96, align 4, !tbaa !16 %98 = trunc i64 %95 to i32 @@ -250,8 +250,8 @@ sha1_update.exit: ; preds = %59, %60 store i32 %99, ptr %96, align 4, !tbaa !16 %100 = getelementptr inbounds nuw i8, ptr %6, i64 456 %101 = load i32, ptr %100, align 4, !tbaa !17 - %.tr.i392 = trunc i64 %91 to i32 - %102 = shl i32 %.tr.i392, 3 + %.tr.i390 = trunc i64 %91 to i32 + %102 = shl i32 %.tr.i390, 3 %103 = add i32 %101, %102 store i32 %103, ptr %100, align 4, !tbaa !17 %104 = icmp ult i32 %103, %102 @@ -263,21 +263,21 @@ sha1_update.exit: ; preds = %59, %60 br label %107 107: ; preds = %105, %92, %89 - %.1.i393 = phi ptr [ %94, %105 ], [ %94, %92 ], [ %.032.i390, %89 ] - %.not40.i394 = icmp eq i64 %90, 0 - br i1 %.not40.i394, label %sha1_update.exit395, label %108 + %.1.i391 = phi ptr [ %94, %105 ], [ %94, %92 ], [ %.032.i388, %89 ] + %.not40.i392 = icmp eq i64 %90, 0 + br i1 %.not40.i392, label %sha1_update.exit393, label %108 108: ; preds = %107 - %109 = tail call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef %.1.i393, i64 noundef %90) #7 - br label %sha1_update.exit395 + %109 = tail call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef %.1.i391, i64 noundef %90) #7 + br label %sha1_update.exit393 -sha1_update.exit395: ; preds = %107, %108 - %.not385 = icmp eq i64 %.0342, %3 - br i1 %.not385, label %138, label %110 +sha1_update.exit393: ; preds = %107, %108 + %.not383 = icmp eq i64 %.0342, %3 + br i1 %.not383, label %138, label %110 -110: ; preds = %sha1_update.exit395 - %.not386 = icmp eq ptr %2, %1 - br i1 %.not386, label %115, label %111 +110: ; preds = %sha1_update.exit393 + %.not384 = icmp eq ptr %2, %1 + br i1 %.not384, label %115, label %111 111: ; preds = %110 %112 = getelementptr inbounds nuw i8, ptr %1, i64 %.0346 @@ -292,32 +292,32 @@ sha1_update.exit395: ; preds = %107, %108 %118 = getelementptr inbounds nuw i8, ptr %6, i64 340 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(96) %9, ptr noundef nonnull align 4 dereferenceable(96) %118, i64 96, i1 false), !tbaa.struct !7 %119 = load i32, ptr %10, align 4, !tbaa !15 - %.not.i396 = icmp eq i32 %119, 0 - br i1 %.not.i396, label %.thread444, label %120 + %.not.i394 = icmp eq i32 %119, 0 + br i1 %.not.i394, label %.thread442, label %120 120: ; preds = %115 %121 = zext i32 %119 to i64 %122 = sub nsw i64 64, %121 - %spec.select.i397 = tail call i64 @llvm.umin.i64(i64 %122, i64 20) - %123 = tail call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef %116, i64 noundef %spec.select.i397) #7 - %124 = getelementptr inbounds nuw i8, ptr %116, i64 %spec.select.i397 - %125 = sub nuw nsw i64 20, %spec.select.i397 - %.not40.i403 = icmp ugt i64 %122, 19 - br i1 %.not40.i403, label %sha1_update.exit404, label %.thread444 - -.thread444: ; preds = %115, %120 - %.1.i402447 = phi ptr [ %124, %120 ], [ %116, %115 ] + %spec.select.i395 = tail call i64 @llvm.umin.i64(i64 %122, i64 20) + %123 = tail call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef %116, i64 noundef %spec.select.i395) #7 + %124 = getelementptr inbounds nuw i8, ptr %116, i64 %spec.select.i395 + %125 = sub nuw nsw i64 20, %spec.select.i395 + %.not40.i401 = icmp ugt i64 %122, 19 + br i1 %.not40.i401, label %sha1_update.exit402, label %.thread442 + +.thread442: ; preds = %115, %120 + %.1.i400445 = phi ptr [ %124, %120 ], [ %116, %115 ] %126 = phi i64 [ %125, %120 ], [ 20, %115 ] - %127 = tail call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef %.1.i402447, i64 noundef %126) #7 - br label %sha1_update.exit404 + %127 = tail call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef %.1.i400445, i64 noundef %126) #7 + br label %sha1_update.exit402 -sha1_update.exit404: ; preds = %120, %.thread444 +sha1_update.exit402: ; preds = %120, %.thread442 %128 = tail call i32 @SHA1_Final(ptr noundef %116, ptr noundef nonnull %9) #7 %129 = add i64 %.0342, 20 %130 = icmp ult i64 %129, %3 br i1 %130, label %.lr.ph.preheader, label %._crit_edge -.lr.ph.preheader: ; preds = %sha1_update.exit404 +.lr.ph.preheader: ; preds = %sha1_update.exit402 %reass.sub = sub i64 %3, %.0342 %131 = trunc i64 %reass.sub to i8 %132 = add i8 %131, -21 @@ -327,20 +327,20 @@ sha1_update.exit404: ; preds = %120, %.thread444 tail call void @llvm.memset.p0.i64(ptr align 1 %scevgep, i8 %132, i64 %134, i1 false), !tbaa !8 br label %._crit_edge -._crit_edge: ; preds = %.lr.ph.preheader, %sha1_update.exit404 +._crit_edge: ; preds = %.lr.ph.preheader, %sha1_update.exit402 %135 = getelementptr inbounds nuw i8, ptr %1, i64 %.0346 %136 = sub i64 %3, %.0346 %137 = getelementptr inbounds nuw i8, ptr %0, i64 40 tail call void @aesni_cbc_encrypt(ptr noundef %135, ptr noundef %135, i64 noundef %136, ptr noundef nonnull %6, ptr noundef nonnull %137, i32 noundef 1) #7 - br label %483 + br label %487 -138: ; preds = %sha1_update.exit395 +138: ; preds = %sha1_update.exit393 %139 = getelementptr inbounds nuw i8, ptr %2, i64 %.0346 %140 = getelementptr inbounds nuw i8, ptr %1, i64 %.0346 %141 = sub i64 %3, %.0346 %142 = getelementptr inbounds nuw i8, ptr %0, i64 40 tail call void @aesni_cbc_encrypt(ptr noundef %139, ptr noundef %140, i64 noundef %141, ptr noundef nonnull %6, ptr noundef nonnull %142, i32 noundef 1) #7 - br label %483 + br label %487 143: ; preds = %15 call void @llvm.lifetime.start.p0(i64 52, ptr nonnull %5) #7 @@ -349,7 +349,7 @@ sha1_update.exit404: ; preds = %120, %.thread444 %146 = and i64 %145, -32 %147 = inttoptr i64 %146 to ptr %.not371 = icmp eq i64 %8, -1 - br i1 %.not371, label %452, label %148 + br i1 %.not371, label %456, label %148 148: ; preds = %143 %149 = getelementptr inbounds nuw i8, ptr %6, i64 464 @@ -369,7 +369,7 @@ sha1_update.exit404: ; preds = %120, %.thread444 162: ; preds = %148 %163 = icmp ult i64 %3, 37 - br i1 %163, label %sha1_update.exit440.thread458, label %164 + br i1 %163, label %sha1_update.exit438.thread456, label %164 164: ; preds = %162 %165 = getelementptr inbounds nuw i8, ptr %0, i64 40 @@ -381,7 +381,7 @@ sha1_update.exit404: ; preds = %120, %.thread444 169: ; preds = %148 %170 = icmp ult i64 %3, 21 - br i1 %170, label %sha1_update.exit440.thread458, label %171 + br i1 %170, label %sha1_update.exit438.thread456, label %171 171: ; preds = %169, %164 %.0340 = phi i64 [ %168, %164 ], [ %3, %169 ] @@ -422,31 +422,31 @@ sha1_update.exit404: ; preds = %120, %.thread444 %200 = getelementptr inbounds nuw i8, ptr %6, i64 244 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(96) %9, ptr noundef nonnull align 4 dereferenceable(96) %200, i64 96, i1 false), !tbaa.struct !7 %201 = load i32, ptr %10, align 4, !tbaa !15 - %.not.i405 = icmp eq i32 %201, 0 - br i1 %.not.i405, label %208, label %202 + %.not.i403 = icmp eq i32 %201, 0 + br i1 %.not.i403, label %208, label %202 202: ; preds = %171 %203 = zext i32 %201 to i64 %204 = sub nsw i64 64, %203 - %spec.select.i406 = call i64 @llvm.umin.i64(i64 %8, i64 %204) - %205 = call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef nonnull %150, i64 noundef %spec.select.i406) #7 - %206 = getelementptr inbounds nuw i8, ptr %150, i64 %spec.select.i406 - %207 = sub i64 %8, %spec.select.i406 + %spec.select.i404 = call i64 @llvm.umin.i64(i64 %8, i64 %204) + %205 = call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef nonnull %150, i64 noundef %spec.select.i404) #7 + %206 = getelementptr inbounds nuw i8, ptr %150, i64 %spec.select.i404 + %207 = sub i64 %8, %spec.select.i404 br label %208 208: ; preds = %202, %171 - %.033.i407 = phi i64 [ %207, %202 ], [ %8, %171 ] - %.032.i408 = phi ptr [ %206, %202 ], [ %150, %171 ] - %209 = and i64 %.033.i407, 63 - %210 = and i64 %.033.i407, -64 - %.not39.i409 = icmp eq i64 %210, 0 - br i1 %.not39.i409, label %226, label %211 + %.033.i405 = phi i64 [ %207, %202 ], [ %8, %171 ] + %.032.i406 = phi ptr [ %206, %202 ], [ %150, %171 ] + %209 = and i64 %.033.i405, 63 + %210 = and i64 %.033.i405, -64 + %.not39.i407 = icmp eq i64 %210, 0 + br i1 %.not39.i407, label %226, label %211 211: ; preds = %208 - %212 = lshr i64 %.033.i407, 6 - call void @sha1_block_data_order(ptr noundef nonnull %9, ptr noundef nonnull %.032.i408, i64 noundef %212) #7 - %213 = getelementptr inbounds nuw i8, ptr %.032.i408, i64 %210 - %214 = lshr i64 %.033.i407, 29 + %212 = lshr i64 %.033.i405, 6 + call void @sha1_block_data_order(ptr noundef nonnull %9, ptr noundef nonnull %.032.i406, i64 noundef %212) #7 + %213 = getelementptr inbounds nuw i8, ptr %.032.i406, i64 %210 + %214 = lshr i64 %.033.i405, 29 %215 = getelementptr inbounds nuw i8, ptr %6, i64 460 %216 = load i32, ptr %215, align 4, !tbaa !16 %217 = trunc i64 %214 to i32 @@ -454,8 +454,8 @@ sha1_update.exit404: ; preds = %120, %.thread444 store i32 %218, ptr %215, align 4, !tbaa !16 %219 = getelementptr inbounds nuw i8, ptr %6, i64 456 %220 = load i32, ptr %219, align 4, !tbaa !17 - %.tr.i410 = trunc i64 %210 to i32 - %221 = shl i32 %.tr.i410, 3 + %.tr.i408 = trunc i64 %210 to i32 + %221 = shl i32 %.tr.i408, 3 %222 = add i32 %220, %221 store i32 %222, ptr %219, align 4, !tbaa !17 %223 = icmp ult i32 %222, %221 @@ -467,51 +467,51 @@ sha1_update.exit404: ; preds = %120, %.thread444 br label %226 226: ; preds = %224, %211, %208 - %.1.i411 = phi ptr [ %213, %224 ], [ %213, %211 ], [ %.032.i408, %208 ] - %.not40.i412 = icmp eq i64 %209, 0 - br i1 %.not40.i412, label %sha1_update.exit413, label %227 + %.1.i409 = phi ptr [ %213, %224 ], [ %213, %211 ], [ %.032.i406, %208 ] + %.not40.i410 = icmp eq i64 %209, 0 + br i1 %.not40.i410, label %sha1_update.exit411, label %227 227: ; preds = %226 - %228 = call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef nonnull %.1.i411, i64 noundef %209) #7 - br label %sha1_update.exit413 + %228 = call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef nonnull %.1.i409, i64 noundef %209) #7 + br label %sha1_update.exit411 -sha1_update.exit413: ; preds = %226, %227 +sha1_update.exit411: ; preds = %226, %227 %229 = add i64 %.0340, -20 %230 = icmp ugt i64 %229, 319 br i1 %230, label %231, label %268 -231: ; preds = %sha1_update.exit413 +231: ; preds = %sha1_update.exit411 %232 = add i64 %.0340, -340 %233 = and i64 %232, -64 %234 = load i32, ptr %10, align 4, !tbaa !14 %235 = sub i32 64, %234 %236 = zext i32 %235 to i64 %237 = add i64 %233, %236 - %.not.i414 = icmp eq i32 %234, 0 - br i1 %.not.i414, label %244, label %238 + %.not.i412 = icmp eq i32 %234, 0 + br i1 %.not.i412, label %244, label %238 238: ; preds = %231 %239 = zext i32 %234 to i64 %240 = sub nsw i64 64, %239 - %spec.select.i415 = call i64 @llvm.umin.i64(i64 %237, i64 %240) - %241 = call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef nonnull %.0337, i64 noundef %spec.select.i415) #7 - %242 = getelementptr inbounds nuw i8, ptr %.0337, i64 %spec.select.i415 - %243 = sub i64 %237, %spec.select.i415 + %spec.select.i413 = call i64 @llvm.umin.i64(i64 %237, i64 %240) + %241 = call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef nonnull %.0337, i64 noundef %spec.select.i413) #7 + %242 = getelementptr inbounds nuw i8, ptr %.0337, i64 %spec.select.i413 + %243 = sub i64 %237, %spec.select.i413 br label %244 244: ; preds = %238, %231 - %.033.i416 = phi i64 [ %243, %238 ], [ %237, %231 ] - %.032.i417 = phi ptr [ %242, %238 ], [ %.0337, %231 ] - %245 = and i64 %.033.i416, 63 - %246 = and i64 %.033.i416, -64 - %.not39.i418 = icmp eq i64 %246, 0 - br i1 %.not39.i418, label %262, label %247 + %.033.i414 = phi i64 [ %243, %238 ], [ %237, %231 ] + %.032.i415 = phi ptr [ %242, %238 ], [ %.0337, %231 ] + %245 = and i64 %.033.i414, 63 + %246 = and i64 %.033.i414, -64 + %.not39.i416 = icmp eq i64 %246, 0 + br i1 %.not39.i416, label %262, label %247 247: ; preds = %244 - %248 = lshr i64 %.033.i416, 6 - call void @sha1_block_data_order(ptr noundef nonnull %9, ptr noundef nonnull %.032.i417, i64 noundef %248) #7 - %249 = getelementptr inbounds nuw i8, ptr %.032.i417, i64 %246 - %250 = lshr i64 %.033.i416, 29 + %248 = lshr i64 %.033.i414, 6 + call void @sha1_block_data_order(ptr noundef nonnull %9, ptr noundef nonnull %.032.i415, i64 noundef %248) #7 + %249 = getelementptr inbounds nuw i8, ptr %.032.i415, i64 %246 + %250 = lshr i64 %.033.i414, 29 %251 = getelementptr inbounds nuw i8, ptr %6, i64 460 %252 = load i32, ptr %251, align 4, !tbaa !16 %253 = trunc i64 %250 to i32 @@ -519,8 +519,8 @@ sha1_update.exit413: ; preds = %226, %227 store i32 %254, ptr %251, align 4, !tbaa !16 %255 = getelementptr inbounds nuw i8, ptr %6, i64 456 %256 = load i32, ptr %255, align 4, !tbaa !17 - %.tr.i419 = trunc i64 %246 to i32 - %257 = shl i32 %.tr.i419, 3 + %.tr.i417 = trunc i64 %246 to i32 + %257 = shl i32 %.tr.i417, 3 %258 = add i32 %256, %257 store i32 %258, ptr %255, align 4, !tbaa !17 %259 = icmp ult i32 %258, %257 @@ -532,24 +532,24 @@ sha1_update.exit413: ; preds = %226, %227 br label %262 262: ; preds = %260, %247, %244 - %.1.i420 = phi ptr [ %249, %260 ], [ %249, %247 ], [ %.032.i417, %244 ] - %.not40.i421 = icmp eq i64 %245, 0 - br i1 %.not40.i421, label %sha1_update.exit422, label %263 + %.1.i418 = phi ptr [ %249, %260 ], [ %249, %247 ], [ %.032.i415, %244 ] + %.not40.i419 = icmp eq i64 %245, 0 + br i1 %.not40.i419, label %sha1_update.exit420, label %263 263: ; preds = %262 - %264 = call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef %.1.i420, i64 noundef %245) #7 - br label %sha1_update.exit422 + %264 = call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef %.1.i418, i64 noundef %245) #7 + br label %sha1_update.exit420 -sha1_update.exit422: ; preds = %262, %263 +sha1_update.exit420: ; preds = %262, %263 %265 = getelementptr inbounds nuw i8, ptr %.0337, i64 %237 %266 = sub i64 %229, %237 %267 = sub i64 %192, %237 br label %268 -268: ; preds = %sha1_update.exit422, %sha1_update.exit413 - %.0349 = phi i64 [ %267, %sha1_update.exit422 ], [ %192, %sha1_update.exit413 ] - %.1341 = phi i64 [ %266, %sha1_update.exit422 ], [ %229, %sha1_update.exit413 ] - %.1338 = phi ptr [ %265, %sha1_update.exit422 ], [ %.0337, %sha1_update.exit413 ] +268: ; preds = %sha1_update.exit420, %sha1_update.exit411 + %.0349 = phi i64 [ %267, %sha1_update.exit420 ], [ %192, %sha1_update.exit411 ] + %.1341 = phi i64 [ %266, %sha1_update.exit420 ], [ %229, %sha1_update.exit411 ] + %.1338 = phi ptr [ %265, %sha1_update.exit420 ], [ %.0337, %sha1_update.exit411 ] %269 = getelementptr inbounds nuw i8, ptr %6, i64 456 %270 = load i32, ptr %269, align 4, !tbaa !19 %.0349.tr = trunc i64 %.0349 to i32 @@ -562,10 +562,10 @@ sha1_update.exit422: ; preds = %262, %263 %277 = getelementptr inbounds nuw i8, ptr %147, i64 16 call void @llvm.memset.p0.i64(ptr noundef nonnull align 32 dereferenceable(20) %147, i8 0, i64 20, i1 false) %278 = load i32, ptr %10, align 4, !tbaa !14 - %.not477 = icmp eq i64 %.1341, 0 - br i1 %.not477, label %._crit_edge466, label %.lr.ph465 + %.not474 = icmp eq i64 %.1341, 0 + br i1 %.not474, label %._crit_edge463, label %.lr.ph462 -.lr.ph465: ; preds = %268 +.lr.ph462: ; preds = %268 %279 = add i64 %.0349, 7 %280 = getelementptr inbounds nuw i8, ptr %6, i64 524 %281 = getelementptr inbounds nuw i8, ptr %6, i64 440 @@ -574,42 +574,42 @@ sha1_update.exit422: ; preds = %262, %263 %284 = getelementptr inbounds nuw i8, ptr %6, i64 452 br label %285 -285: ; preds = %.lr.ph465, %332 - %.0350463 = phi i64 [ 0, %.lr.ph465 ], [ %333, %332 ] - %.0355462 = phi i32 [ %278, %.lr.ph465 ], [ %.1356, %332 ] - %286 = getelementptr inbounds nuw i8, ptr %.1338, i64 %.0350463 +285: ; preds = %.lr.ph462, %332 + %.0350460 = phi i64 [ 0, %.lr.ph462 ], [ %333, %332 ] + %.0355459 = phi i32 [ %278, %.lr.ph462 ], [ %.1356, %332 ] + %286 = getelementptr inbounds nuw i8, ptr %.1338, i64 %.0350460 %287 = load i8, ptr %286, align 1, !tbaa !8 %288 = zext i8 %287 to i64 - %289 = sub i64 %.0350463, %.0349 + %289 = sub i64 %.0350460, %.0349 %290 = lshr i64 %289, 56 %291 = and i64 %290, %288 %292 = and i64 %290, 128 %293 = xor i64 %292, 128 - %294 = sub i64 %.0349, %.0350463 + %294 = sub i64 %.0349, %.0350460 %295 = lshr i64 %294, 56 %296 = xor i64 %295, -1 %297 = and i64 %293, %296 %298 = or i64 %291, %297 %299 = trunc nuw i64 %298 to i8 - %300 = add i32 %.0355462, 1 - %301 = zext i32 %.0355462 to i64 + %300 = add i32 %.0355459, 1 + %301 = zext i32 %.0355459 to i64 %302 = getelementptr inbounds nuw [64 x i8], ptr %149, i64 0, i64 %301 store i8 %299, ptr %302, align 1, !tbaa !8 - %.not379 = icmp eq i32 %300, 64 - br i1 %.not379, label %303, label %332 + %.not377 = icmp eq i32 %300, 64 + br i1 %.not377, label %303, label %332 303: ; preds = %285 - %304 = sub i64 %279, %.0350463 - %.neg380 = ashr i64 %304, 63 + %304 = sub i64 %279, %.0350460 + %.neg378 = ashr i64 %304, 63 %305 = load i32, ptr %280, align 4, !tbaa !8 - %306 = trunc nsw i64 %.neg380 to i32 + %306 = trunc nsw i64 %.neg378 to i32 %307 = and i32 %273, %306 %308 = or i32 %305, %307 store i32 %308, ptr %280, align 4, !tbaa !8 call void @sha1_block_data_order(ptr noundef nonnull %9, ptr noundef nonnull %149, i64 noundef 1) #7 %309 = add i64 %289, -72 - %.neg380382 = and i64 %309, %304 - %310 = ashr i64 %.neg380382, 63 + %.neg378380 = and i64 %309, %304 + %310 = ashr i64 %.neg378380, 63 %311 = load i32, ptr %9, align 4, !tbaa !22 %312 = load i32, ptr %147, align 32, !tbaa !8 %313 = trunc nsw i64 %310 to i32 @@ -640,30 +640,30 @@ sha1_update.exit422: ; preds = %262, %263 332: ; preds = %285, %303 %.1356 = phi i32 [ 0, %303 ], [ %300, %285 ] - %333 = add nuw i64 %.0350463, 1 + %333 = add nuw i64 %.0350460, 1 %exitcond.not = icmp eq i64 %333, %.1341 - br i1 %exitcond.not, label %._crit_edge466, label %285, !llvm.loop !27 + br i1 %exitcond.not, label %._crit_edge463, label %285, !llvm.loop !27 -._crit_edge466: ; preds = %332, %268 +._crit_edge463: ; preds = %332, %268 %.0355.lcssa = phi i32 [ %278, %268 ], [ %.1356, %332 ] %334 = icmp ult i32 %.0355.lcssa, 64 - br i1 %334, label %._crit_edge472, label %._crit_edge472.thread + br i1 %334, label %._crit_edge469, label %._crit_edge469.thread -._crit_edge472: ; preds = %._crit_edge466 +._crit_edge469: ; preds = %._crit_edge463 %335 = zext nneg i32 %.0355.lcssa to i64 %336 = getelementptr i8, ptr %6, i64 %335 - %scevgep482 = getelementptr i8, ptr %336, i64 464 + %scevgep479 = getelementptr i8, ptr %336, i64 464 %337 = sub nuw nsw i64 64, %335 - call void @llvm.memset.p0.i64(ptr align 1 %scevgep482, i8 0, i64 %337, i1 false), !tbaa !8 + call void @llvm.memset.p0.i64(ptr align 1 %scevgep479, i8 0, i64 %337, i1 false), !tbaa !8 %338 = add i64 %.1341, 64 %339 = sub i64 %338, %335 %340 = icmp samesign ugt i32 %.0355.lcssa, 56 - br i1 %340, label %._crit_edge472.thread, label %376 + br i1 %340, label %._crit_edge469.thread, label %376 -._crit_edge472.thread: ; preds = %._crit_edge466, %._crit_edge472 - %.1351.lcssa485 = phi i64 [ %339, %._crit_edge472 ], [ %.1341, %._crit_edge466 ] +._crit_edge469.thread: ; preds = %._crit_edge463, %._crit_edge469 + %.1351.lcssa482 = phi i64 [ %339, %._crit_edge469 ], [ %.1341, %._crit_edge463 ] %341 = add i64 %.0349, 8 - %342 = sub i64 %341, %.1351.lcssa485 + %342 = sub i64 %341, %.1351.lcssa482 %.neg = ashr i64 %342, 63 %343 = getelementptr inbounds nuw i8, ptr %6, i64 524 %344 = load i32, ptr %343, align 4, !tbaa !8 @@ -672,8 +672,8 @@ sha1_update.exit422: ; preds = %262, %263 %347 = or i32 %344, %346 store i32 %347, ptr %343, align 4, !tbaa !8 call void @sha1_block_data_order(ptr noundef nonnull %9, ptr noundef nonnull %149, i64 noundef 1) #7 - %reass.sub478 = sub i64 %.1351.lcssa485, %.0349 - %348 = add i64 %reass.sub478, -73 + %reass.sub475 = sub i64 %.1351.lcssa482, %.0349 + %348 = add i64 %reass.sub475, -73 %.neg373 = and i64 %342, %348 %349 = ashr i64 %.neg373, 63 %350 = load i32, ptr %9, align 4, !tbaa !22 @@ -707,16 +707,16 @@ sha1_update.exit422: ; preds = %262, %263 %374 = or i32 %373, %372 store i32 %374, ptr %277, align 16, !tbaa !8 call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %149, i8 0, i64 60, i1 false) - %375 = add i64 %.1351.lcssa485, 64 + %375 = add i64 %.1351.lcssa482, 64 br label %376 -376: ; preds = %._crit_edge472.thread, %._crit_edge472 - %.2352 = phi i64 [ %375, %._crit_edge472.thread ], [ %339, %._crit_edge472 ] +376: ; preds = %._crit_edge469.thread, %._crit_edge469 + %.2352 = phi i64 [ %375, %._crit_edge469.thread ], [ %339, %._crit_edge469 ] %377 = getelementptr inbounds nuw i8, ptr %6, i64 524 store i32 %273, ptr %377, align 4, !tbaa !8 call void @sha1_block_data_order(ptr noundef nonnull %9, ptr noundef nonnull %149, i64 noundef 1) #7 - %reass.sub479 = sub i64 %.2352, %.0349 - %378 = add i64 %reass.sub479, -73 + %reass.sub476 = sub i64 %.2352, %.0349 + %378 = add i64 %reass.sub476, -73 %.neg374 = ashr i64 %378, 63 %379 = load i32, ptr %9, align 4, !tbaa !22 %380 = load i32, ptr %147, align 32, !tbaa !8 @@ -760,146 +760,147 @@ sha1_update.exit422: ; preds = %262, %263 %409 = getelementptr inbounds nuw i8, ptr %6, i64 340 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(96) %9, ptr noundef nonnull align 4 dereferenceable(96) %409, i64 96, i1 false), !tbaa.struct !7 %410 = load i32, ptr %10, align 4, !tbaa !15 - %.not.i423 = icmp eq i32 %410, 0 - br i1 %.not.i423, label %.thread452, label %411 + %.not.i421 = icmp eq i32 %410, 0 + br i1 %.not.i421, label %.thread450, label %411 411: ; preds = %376 %412 = zext i32 %410 to i64 %413 = sub nsw i64 64, %412 - %spec.select.i424 = call i64 @llvm.umin.i64(i64 %413, i64 20) - %414 = call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef nonnull %147, i64 noundef %spec.select.i424) #7 - %415 = getelementptr inbounds nuw i8, ptr %147, i64 %spec.select.i424 - %416 = sub nuw nsw i64 20, %spec.select.i424 - %.not40.i430 = icmp ugt i64 %413, 19 - br i1 %.not40.i430, label %sha1_update.exit431, label %.thread452 - -.thread452: ; preds = %376, %411 - %.1.i429455 = phi ptr [ %415, %411 ], [ %147, %376 ] + %spec.select.i422 = call i64 @llvm.umin.i64(i64 %413, i64 20) + %414 = call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef nonnull %147, i64 noundef %spec.select.i422) #7 + %415 = getelementptr inbounds nuw i8, ptr %147, i64 %spec.select.i422 + %416 = sub nuw nsw i64 20, %spec.select.i422 + %.not40.i428 = icmp ugt i64 %413, 19 + br i1 %.not40.i428, label %sha1_update.exit429, label %.thread450 + +.thread450: ; preds = %376, %411 + %.1.i427453 = phi ptr [ %415, %411 ], [ %147, %376 ] %417 = phi i64 [ %416, %411 ], [ 20, %376 ] - %418 = call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef nonnull %.1.i429455, i64 noundef %417) #7 - br label %sha1_update.exit431 + %418 = call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef nonnull %.1.i427453, i64 noundef %417) #7 + br label %sha1_update.exit429 -sha1_update.exit431: ; preds = %411, %.thread452 +sha1_update.exit429: ; preds = %411, %.thread450 %419 = call i32 @SHA1_Final(ptr noundef nonnull %147, ptr noundef nonnull %9) #7 - %420 = getelementptr i8, ptr %.1338, i64 %.1341 - %421 = getelementptr i8, ptr %420, i64 19 - %422 = zext nneg i32 %181 to i64 - %423 = sub nsw i64 0, %422 - %424 = getelementptr inbounds i8, ptr %421, i64 %423 - %425 = getelementptr inbounds i8, ptr %424, i64 -20 - %.neg375 = add nuw nsw i64 %422, 1 - %.neg376 = add i64 %.neg375, %.0349 - %gepdiff = sub i64 %.neg376, %.1341 - %426 = add nuw nsw i32 %181, 20 - %427 = zext nneg i32 %426 to i64 - br label %428 - -428: ; preds = %sha1_update.exit431, %428 - %.3476 = phi i64 [ 0, %sha1_update.exit431 ], [ %451, %428 ] - %.1354475 = phi i64 [ 0, %sha1_update.exit431 ], [ %450, %428 ] - %.2357474 = phi i32 [ 0, %sha1_update.exit431 ], [ %447, %428 ] - %429 = getelementptr inbounds nuw i8, ptr %425, i64 %.3476 - %430 = load i8, ptr %429, align 1, !tbaa !8 - %431 = zext i8 %430 to i32 - %432 = sub i64 %.3476, %gepdiff - %433 = trunc i64 %432 to i32 - %434 = add i32 %433, -20 - %435 = xor i32 %189, %431 - %isneg = icmp slt i32 %434, 0 - %436 = select i1 %isneg, i32 0, i32 %435 - %437 = xor i64 %.3476, -1 - %438 = add i64 %gepdiff, %437 - %439 = trunc i64 %438 to i32 - %440 = and i32 %434, %439 - %441 = getelementptr inbounds nuw [52 x i8], ptr %147, i64 0, i64 %.1354475 - %442 = load i8, ptr %441, align 1, !tbaa !8 - %443 = xor i8 %442, %430 - %444 = zext i8 %443 to i32 - %isneg378 = icmp slt i32 %440, 0 - %445 = select i1 %isneg378, i32 %444, i32 0 - %446 = or i32 %436, %.2357474 - %447 = or i32 %446, %445 - %448 = lshr i32 %440, 31 - %449 = zext nneg i32 %448 to i64 - %450 = add i64 %.1354475, %449 - %451 = add nuw nsw i64 %.3476, 1 - %exitcond483.not = icmp eq i64 %451, %427 - br i1 %exitcond483.not, label %sha1_update.exit440, label %428, !llvm.loop !34 - -452: ; preds = %143 - %453 = getelementptr inbounds nuw i8, ptr %0, i64 40 - call void @aesni_cbc_encrypt(ptr noundef %2, ptr noundef %1, i64 noundef %3, ptr noundef nonnull %6, ptr noundef nonnull %453, i32 noundef 0) #7 - %454 = load i32, ptr %10, align 4, !tbaa !15 - %.not.i432 = icmp eq i32 %454, 0 - br i1 %.not.i432, label %461, label %455 - -455: ; preds = %452 - %456 = zext i32 %454 to i64 - %457 = sub nsw i64 64, %456 - %spec.select.i433 = call i64 @llvm.umin.i64(i64 %3, i64 %457) - %458 = call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef %1, i64 noundef %spec.select.i433) #7 - %459 = getelementptr inbounds nuw i8, ptr %1, i64 %spec.select.i433 - %460 = sub i64 %3, %spec.select.i433 - br label %461 - -461: ; preds = %455, %452 - %.033.i434 = phi i64 [ %460, %455 ], [ %3, %452 ] - %.032.i435 = phi ptr [ %459, %455 ], [ %1, %452 ] - %462 = and i64 %.033.i434, 63 - %463 = and i64 %.033.i434, -64 - %.not39.i436 = icmp eq i64 %463, 0 - br i1 %.not39.i436, label %479, label %464 - -464: ; preds = %461 - %465 = lshr i64 %.033.i434, 6 - call void @sha1_block_data_order(ptr noundef nonnull %9, ptr noundef %.032.i435, i64 noundef %465) #7 - %466 = getelementptr inbounds nuw i8, ptr %.032.i435, i64 %463 - %467 = lshr i64 %.033.i434, 29 - %468 = getelementptr inbounds nuw i8, ptr %6, i64 460 - %469 = load i32, ptr %468, align 4, !tbaa !16 - %470 = trunc i64 %467 to i32 - %471 = add i32 %469, %470 - store i32 %471, ptr %468, align 4, !tbaa !16 - %472 = getelementptr inbounds nuw i8, ptr %6, i64 456 - %473 = load i32, ptr %472, align 4, !tbaa !17 - %.tr.i437 = trunc i64 %463 to i32 - %474 = shl i32 %.tr.i437, 3 + %420 = getelementptr inbounds nuw i8, ptr %.1338, i64 %.0349 + %421 = getelementptr i8, ptr %.1338, i64 %.1341 + %422 = getelementptr i8, ptr %421, i64 19 + %423 = zext nneg i32 %181 to i64 + %424 = sub nsw i64 0, %423 + %425 = getelementptr inbounds i8, ptr %422, i64 %424 + %426 = getelementptr inbounds i8, ptr %425, i64 -20 + %427 = ptrtoint ptr %420 to i64 + %428 = ptrtoint ptr %426 to i64 + %429 = sub i64 %427, %428 + %430 = add nuw nsw i32 %181, 20 + %431 = zext nneg i32 %430 to i64 + br label %432 + +432: ; preds = %sha1_update.exit429, %432 + %.3473 = phi i64 [ 0, %sha1_update.exit429 ], [ %455, %432 ] + %.1354472 = phi i64 [ 0, %sha1_update.exit429 ], [ %454, %432 ] + %.2357471 = phi i32 [ 0, %sha1_update.exit429 ], [ %451, %432 ] + %433 = getelementptr inbounds nuw i8, ptr %426, i64 %.3473 + %434 = load i8, ptr %433, align 1, !tbaa !8 + %435 = zext i8 %434 to i32 + %436 = sub i64 %.3473, %429 + %437 = trunc i64 %436 to i32 + %438 = add i32 %437, -20 + %439 = xor i32 %189, %435 + %isneg = icmp slt i32 %438, 0 + %440 = select i1 %isneg, i32 0, i32 %439 + %441 = xor i64 %.3473, -1 + %442 = add i64 %429, %441 + %443 = trunc i64 %442 to i32 + %444 = and i32 %438, %443 + %445 = getelementptr inbounds nuw [52 x i8], ptr %147, i64 0, i64 %.1354472 + %446 = load i8, ptr %445, align 1, !tbaa !8 + %447 = xor i8 %446, %434 + %448 = zext i8 %447 to i32 + %isneg376 = icmp slt i32 %444, 0 + %449 = select i1 %isneg376, i32 %448, i32 0 + %450 = or i32 %440, %.2357471 + %451 = or i32 %450, %449 + %452 = lshr i32 %444, 31 + %453 = zext nneg i32 %452 to i64 + %454 = add i64 %.1354472, %453 + %455 = add nuw nsw i64 %.3473, 1 + %exitcond480.not = icmp eq i64 %455, %431 + br i1 %exitcond480.not, label %sha1_update.exit438, label %432, !llvm.loop !34 + +456: ; preds = %143 + %457 = getelementptr inbounds nuw i8, ptr %0, i64 40 + call void @aesni_cbc_encrypt(ptr noundef %2, ptr noundef %1, i64 noundef %3, ptr noundef nonnull %6, ptr noundef nonnull %457, i32 noundef 0) #7 + %458 = load i32, ptr %10, align 4, !tbaa !15 + %.not.i430 = icmp eq i32 %458, 0 + br i1 %.not.i430, label %465, label %459 + +459: ; preds = %456 + %460 = zext i32 %458 to i64 + %461 = sub nsw i64 64, %460 + %spec.select.i431 = call i64 @llvm.umin.i64(i64 %3, i64 %461) + %462 = call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef %1, i64 noundef %spec.select.i431) #7 + %463 = getelementptr inbounds nuw i8, ptr %1, i64 %spec.select.i431 + %464 = sub i64 %3, %spec.select.i431 + br label %465 + +465: ; preds = %459, %456 + %.033.i432 = phi i64 [ %464, %459 ], [ %3, %456 ] + %.032.i433 = phi ptr [ %463, %459 ], [ %1, %456 ] + %466 = and i64 %.033.i432, 63 + %467 = and i64 %.033.i432, -64 + %.not39.i434 = icmp eq i64 %467, 0 + br i1 %.not39.i434, label %483, label %468 + +468: ; preds = %465 + %469 = lshr i64 %.033.i432, 6 + call void @sha1_block_data_order(ptr noundef nonnull %9, ptr noundef %.032.i433, i64 noundef %469) #7 + %470 = getelementptr inbounds nuw i8, ptr %.032.i433, i64 %467 + %471 = lshr i64 %.033.i432, 29 + %472 = getelementptr inbounds nuw i8, ptr %6, i64 460 + %473 = load i32, ptr %472, align 4, !tbaa !16 + %474 = trunc i64 %471 to i32 %475 = add i32 %473, %474 - store i32 %475, ptr %472, align 4, !tbaa !17 - %476 = icmp ult i32 %475, %474 - br i1 %476, label %477, label %479 - -477: ; preds = %464 - %478 = add i32 %471, 1 - store i32 %478, ptr %468, align 4, !tbaa !16 - br label %479 + store i32 %475, ptr %472, align 4, !tbaa !16 + %476 = getelementptr inbounds nuw i8, ptr %6, i64 456 + %477 = load i32, ptr %476, align 4, !tbaa !17 + %.tr.i435 = trunc i64 %467 to i32 + %478 = shl i32 %.tr.i435, 3 + %479 = add i32 %477, %478 + store i32 %479, ptr %476, align 4, !tbaa !17 + %480 = icmp ult i32 %479, %478 + br i1 %480, label %481, label %483 + +481: ; preds = %468 + %482 = add i32 %475, 1 + store i32 %482, ptr %472, align 4, !tbaa !16 + br label %483 -479: ; preds = %477, %464, %461 - %.1.i438 = phi ptr [ %466, %477 ], [ %466, %464 ], [ %.032.i435, %461 ] - %.not40.i439 = icmp eq i64 %462, 0 - br i1 %.not40.i439, label %sha1_update.exit440.thread, label %480 +483: ; preds = %481, %468, %465 + %.1.i436 = phi ptr [ %470, %481 ], [ %470, %468 ], [ %.032.i433, %465 ] + %.not40.i437 = icmp eq i64 %466, 0 + br i1 %.not40.i437, label %sha1_update.exit438.thread, label %484 -480: ; preds = %479 - %481 = call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef %.1.i438, i64 noundef %462) #7 - br label %sha1_update.exit440.thread +484: ; preds = %483 + %485 = call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef %.1.i436, i64 noundef %466) #7 + br label %sha1_update.exit438.thread -sha1_update.exit440.thread: ; preds = %480, %479 +sha1_update.exit438.thread: ; preds = %484, %483 call void @llvm.lifetime.end.p0(i64 52, ptr nonnull %5) #7 - br label %483 + br label %487 -sha1_update.exit440.thread458: ; preds = %162, %169 +sha1_update.exit438.thread456: ; preds = %162, %169 call void @llvm.lifetime.end.p0(i64 52, ptr nonnull %5) #7 - br label %483 + br label %487 -sha1_update.exit440: ; preds = %428 - %.inv = icmp slt i32 %447, 1 +sha1_update.exit438: ; preds = %432 + %.inv = icmp slt i32 %451, 1 %narrow = select i1 %.inv, i1 %182, i1 false - %482 = zext i1 %narrow to i32 + %486 = zext i1 %narrow to i32 call void @llvm.lifetime.end.p0(i64 52, ptr nonnull %5) #7 - br label %483 + br label %487 -483: ; preds = %138, %._crit_edge, %sha1_update.exit440.thread, %sha1_update.exit440, %sha1_update.exit440.thread458, %19, %4 - %.0 = phi i32 [ %482, %sha1_update.exit440 ], [ 0, %4 ], [ 0, %19 ], [ 0, %sha1_update.exit440.thread458 ], [ 1, %sha1_update.exit440.thread ], [ 1, %._crit_edge ], [ 1, %138 ] +487: ; preds = %138, %._crit_edge, %sha1_update.exit438.thread, %sha1_update.exit438, %sha1_update.exit438.thread456, %19, %4 + %.0 = phi i32 [ %486, %sha1_update.exit438 ], [ 0, %4 ], [ 0, %19 ], [ 0, %sha1_update.exit438.thread456 ], [ 1, %sha1_update.exit438.thread ], [ 1, %._crit_edge ], [ 1, %138 ] ret i32 %.0 } diff --git a/bench/openusd/optimized/zipFile.ll b/bench/openusd/optimized/zipFile.ll index 896cc55a47f..7612193f4ef 100644 --- a/bench/openusd/optimized/zipFile.ll +++ b/bench/openusd/optimized/zipFile.ll @@ -1218,7 +1218,7 @@ define noundef nonnull align 8 dereferenceable(8) ptr @_ZN32pxrInternal_v0_24__p %2 = alloca %"class.pxrInternal_v0_24__pxrReserved__::UsdZipFile::Iterator", align 8 %3 = load ptr, ptr %0, align 8 %.not = icmp eq ptr %3, null - br i1 %.not, label %71, label %4 + br i1 %.not, label %70, label %4 4: ; preds = %1 %5 = load ptr, ptr %3, align 8 @@ -1234,12 +1234,12 @@ define noundef nonnull align 8 dereferenceable(8) ptr @_ZN32pxrInternal_v0_24__p %.neg.i.i = add i64 %9, %14 %15 = sub i64 %.neg.i.i, %13 %16 = icmp ult i64 %15, 30 - br i1 %16, label %68, label %17 + br i1 %16, label %67, label %17 17: ; preds = %4 %18 = load i32, ptr %12, align 1, !noalias !15 %19 = icmp eq i32 %18, 67324752 - br i1 %19, label %20, label %68 + br i1 %19, label %20, label %67 20: ; preds = %17 %21 = getelementptr inbounds nuw i8, ptr %12, i64 4 @@ -1267,7 +1267,7 @@ define noundef nonnull align 8 dereferenceable(8) ptr @_ZN32pxrInternal_v0_24__p %43 = sub i64 %.neg.i.i, %42 %44 = zext i16 %38 to i64 %45 = icmp ult i64 %43, %44 - br i1 %45, label %68, label %46 + br i1 %45, label %67, label %46 46: ; preds = %20 %47 = getelementptr inbounds nuw i8, ptr %41, i64 %44 @@ -1275,7 +1275,7 @@ define noundef nonnull align 8 dereferenceable(8) ptr @_ZN32pxrInternal_v0_24__p %49 = sub i64 %.neg.i.i, %48 %50 = zext i16 %40 to i64 %51 = icmp ult i64 %49, %50 - br i1 %51, label %68, label %52 + br i1 %51, label %67, label %52 52: ; preds = %46 %53 = getelementptr inbounds nuw i8, ptr %47, i64 %50 @@ -1283,69 +1283,68 @@ define noundef nonnull align 8 dereferenceable(8) ptr @_ZN32pxrInternal_v0_24__p %55 = sub i64 %.neg.i.i, %54 %56 = zext i32 %34 to i64 %57 = icmp ult i64 %55, %56 - br i1 %57, label %68, label %58 + br i1 %57, label %67, label %58 58: ; preds = %52 - %59 = getelementptr inbounds nuw i8, ptr %3, i64 8 - store i64 %11, ptr %59, align 8 - %60 = load ptr, ptr %0, align 8 - %61 = getelementptr inbounds nuw i8, ptr %60, i64 16 - store i32 67324752, ptr %61, align 8 - %.sroa.8.0..sroa_idx = getelementptr inbounds nuw i8, ptr %60, i64 20 + %59 = getelementptr inbounds nuw i8, ptr %53, i64 %56 + %60 = getelementptr inbounds nuw i8, ptr %3, i64 8 + store i64 %11, ptr %60, align 8 + %61 = load ptr, ptr %0, align 8 + %62 = getelementptr inbounds nuw i8, ptr %61, i64 16 + store i32 67324752, ptr %62, align 8 + %.sroa.8.0..sroa_idx = getelementptr inbounds nuw i8, ptr %61, i64 20 store i16 %22, ptr %.sroa.8.0..sroa_idx, align 4 - %.sroa.9.0..sroa_idx = getelementptr inbounds nuw i8, ptr %60, i64 22 + %.sroa.9.0..sroa_idx = getelementptr inbounds nuw i8, ptr %61, i64 22 store i16 %24, ptr %.sroa.9.0..sroa_idx, align 2 - %.sroa.10.0..sroa_idx = getelementptr inbounds nuw i8, ptr %60, i64 24 + %.sroa.10.0..sroa_idx = getelementptr inbounds nuw i8, ptr %61, i64 24 store i16 %26, ptr %.sroa.10.0..sroa_idx, align 8 - %.sroa.11.0..sroa_idx = getelementptr inbounds nuw i8, ptr %60, i64 26 + %.sroa.11.0..sroa_idx = getelementptr inbounds nuw i8, ptr %61, i64 26 store i16 %28, ptr %.sroa.11.0..sroa_idx, align 2 - %.sroa.12.0..sroa_idx = getelementptr inbounds nuw i8, ptr %60, i64 28 + %.sroa.12.0..sroa_idx = getelementptr inbounds nuw i8, ptr %61, i64 28 store i16 %30, ptr %.sroa.12.0..sroa_idx, align 4 - %.sroa.13.0..sroa_idx = getelementptr inbounds nuw i8, ptr %60, i64 30 + %.sroa.13.0..sroa_idx = getelementptr inbounds nuw i8, ptr %61, i64 30 store i16 0, ptr %.sroa.13.0..sroa_idx, align 2 - %.sroa.133.0..sroa_idx = getelementptr inbounds nuw i8, ptr %60, i64 32 + %.sroa.133.0..sroa_idx = getelementptr inbounds nuw i8, ptr %61, i64 32 store i32 %32, ptr %.sroa.133.0..sroa_idx, align 8 - %.sroa.14.0..sroa_idx = getelementptr inbounds nuw i8, ptr %60, i64 36 + %.sroa.14.0..sroa_idx = getelementptr inbounds nuw i8, ptr %61, i64 36 store i32 %34, ptr %.sroa.14.0..sroa_idx, align 4 - %.sroa.15.0..sroa_idx = getelementptr inbounds nuw i8, ptr %60, i64 40 + %.sroa.15.0..sroa_idx = getelementptr inbounds nuw i8, ptr %61, i64 40 store i32 %36, ptr %.sroa.15.0..sroa_idx, align 8 - %.sroa.16.0..sroa_idx = getelementptr inbounds nuw i8, ptr %60, i64 44 + %.sroa.16.0..sroa_idx = getelementptr inbounds nuw i8, ptr %61, i64 44 store i16 %38, ptr %.sroa.16.0..sroa_idx, align 4 - %.sroa.17.0..sroa_idx = getelementptr inbounds nuw i8, ptr %60, i64 46 + %.sroa.17.0..sroa_idx = getelementptr inbounds nuw i8, ptr %61, i64 46 store i16 %40, ptr %.sroa.17.0..sroa_idx, align 2 - %.sroa.18.0..sroa_idx = getelementptr inbounds nuw i8, ptr %60, i64 48 + %.sroa.18.0..sroa_idx = getelementptr inbounds nuw i8, ptr %61, i64 48 store ptr %41, ptr %.sroa.18.0..sroa_idx, align 8 - %.sroa.19.0..sroa_idx = getelementptr inbounds nuw i8, ptr %60, i64 56 + %.sroa.19.0..sroa_idx = getelementptr inbounds nuw i8, ptr %61, i64 56 store ptr %47, ptr %.sroa.19.0..sroa_idx, align 8 - %.sroa.20.0..sroa_idx = getelementptr inbounds nuw i8, ptr %60, i64 64 + %.sroa.20.0..sroa_idx = getelementptr inbounds nuw i8, ptr %61, i64 64 store ptr %53, ptr %.sroa.20.0..sroa_idx, align 8 - %62 = add nsw i64 %11, 30 - %63 = add i64 %62, %56 - %64 = add i64 %63, %44 - %65 = add i64 %64, %50 - %66 = load ptr, ptr %0, align 8 - %67 = getelementptr inbounds nuw i8, ptr %66, i64 72 - store i64 %65, ptr %67, align 8 - br label %71 - -68: ; preds = %17, %4, %20, %46, %52 + %63 = ptrtoint ptr %59 to i64 + %64 = sub i64 %63, %14 + %65 = load ptr, ptr %0, align 8 + %66 = getelementptr inbounds nuw i8, ptr %65, i64 72 + store i64 %64, ptr %66, align 8 + br label %70 + +67: ; preds = %17, %4, %20, %46, %52 call void @_ZN32pxrInternal_v0_24__pxrReserved__10UsdZipFile8IteratorC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %2) - %69 = load ptr, ptr %2, align 8 + %68 = load ptr, ptr %2, align 8 store ptr null, ptr %2, align 8 - %70 = load ptr, ptr %0, align 8 - store ptr %69, ptr %0, align 8 - %.not.i.i.i.i.i = icmp eq ptr %70, null + %69 = load ptr, ptr %0, align 8 + store ptr %68, ptr %0, align 8 + %.not.i.i.i.i.i = icmp eq ptr %69, null br i1 %.not.i.i.i.i.i, label %_ZN32pxrInternal_v0_24__pxrReserved__10UsdZipFile8IteratoraSEOS1_.exit, label %_ZNKSt14default_deleteIN32pxrInternal_v0_24__pxrReserved__10UsdZipFile8Iterator13_IteratorDataEEclEPS3_.exit.i.i.i.i.i -_ZNKSt14default_deleteIN32pxrInternal_v0_24__pxrReserved__10UsdZipFile8Iterator13_IteratorDataEEclEPS3_.exit.i.i.i.i.i: ; preds = %68 - call void @_ZdlPvm(ptr noundef nonnull %70, i64 noundef 80) #24 +_ZNKSt14default_deleteIN32pxrInternal_v0_24__pxrReserved__10UsdZipFile8Iterator13_IteratorDataEEclEPS3_.exit.i.i.i.i.i: ; preds = %67 + call void @_ZdlPvm(ptr noundef nonnull %69, i64 noundef 80) #24 br label %_ZN32pxrInternal_v0_24__pxrReserved__10UsdZipFile8IteratoraSEOS1_.exit -_ZN32pxrInternal_v0_24__pxrReserved__10UsdZipFile8IteratoraSEOS1_.exit: ; preds = %68, %_ZNKSt14default_deleteIN32pxrInternal_v0_24__pxrReserved__10UsdZipFile8Iterator13_IteratorDataEEclEPS3_.exit.i.i.i.i.i +_ZN32pxrInternal_v0_24__pxrReserved__10UsdZipFile8IteratoraSEOS1_.exit: ; preds = %67, %_ZNKSt14default_deleteIN32pxrInternal_v0_24__pxrReserved__10UsdZipFile8Iterator13_IteratorDataEEclEPS3_.exit.i.i.i.i.i call void @_ZN32pxrInternal_v0_24__pxrReserved__10UsdZipFile8IteratorD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %2) #22 - br label %71 + br label %70 -71: ; preds = %58, %_ZN32pxrInternal_v0_24__pxrReserved__10UsdZipFile8IteratoraSEOS1_.exit, %1 +70: ; preds = %58, %_ZN32pxrInternal_v0_24__pxrReserved__10UsdZipFile8IteratoraSEOS1_.exit, %1 ret ptr %0 } @@ -1780,13 +1779,14 @@ define void @_ZN32pxrInternal_v0_24__pxrReserved__10UsdZipFile8IteratorC2EPKNS0_ to label %_ZNSt10unique_ptrIN32pxrInternal_v0_24__pxrReserved__10UsdZipFile8Iterator13_IteratorDataESt14default_deleteIS3_EE5resetEPS3_.exit unwind label %_ZNSt10unique_ptrIN32pxrInternal_v0_24__pxrReserved__10UsdZipFile8Iterator13_IteratorDataESt14default_deleteIS3_EED2Ev.exit _ZNSt10unique_ptrIN32pxrInternal_v0_24__pxrReserved__10UsdZipFile8Iterator13_IteratorDataESt14default_deleteIS3_EE5resetEPS3_.exit: ; preds = %54 - %56 = getelementptr inbounds nuw i8, ptr %55, i64 32 + %56 = getelementptr inbounds nuw i8, ptr %49, i64 %52 + %57 = getelementptr inbounds nuw i8, ptr %55, i64 32 store ptr %55, ptr %0, align 8 store ptr %1, ptr %55, align 8 - %57 = getelementptr inbounds nuw i8, ptr %55, i64 8 - store i64 %2, ptr %57, align 8 - %58 = getelementptr inbounds nuw i8, ptr %55, i64 16 - store i32 67324752, ptr %58, align 8 + %58 = getelementptr inbounds nuw i8, ptr %55, i64 8 + store i64 %2, ptr %58, align 8 + %59 = getelementptr inbounds nuw i8, ptr %55, i64 16 + store i32 67324752, ptr %59, align 8 %.sroa.8.0..sroa_idx = getelementptr inbounds nuw i8, ptr %55, i64 20 store i16 %18, ptr %.sroa.8.0..sroa_idx, align 4 %.sroa.9.0..sroa_idx = getelementptr inbounds nuw i8, ptr %55, i64 22 @@ -1799,7 +1799,7 @@ _ZNSt10unique_ptrIN32pxrInternal_v0_24__pxrReserved__10UsdZipFile8Iterator13_Ite store i16 %26, ptr %.sroa.12.0..sroa_idx, align 4 %.sroa.13.0..sroa_idx = getelementptr inbounds nuw i8, ptr %55, i64 30 store i16 0, ptr %.sroa.13.0..sroa_idx, align 2 - store i32 %28, ptr %56, align 8 + store i32 %28, ptr %57, align 8 %.sroa.14.0..sroa_idx = getelementptr inbounds nuw i8, ptr %55, i64 36 store i32 %30, ptr %.sroa.14.0..sroa_idx, align 4 %.sroa.15.0..sroa_idx = getelementptr inbounds nuw i8, ptr %55, i64 40 @@ -1814,19 +1814,17 @@ _ZNSt10unique_ptrIN32pxrInternal_v0_24__pxrReserved__10UsdZipFile8Iterator13_Ite store ptr %43, ptr %.sroa.19.0..sroa_idx, align 8 %.sroa.20.0..sroa_idx = getelementptr inbounds nuw i8, ptr %55, i64 64 store ptr %49, ptr %.sroa.20.0..sroa_idx, align 8 - %59 = add nsw i64 %2, 30 - %60 = add i64 %59, %52 - %61 = add i64 %60, %40 - %62 = add i64 %61, %46 - %63 = getelementptr inbounds nuw i8, ptr %55, i64 72 - store i64 %62, ptr %63, align 8 + %60 = ptrtoint ptr %56 to i64 + %61 = sub i64 %60, %10 + %62 = getelementptr inbounds nuw i8, ptr %55, i64 72 + store i64 %61, ptr %62, align 8 br label %_ZN32pxrInternal_v0_24__pxrReserved__12_GLOBAL__N_120_ReadLocalFileHeaderERNS0_12_InputStreamE.exit.thread _ZNSt10unique_ptrIN32pxrInternal_v0_24__pxrReserved__10UsdZipFile8Iterator13_IteratorDataESt14default_deleteIS3_EED2Ev.exit: ; preds = %54 - %64 = landingpad { ptr, i32 } + %63 = landingpad { ptr, i32 } cleanup store ptr null, ptr %0, align 8 - resume { ptr, i32 } %64 + resume { ptr, i32 } %63 _ZN32pxrInternal_v0_24__pxrReserved__12_GLOBAL__N_120_ReadLocalFileHeaderERNS0_12_InputStreamE.exit.thread: ; preds = %13, %48, %42, %16, %3, %_ZNSt10unique_ptrIN32pxrInternal_v0_24__pxrReserved__10UsdZipFile8Iterator13_IteratorDataESt14default_deleteIS3_EE5resetEPS3_.exit ret void diff --git a/bench/redis/optimized/listpack.ll b/bench/redis/optimized/listpack.ll index 6558337354b..17e47e30a6c 100644 --- a/bench/redis/optimized/listpack.ll +++ b/bench/redis/optimized/listpack.ll @@ -640,10 +640,10 @@ define dso_local ptr @lpLast(ptr noundef %0) local_unnamed_addr #3 { %19 = getelementptr inbounds nuw i8, ptr %18, i64 %12 %20 = getelementptr inbounds nuw i8, ptr %19, i64 %16 %21 = getelementptr inbounds i8, ptr %20, i64 -1 - %22 = or disjoint i64 %8, %4 - %23 = or disjoint i64 %22, %12 - %24 = or disjoint i64 %23, %16 - %25 = icmp eq i64 %24, 7 + %22 = ptrtoint ptr %21 to i64 + %23 = ptrtoint ptr %0 to i64 + %24 = sub i64 %22, %23 + %25 = icmp eq i64 %24, 6 br i1 %25, label %lpPrev.exit, label %.preheader .preheader: ; preds = %1, %31 diff --git a/bench/zstd/optimized/zstd_v07.ll b/bench/zstd/optimized/zstd_v07.ll index 45cf7657007..a7b31ed75f7 100644 --- a/bench/zstd/optimized/zstd_v07.ll +++ b/bench/zstd/optimized/zstd_v07.ll @@ -7484,76 +7484,76 @@ define range(i64 -30, 1) i64 @ZSTDv07_decompressBegin_usingDict(ptr noundef capt 74: ; preds = %71 %75 = load i32, ptr %11, align 4, !tbaa !3 %76 = call i64 @FSEv07_buildDTable(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %75, i32 noundef %72) - %77 = icmp ugt i64 %76, -120 + %77 = icmp ult i64 %76, -119 %78 = getelementptr inbounds nuw i8, ptr %66, i64 %69 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #26 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #26 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %10) #26 - %79 = getelementptr inbounds nuw i8, ptr %78, i64 12 - %80 = icmp ugt ptr %79, %38 - %or.cond116.i.i = select i1 %77, i1 true, i1 %80 - br i1 %or.cond116.i.i, label %ZSTDv07_decompress_insertDictionary.exit.thread, label %81 + br i1 %77, label %79, label %ZSTDv07_decompress_insertDictionary.exit.thread -81: ; preds = %74 +79: ; preds = %74 + %80 = getelementptr inbounds nuw i8, ptr %78, i64 12 + %81 = icmp ugt ptr %80, %38 + br i1 %81, label %ZSTDv07_decompress_insertDictionary.exit.thread, label %82 + +82: ; preds = %79 %.371.val.i.i = load i32, ptr %78, align 1 store i32 %.371.val.i.i, ptr %20, align 8, !tbaa !3 - %82 = icmp ne i32 %.371.val.i.i, 0 - %83 = zext i32 %.371.val.i.i to i64 - %.not92.i.i = icmp ugt i64 %37, %83 - %or.cond.i.i = and i1 %82, %.not92.i.i - br i1 %or.cond.i.i, label %84, label %ZSTDv07_decompress_insertDictionary.exit.thread - -84: ; preds = %81 - %85 = getelementptr inbounds nuw i8, ptr %78, i64 4 - %.val102.i.i = load i32, ptr %85, align 1 - %86 = getelementptr inbounds nuw i8, ptr %0, i64 21564 - store i32 %.val102.i.i, ptr %86, align 4, !tbaa !3 - %87 = icmp ne i32 %.val102.i.i, 0 - %88 = zext i32 %.val102.i.i to i64 - %.not93.i.i = icmp ugt i64 %37, %88 - %or.cond95.i.i = and i1 %87, %.not93.i.i - br i1 %or.cond95.i.i, label %89, label %ZSTDv07_decompress_insertDictionary.exit.thread - -89: ; preds = %84 - %90 = getelementptr inbounds nuw i8, ptr %78, i64 8 - %.val.i.i = load i32, ptr %90, align 1 - %91 = getelementptr inbounds nuw i8, ptr %0, i64 21568 - store i32 %.val.i.i, ptr %91, align 8, !tbaa !3 - %92 = icmp ne i32 %.val.i.i, 0 - %93 = zext i32 %.val.i.i to i64 - %.not94.i.i = icmp ugt i64 %37, %93 - %or.cond96.i.i = and i1 %92, %.not94.i.i + %83 = icmp ne i32 %.371.val.i.i, 0 + %84 = zext i32 %.371.val.i.i to i64 + %.not92.i.i = icmp ugt i64 %37, %84 + %or.cond.i.i = and i1 %83, %.not92.i.i + br i1 %or.cond.i.i, label %85, label %ZSTDv07_decompress_insertDictionary.exit.thread + +85: ; preds = %82 + %86 = getelementptr inbounds nuw i8, ptr %78, i64 4 + %.val102.i.i = load i32, ptr %86, align 1 + %87 = getelementptr inbounds nuw i8, ptr %0, i64 21564 + store i32 %.val102.i.i, ptr %87, align 4, !tbaa !3 + %88 = icmp ne i32 %.val102.i.i, 0 + %89 = zext i32 %.val102.i.i to i64 + %.not93.i.i = icmp ugt i64 %37, %89 + %or.cond95.i.i = and i1 %88, %.not93.i.i + br i1 %or.cond95.i.i, label %90, label %ZSTDv07_decompress_insertDictionary.exit.thread + +90: ; preds = %85 + %91 = getelementptr inbounds nuw i8, ptr %78, i64 8 + %.val.i.i = load i32, ptr %91, align 1 + %92 = getelementptr inbounds nuw i8, ptr %0, i64 21568 + store i32 %.val.i.i, ptr %92, align 8, !tbaa !3 + %93 = icmp ne i32 %.val.i.i, 0 + %94 = zext i32 %.val.i.i to i64 + %.not94.i.i = icmp ugt i64 %37, %94 + %or.cond96.i.i = and i1 %93, %.not94.i.i br i1 %or.cond96.i.i, label %ZSTDv07_loadEntropy.exit.i, label %ZSTDv07_decompress_insertDictionary.exit.thread -ZSTDv07_loadEntropy.exit.i: ; preds = %89 +ZSTDv07_loadEntropy.exit.i: ; preds = %90 store i32 1, ptr %17, align 4, !tbaa !69 store i32 1, ptr %18, align 8, !tbaa !70 - %94 = add nuw nsw i64 %39, 12 - %95 = add nuw nsw i64 %94, %43 - %96 = add nuw nsw i64 %95, %56 - %97 = add nuw nsw i64 %96, %69 + %95 = ptrtoint ptr %80 to i64 + %96 = ptrtoint ptr %36 to i64 + %97 = sub i64 %95, %96 %98 = icmp ult i64 %97, -119 br i1 %98, label %99, label %ZSTDv07_decompress_insertDictionary.exit.thread 99: ; preds = %ZSTDv07_loadEntropy.exit.i - %100 = getelementptr inbounds nuw i8, ptr %36, i64 %97 - %101 = load ptr, ptr %15, align 8, !tbaa !81 - %102 = getelementptr inbounds nuw i8, ptr %0, i64 21544 - store ptr %101, ptr %102, align 8, !tbaa !82 - %103 = getelementptr inbounds nuw i8, ptr %0, i64 21528 - %104 = load ptr, ptr %103, align 8, !tbaa !83 - %105 = ptrtoint ptr %101 to i64 - %106 = ptrtoint ptr %104 to i64 - %.neg.i36.i = sub i64 %106, %105 - %107 = getelementptr inbounds i8, ptr %100, i64 %.neg.i36.i - %108 = getelementptr inbounds nuw i8, ptr %0, i64 21536 - store ptr %107, ptr %108, align 8, !tbaa !84 - store ptr %100, ptr %103, align 8, !tbaa !83 + %100 = load ptr, ptr %15, align 8, !tbaa !81 + %101 = getelementptr inbounds nuw i8, ptr %0, i64 21544 + store ptr %100, ptr %101, align 8, !tbaa !82 + %102 = getelementptr inbounds nuw i8, ptr %0, i64 21528 + %103 = load ptr, ptr %102, align 8, !tbaa !83 + %104 = ptrtoint ptr %100 to i64 + %105 = ptrtoint ptr %103 to i64 + %.neg.i36.i = sub i64 %105, %104 + %106 = getelementptr inbounds i8, ptr %80, i64 %.neg.i36.i + %107 = getelementptr inbounds nuw i8, ptr %0, i64 21536 + store ptr %106, ptr %107, align 8, !tbaa !84 + store ptr %80, ptr %102, align 8, !tbaa !83 store ptr %38, ptr %15, align 8, !tbaa !81 br label %ZSTDv07_decompress_insertDictionary.exit.thread -ZSTDv07_decompress_insertDictionary.exit.thread: ; preds = %99, %30, %25, %.thread110.i.i, %.thread106.i.i, %.thread.i.i, %89, %84, %81, %34, %48, %61, %74, %ZSTDv07_loadEntropy.exit.i, %3 - %.1 = phi i64 [ 0, %3 ], [ -30, %ZSTDv07_loadEntropy.exit.i ], [ -30, %74 ], [ -30, %61 ], [ -30, %48 ], [ -30, %34 ], [ -30, %81 ], [ -30, %84 ], [ -30, %89 ], [ -30, %.thread.i.i ], [ -30, %.thread106.i.i ], [ -30, %.thread110.i.i ], [ 0, %25 ], [ 0, %30 ], [ 0, %99 ] +ZSTDv07_decompress_insertDictionary.exit.thread: ; preds = %99, %30, %25, %.thread110.i.i, %.thread106.i.i, %.thread.i.i, %90, %85, %82, %79, %34, %48, %61, %74, %ZSTDv07_loadEntropy.exit.i, %3 + %.1 = phi i64 [ 0, %3 ], [ -30, %ZSTDv07_loadEntropy.exit.i ], [ -30, %74 ], [ -30, %61 ], [ -30, %48 ], [ -30, %34 ], [ -30, %79 ], [ -30, %82 ], [ -30, %85 ], [ -30, %90 ], [ -30, %.thread.i.i ], [ -30, %.thread106.i.i ], [ -30, %.thread110.i.i ], [ 0, %25 ], [ 0, %30 ], [ 0, %99 ] ret i64 %.1 } From a3198d1d0f09e0678276c3137ba055cc4b108818 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 4 Jul 2025 14:45:26 +0000 Subject: [PATCH 3/3] pre-commit: Remap --- bench/clamav/optimized/spin.ll | 446 ++++---- bench/clamav/optimized/upx.ll | 232 ++--- bench/cmake/optimized/huf_compress.ll | 118 +-- bench/cmake/optimized/zstd_decompress.ll | 166 +-- bench/darktable/optimized/export.ll | 302 +++--- bench/darktable/optimized/print_settings.ll | 10 +- bench/duckdb/optimized/huf_compress.ll | 86 +- bench/ffmpeg/optimized/flac_picture.ll | 270 ++--- bench/freetype/optimized/type1.ll | 138 +-- bench/git/optimized/apply.ll | 60 +- bench/git/optimized/fast-import.ll | 50 +- bench/git/optimized/packfile.ll | 10 +- bench/hyperscan/optimized/runtime.ll | 962 +++++++++--------- bench/libquic/optimized/s3_srvr.ll | 134 +-- bench/lief/optimized/ecjpake.ll | 32 +- bench/lief/optimized/ssl_tls.ll | 394 +++---- bench/lief/optimized/ssl_tls13_client.ll | 362 +++---- bench/lief/optimized/ssl_tls13_server.ll | 818 +++++++-------- bench/linux/optimized/decompress_unlzo.ll | 26 +- bench/linux/optimized/nf_nat_helper.ll | 48 +- bench/linux/optimized/zstd_decompress.ll | 186 ++-- bench/llvm/optimized/PPCaching.ll | 14 +- bench/oiio/optimized/deepdata.ll | 712 ++++++------- .../optimized/cipher_aes_cbc_hmac_sha1_hw.ll | 382 +++---- .../cipher_aes_cbc_hmac_sha256_hw.ll | 394 +++---- .../openssl/optimized/e_aes_cbc_hmac_sha1.ll | 374 +++---- bench/openusd/optimized/zipFile.ll | 30 +- bench/zstd/optimized/zstd_v07.ll | 60 +- 28 files changed, 3408 insertions(+), 3408 deletions(-) diff --git a/bench/clamav/optimized/spin.ll b/bench/clamav/optimized/spin.ll index 36196a41acc..4d201063d49 100644 --- a/bench/clamav/optimized/spin.ll +++ b/bench/clamav/optimized/spin.ll @@ -281,181 +281,181 @@ define range(i32 0, 3) i32 @unspin(ptr noundef %0, i32 noundef %1, ptr noundef r %.not650 = icmp ult ptr %130, %0 br i1 %.not650, label %138, label %132 -132: ; preds = %129 +132: ; preds = %129 %133 = ptrtoint ptr %130 to i64 %134 = add i64 %133, 4 %135 = add i64 %127, %131 %.not651 = icmp ule i64 %134, %135 %136 = icmp ugt i64 %134, %131 %or.cond701 = and i1 %.not651, %136 - %137 = icmp ugt i64 %135, %133 - %or.cond702 = and i1 %137, %or.cond701 + %138 = icmp ugt i64 %135, %133 + %or.cond701 = and i1 %137, %or.cond701 br i1 %or.cond702, label %139, label %138 -138: ; preds = %132, %129, %110 +138:; preds = %132, %129, %110 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.7) #8 br label %.critedge713 -139: ; preds = %132 - %140 = load i32, ptr %130, align 1, !tbaa !10 - tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.10, i32 noundef %113, i32 noundef %140) #8 +141: ; preds = %132 + %142 = load i32, ptr %130, align 1, !tbaa !10 + tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.10, i32 noundef %113, i32 noundef %142) #8 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.11) #8 - %141 = icmp sgt i32 %3, 0 - br i1 %141, label %.lr.ph757.preheader, label %._crit_edge + %143 = icmp sgt i32 %3, 0 + br i1 %143, label %.lr.ph757.preheader, label %._crit_edge -.lr.ph757.preheader: ; preds = %139 +.lr.ph757.preheader: ; preds = %141 %wide.trip.count = zext nneg i32 %3 to i64 br label %.lr.ph757 .lr.ph757: ; preds = %.lr.ph757.preheader, %.loopexit738 %indvars.iv = phi i64 [ 0, %.lr.ph757.preheader ], [ %indvars.iv.next, %.loopexit738 ] - %.0557756 = phi i32 [ %140, %.lr.ph757.preheader ], [ %166, %.loopexit738 ] - %142 = and i32 %.0557756, 1 - %.not688 = icmp eq i32 %142, 0 - br i1 %.not688, label %.loopexit738, label %143 - -143: ; preds = %.lr.ph757 - %144 = getelementptr inbounds nuw %struct.cli_exe_section, ptr %2, i64 %indvars.iv - %145 = getelementptr inbounds nuw i8, ptr %144, i64 12 - %146 = load i32, ptr %145, align 4, !tbaa !3 - %147 = zext i32 %146 to i64 - %.not689 = icmp eq i32 %146, 0 - %.not690 = icmp ugt i64 %147, %127 + %.0557756 = phi i32 [ %142, %.lr.ph757.preheader ], [ %168, %.loopexit738 ] + %144 = and i32 %.0557756, 1 + %.not688 = icmp eq i32 %144, 0 + br i1 %.not688, label %.loopexit738, label %145 + +145: ; preds = %.lr.ph757 + %146 = getelementptr inbounds nuw %struct.cli_exe_section, ptr %2, i64 %indvars.iv + %147 = getelementptr inbounds nuw i8, ptr %146, i64 12 + %148 = load i32, ptr %147, align 4, !tbaa !3 + %149 = zext i32 %148 to i64 + %.not689 = icmp eq i32 %148, 0 + %.not690 = icmp ugt i64 %149, %127 %or.cond703 = or i1 %.not689, %.not690 - br i1 %or.cond703, label %.critedge, label %148 - -148: ; preds = %143 - %149 = getelementptr inbounds nuw i8, ptr %144, i64 8 - %150 = load i32, ptr %149, align 4, !tbaa !8 - %151 = zext i32 %150 to i64 - %152 = getelementptr inbounds nuw i8, ptr %0, i64 %151 - %153 = ptrtoint ptr %152 to i64 - %154 = add i64 %153, %147 - %.not692 = icmp ule i64 %154, %135 - %155 = icmp ugt i64 %154, %131 - %or.cond704 = and i1 %.not692, %155 - %156 = icmp ugt i64 %135, %153 - %or.cond705 = and i1 %156, %or.cond704 + br i1 %or.cond703, label %.critedge, label %150 + +150: ; preds = %145 + %151 = getelementptr inbounds nuw i8, ptr %146, i64 8 + %152 = load i32, ptr %151, align 4, !tbaa !8 + %153 = zext i32 %152 to i64 + %154 = getelementptr inbounds nuw i8, ptr %0, i64 %153 + %155 = ptrtoint ptr %154 to i64 + %156 = add i64 %155, %149 + %.not692 = icmp ule i64 %156, %135 + %157 = icmp ugt i64 %156, %131 + %or.cond704 = and i1 %.not692, %157 + %158 = icmp ugt i64 %135, %155 + %or.cond705 = and i1 %158, %or.cond704 br i1 %or.cond705, label %.lr.ph, label %.critedge -.critedge: ; preds = %148, %143 - %157 = trunc nuw nsw i64 %indvars.iv to i32 - tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.12, i32 noundef %157) #8 +.critedge: ; preds = %150, %145 + %159 = trunc nuw nsw i64 %indvars.iv to i32 + tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.12, i32 noundef %159) #8 br label %.critedge713 -.lr.ph: ; preds = %148, %.lr.ph +.lr.ph: ; preds = %150, %.lr.ph %.0536754 = phi i32 [ %.1537, %.lr.ph ], [ %113, %148 ] - %.0538753 = phi ptr [ %165, %.lr.ph ], [ %152, %148 ] - %.0539752 = phi i32 [ %158, %.lr.ph ], [ %146, %148 ] - %158 = add i32 %.0539752, -1 - %159 = and i32 %.0536754, 1 - %.not694 = icmp eq i32 %159, 0 - %160 = lshr i32 %.0536754, 1 - %161 = xor i32 %160, -314331343 - %.1537 = select i1 %.not694, i32 %161, i32 %160 - %162 = load i8, ptr %.0538753, align 1, !tbaa !10 - %163 = trunc i32 %.1537 to i8 - %164 = xor i8 %162, %163 - store i8 %164, ptr %.0538753, align 1, !tbaa !10 - %165 = getelementptr inbounds nuw i8, ptr %.0538753, i64 1 - %.not693 = icmp eq i32 %158, 0 + %.0538753 = phi ptr [ %167, %.lr.ph ], [ %154, %148 ] + %.0539752 = phi i32 [ %160, %.lr.ph ], [ %148, %148 ] + %160 = add i32 %.0539752, -1 + %161 = and i32 %.0536754, 1 + %.not694 = icmp eq i32 %161, 0 + %162 = lshr i32 %.0536754, 1 + %163 = xor i32 %162, -314331343 + %.1537 = select i1 %.not694, i32 %163, i32 %162 + %164 = load i8, ptr %.0538753, align 1, !tbaa !10 + %165 = trunc i32 %.1537 to i8 + %166 = xor i8 %164, %165 + store i8 %166, ptr %.0538753, align 1, !tbaa !10 + %167 = getelementptr inbounds nuw i8, ptr %.0538753, i64 1 + %.not693 = icmp eq i32 %160, 0 br i1 %.not693, label %.loopexit738, label %.lr.ph .loopexit738: ; preds = %.lr.ph, %.lr.ph757 - %166 = lshr i32 %.0557756, 1 + %168 = lshr i32 %.0557756, 1 %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 %.lr.ph757 -._crit_edge: ; preds = %.loopexit738, %139 +._crit_edge: ; preds = %.loopexit738, %141 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.13) #8 - %167 = getelementptr inbounds nuw i8, ptr %.fr804, i64 1604 - %168 = load i32, ptr %167, align 1, !tbaa !10 - %.not652 = icmp eq i32 %168, 384 - br i1 %.not652, label %170, label %169 + %169 = getelementptr inbounds nuw i8, ptr %.fr804, i64 1604 + %170 = load i32, ptr %169, align 1, !tbaa !10 + %.not652 = icmp eq i32 %170, 384 + br i1 %.not652, label %172, label %171 -169: ; preds = %._crit_edge +171: ; preds = %._crit_edge tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.2) #8 br label %.critedge713 -170: ; preds = %._crit_edge - %171 = getelementptr inbounds nuw i8, ptr %.fr804, i64 1616 - %172 = load i32, ptr %171, align 1, !tbaa !10 - tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.8, i32 noundef %172, i32 noundef 384) #8 +172: ; preds = %._crit_edge + %173 = getelementptr inbounds nuw i8, ptr %.fr804, i64 1616 + %174 = load i32, ptr %173, align 1, !tbaa !10 + tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.8, i32 noundef %174, i32 noundef 384) #8 %173 = getelementptr inbounds nuw i8, ptr %.fr804, i64 10451 - %174 = icmp ult i32 %1, 384 + %.not653 = icmp ult i32 %1, 384 %.not653 = icmp ult ptr %173, %0 - %or.cond = select i1 %174, i1 true, i1 %.not653 + %or.cond = select i1 %.not653, i1 true, i1 %.not653 br i1 %or.cond, label %180, label %175 -175: ; preds = %170 - %176 = ptrtoint ptr %173 to i64 - %177 = add i64 %176, 384 - %.not654 = icmp ule i64 %177, %135 - %178 = icmp ugt i64 %177, %131 - %or.cond706 = and i1 %.not654, %178 - %179 = icmp ugt i64 %135, %176 - %or.cond707 = and i1 %179, %or.cond706 - br i1 %or.cond707, label %.preheader736, label %180 - -180: ; preds = %175, %170 +175: ; preds = %170 + %178 = ptrtoint ptr %173 to i64 + %179 = add i64 %178, 384 + %.not654 = icmp ule i64 %179, %135 + %180 = icmp ugt i64 %179, %131 + %or.cond706 = and i1 %.not654, %180 + %181 = icmp ugt i64 %135, %178 + %or.cond707 = and i1 %181, %or.cond706 + br i1 %or.cond707, label %.preheader736, label %182 + +182: ; preds = %175, %172 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.7) #8 br label %.critedge713 .preheader736: ; preds = %175, %.preheader736 - %.2549760 = phi i32 [ %181, %.preheader736 ], [ 384, %175 ] - %.2568759 = phi i32 [ %.3569, %.preheader736 ], [ %172, %175 ] - %.2582758 = phi ptr [ %188, %.preheader736 ], [ %173, %175 ] - %181 = add nsw i32 %.2549760, -1 - %182 = and i32 %.2568759, 1 - %.not687 = icmp eq i32 %182, 0 - %183 = lshr i32 %.2568759, 1 - %184 = xor i32 %183, -314331342 - %.3569 = select i1 %.not687, i32 %183, i32 %184 - %185 = load i8, ptr %.2582758, align 1, !tbaa !10 - %186 = trunc i32 %.3569 to i8 - %187 = xor i8 %185, %186 - store i8 %187, ptr %.2582758, align 1, !tbaa !10 - %188 = getelementptr inbounds nuw i8, ptr %.2582758, i64 1 - %.not655 = icmp eq i32 %181, 0 - br i1 %.not655, label %189, label %.preheader736 - -189: ; preds = %.preheader736 - %190 = getelementptr inbounds nuw i8, ptr %.fr804, i64 10461 - %191 = load i32, ptr %190, align 1, !tbaa !10 - %.not656 = icmp eq i32 %191, 417 - br i1 %.not656, label %193, label %192 - -192: ; preds = %189 + %.2549760 = phi i32 [ %183, %.preheader736 ], [ 384, %175 ] + %.2568759 = phi i32 [ %.3569, %.preheader736 ], [ %174, %175 ] + %.2582758 = phi ptr [ %190, %.preheader736 ], [ %173, %175 ] + %183 = add nsw i32 %.2549760, -1 + %184 = and i32 %.2568759, 1 + %.not687 = icmp eq i32 %184, 0 + %185 = lshr i32 %.2568759, 1 + %186 = xor i32 %185, -314331342 + %.3569 = select i1 %.not687, i32 %185, i32 %186 + %187 = load i8, ptr %.2582758, align 1, !tbaa !10 + %188 = trunc i32 %.3569 to i8 + %189 = xor i8 %187, %188 + store i8 %189, ptr %.2582758, align 1, !tbaa !10 + %190 = getelementptr inbounds nuw i8, ptr %.2582758, i64 1 + %.not655 = icmp eq i32 %183, 0 + br i1 %.not655, label %191, label %.preheader736 + +191: ; preds = %.preheader736 + %192 = getelementptr inbounds nuw i8, ptr %.fr804, i64 10461 + %193 = load i32, ptr %192, align 1, !tbaa !10 + %.not656 = icmp eq i32 %193, 417 + br i1 %.not656, label %195, label %194 + +194: ; preds = %191 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.2) #8 br label %.critedge713 -193: ; preds = %189 +195: ; preds = %191 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.14, i32 noundef 417) #8 - %194 = getelementptr inbounds nuw i8, ptr %.fr804, i64 10476 + %196 = getelementptr inbounds nuw i8, ptr %.fr804, i64 10476 %195 = getelementptr inbounds nuw i8, ptr %.fr804, i64 1748 - %196 = icmp ult i32 %1, 417 + %.not657 = icmp ult i32 %1, 417 %.not657 = icmp ult ptr %195, %0 - %or.cond726 = select i1 %196, i1 true, i1 %.not657 + %or.cond726 = select i1 %.not657, i1 true, i1 %.not657 br i1 %or.cond726, label %202, label %197 -197: ; preds = %193 - %198 = ptrtoint ptr %195 to i64 - %199 = add i64 %198, 417 - %.not658 = icmp ule i64 %199, %135 - %200 = icmp ugt i64 %199, %131 - %or.cond708 = and i1 %.not658, %200 - %201 = icmp ugt i64 %135, %198 - %or.cond709 = and i1 %201, %or.cond708 - br i1 %or.cond709, label %.preheader735, label %202 - -202: ; preds = %197, %193 +197: ; preds = %193 + %200 = ptrtoint ptr %195 to i64 + %201 = add i64 %200, 417 + %.not658 = icmp ule i64 %201, %135 + %202 = icmp ugt i64 %201, %131 + %or.cond708 = and i1 %.not658, %202 + %203 = icmp ugt i64 %135, %200 + %or.cond709 = and i1 %203, %or.cond708 + br i1 %or.cond709, label %.preheader735, label %204 + +204: ; preds = %197, %195 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.15) #8 br label %.critedge713 -.preheader735: ; preds = %197, %207 - %.3550762 = phi i32 [ %208, %207 ], [ 417, %197 ] - %.0583761 = phi ptr [ %209, %207 ], [ %195, %197 ] +.preheader735: ; preds = %197, %209 + %.3550762 = phi i32 [ %210, %207 ], [ 417, %197 ] + %.0583761 = phi ptr [ %211, %207 ], [ %195, %197 ] call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #8 store i32 0, ptr %8, align 4, !tbaa !11 %203 = load i8, ptr %.0583761, align 1, !tbaa !10 @@ -471,46 +471,46 @@ define range(i32 0, 3) i32 @unspin(ptr noundef %0, i32 noundef %1, ptr noundef r call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #8 br label %.critedge713 -207: ; preds = %.preheader735 - %208 = add nsw i32 %.3550762, -1 - %209 = getelementptr inbounds nuw i8, ptr %.0583761, i64 1 +209: ; preds = %.preheader735 + %210 = add nsw i32 %.3550762, -1 + %211 = getelementptr inbounds nuw i8, ptr %.0583761, i64 1 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #8 - %.not659 = icmp eq i32 %208, 0 - br i1 %.not659, label %210, label %.preheader735 - -210: ; preds = %207 - %211 = getelementptr inbounds nuw i8, ptr %.fr804, i64 1777 - %212 = load i32, ptr %211, align 1, !tbaa !10 - tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.17, i32 noundef %212) #8 - %213 = getelementptr i8, ptr %.fr804, i64 1877 - br i1 %141, label %.lr.ph770, label %._crit_edge771 - -.lr.ph770: ; preds = %210 - %.not682 = icmp ult ptr %213, %0 + %.not659 = icmp eq i32 %210, 0 + br i1 %.not659, label %212, label %.preheader735 + +212: ; preds = %209 + %213 = getelementptr inbounds nuw i8, ptr %.fr804, i64 1777 + %214 = load i32, ptr %213, align 1, !tbaa !10 + tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.17, i32 noundef %214) #8 + %215 = getelementptr i8, ptr %.fr804, i64 1877 + br i1 %143, label %.lr.ph770, label %._crit_edge771 + +.lr.ph770: ; preds = %212 + %.not682 = icmp ult ptr %215, %0 %214 = ptrtoint ptr %213 to i64 %215 = add i64 %214, 36 - %.not683 = icmp ule i64 %215, %135 + %218 = icmp ule i64 %215, %135 %216 = icmp ugt i64 %215, %131 - %or.cond710 = and i1 %.not683, %216 + %or.cond710 = and i1 %218, %216 %217 = icmp ugt i64 %135, %214 %or.cond711 = and i1 %217, %or.cond710 - br i1 %.not682, label %.lr.ph770.split.us, label %.lr.ph770.split.preheader + br i1 %.not682, label %.lr.ph770230, label %220 -.lr.ph770.split.preheader: ; preds = %.lr.ph770 +220: ; preds = %.lr.ph770 %wide.trip.count817 = zext nneg i32 %3 to i64 br label %.lr.ph770.split -.lr.ph770.split.us: ; preds = %.lr.ph770, %219 +.lr.ph770.split.us:; preds = %.lr.ph770, %219 %.1558768.us = phi i32 [ %220, %219 ], [ %212, %.lr.ph770 ] %.1571767.us = phi i32 [ %221, %219 ], [ 0, %.lr.ph770 ] %218 = and i32 %.1558768.us, 1 %.not681.us = icmp eq i32 %218, 0 br i1 %.not681.us, label %219, label %.split.us -219: ; preds = %.lr.ph770.split.us +219: ; preds = %.lr.ph770.split.us %220 = lshr exact i32 %.1558768.us, 1 %221 = add nuw nsw i32 %.1571767.us, 1 - %exitcond819.not = icmp eq i32 %221, %3 + %.not684763 = icmp eq i32 %221, %3 br i1 %exitcond819.not, label %._crit_edge771, label %.lr.ph770.split.us .lr.ph770.split: ; preds = %.lr.ph770.split.preheader, %.loopexit734 @@ -531,24 +531,24 @@ define range(i32 0, 3) i32 @unspin(ptr noundef %0, i32 noundef %1, ptr noundef r br i1 %.not684763, label %.loopexit734, label %.lr.ph766.preheader .lr.ph766.preheader: ; preds = %.preheader733 - %227 = getelementptr inbounds nuw i8, ptr %224, i64 8 - %228 = load i32, ptr %227, align 4, !tbaa !8 - %229 = zext i32 %228 to i64 - %230 = getelementptr inbounds nuw i8, ptr %0, i64 %229 + %226 = getelementptr inbounds nuw i8, ptr %224, i64 8 + %227 = load i32, ptr %226, align 4, !tbaa !8 + %228 = zext i32 %227 to i64 + %229 = getelementptr inbounds nuw i8, ptr %0, i64 %228 br label %.lr.ph766 -.split.us: ; preds = %223, %.lr.ph770.split.us +230: ; preds = %223, %.lr.ph770230 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.18) #8 br label %.critedge713 .lr.ph766: ; preds = %.lr.ph766.preheader, %235 %.0535765 = phi i32 [ %236, %235 ], [ %226, %.lr.ph766.preheader ] - %.2585764 = phi ptr [ %237, %235 ], [ %230, %.lr.ph766.preheader ] + %.2585764 = phi ptr [ %237, %235 ], [ %229, %.lr.ph766.preheader ] call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #8 store i32 0, ptr %9, align 4, !tbaa !11 %231 = load i8, ptr %.2585764, align 1, !tbaa !10 %232 = trunc i32 %.0535765 to i8 - %233 = call fastcc signext i8 @exec86(i8 noundef zeroext %231, i8 noundef zeroext %232, ptr noundef nonnull %213, ptr noundef %9) + %233 = call fastcc signext i8 @exec86(i8 noundef zeroext %231, i8 noundef zeroext %232, ptr noundef nonnull %215, ptr noundef %9) store i8 %233, ptr %.2585764, align 1, !tbaa !10 %234 = load i32, ptr %9, align 4, !tbaa !11 %.not685 = icmp eq i32 %234, 0 @@ -568,9 +568,9 @@ define range(i32 0, 3) i32 @unspin(ptr noundef %0, i32 noundef %1, ptr noundef r .loopexit734: ; preds = %235, %.preheader733, %.lr.ph770.split %238 = lshr i32 %.1558768, 1 - %indvars.iv.next815 = add nuw nsw i64 %indvars.iv814, 1 - %exitcond818.not = icmp eq i64 %indvars.iv.next815, %wide.trip.count817 - br i1 %exitcond818.not, label %._crit_edge771, label %.lr.ph770.split + %indvars.iv.next812 = add nuw nsw i64 %indvars.iv814, 1 + %exitcond815.not = icmp eq i64 %indvars.iv.next812, %wide.trip.count817 + br i1 %exitcond815.not, label %._crit_edge771, label %.lr.ph770.split ._crit_edge771: ; preds = %.loopexit734, %219, %210 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.13) #8 @@ -581,15 +581,15 @@ define range(i32 0, 3) i32 @unspin(ptr noundef %0, i32 noundef %1, ptr noundef r %243 = getelementptr inbounds nuw i8, ptr %242, i64 72 %244 = load i64, ptr %243, align 8, !tbaa !29 %.not660 = icmp ne i64 %244, 0 - %or.cond803 = and i1 %.not660, %141 + %or.cond803 = and i1 %.not660, %143 br i1 %or.cond803, label %.lr.ph776.preheader, label %.loopexit732 .lr.ph776.preheader: ; preds = %._crit_edge771 - %wide.trip.count823 = zext nneg i32 %3 to i64 + %wide.trip.count819 = zext nneg i32 %3 to i64 br label %.lr.ph776 .lr.ph776: ; preds = %.lr.ph776.preheader, %256 - %indvars.iv820 = phi i64 [ 0, %.lr.ph776.preheader ], [ %indvars.iv.next821, %256 ] + %indvars.iv816 = phi i64 [ 0, %.lr.ph776.preheader ], [ %indvars.iv.next817, %256 ] %.0533775 = phi i64 [ 0, %.lr.ph776.preheader ], [ %.1534, %256 ] %.3560774 = phi i32 [ %240, %.lr.ph776.preheader ], [ %257, %256 ] %245 = and i32 %.3560774, 1 @@ -601,7 +601,7 @@ define range(i32 0, 3) i32 @unspin(ptr noundef %0, i32 noundef %1, ptr noundef r br i1 %247, label %.critedge713, label %248 248: ; preds = %246 - %249 = getelementptr inbounds nuw %struct.cli_exe_section, ptr %2, i64 %indvars.iv820, i32 1 + %249 = getelementptr inbounds nuw %struct.cli_exe_section, ptr %2, i64 %indvars.iv816, i32 1 %250 = load i32, ptr %249, align 4, !tbaa !48 %251 = zext i32 %250 to i64 %252 = sub nuw i64 %244, %.0533775 @@ -615,9 +615,9 @@ define range(i32 0, 3) i32 @unspin(ptr noundef %0, i32 noundef %1, ptr noundef r 256: ; preds = %254, %.lr.ph776 %.1534 = phi i64 [ %255, %254 ], [ %.0533775, %.lr.ph776 ] %257 = lshr i32 %.3560774, 1 - %indvars.iv.next821 = add nuw nsw i64 %indvars.iv820, 1 - %exitcond824.not = icmp eq i64 %indvars.iv.next821, %wide.trip.count823 - br i1 %exitcond824.not, label %.loopexit732, label %.lr.ph776 + %indvars.iv.next817 = add nuw nsw i64 %indvars.iv816, 1 + %exitcond820.not = icmp eq i64 %indvars.iv.next817, %wide.trip.count819 + br i1 %exitcond820.not, label %.loopexit732, label %.lr.ph776 .loopexit732: ; preds = %256, %._crit_edge771 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.20, i32 noundef %240) #8 @@ -627,10 +627,10 @@ define range(i32 0, 3) i32 @unspin(ptr noundef %0, i32 noundef %1, ptr noundef r br i1 %260, label %261, label %.preheader730 .preheader730: ; preds = %.loopexit732 - br i1 %141, label %.lr.ph781.preheader, label %.thread859 + br i1 %143, label %.lr.ph781.preheader, label %.thread855 .lr.ph781.preheader: ; preds = %.preheader730 - %wide.trip.count828 = zext nneg i32 %3 to i64 + %wide.trip.count824 = zext nneg i32 %3 to i64 br label %.lr.ph781 261: ; preds = %.loopexit732 @@ -638,13 +638,13 @@ define range(i32 0, 3) i32 @unspin(ptr noundef %0, i32 noundef %1, ptr noundef r br label %.critedge713 .lr.ph781: ; preds = %.lr.ph781.preheader, %300 - %indvars.iv825 = phi i64 [ 0, %.lr.ph781.preheader ], [ %indvars.iv.next826, %300 ] + %indvars.iv821 = phi i64 [ 0, %.lr.ph781.preheader ], [ %indvars.iv.next822, %300 ] %.4551780 = phi i32 [ 0, %.lr.ph781.preheader ], [ %.6553, %300 ] %.5562779 = phi i32 [ %240, %.lr.ph781.preheader ], [ %301, %300 ] %.0577777 = phi i32 [ 0, %.lr.ph781.preheader ], [ %.1578, %300 ] %262 = and i32 %.5562779, 1 %.not663 = icmp eq i32 %262, 0 - %263 = getelementptr inbounds nuw %struct.cli_exe_section, ptr %2, i64 %indvars.iv825 + %263 = getelementptr inbounds nuw %struct.cli_exe_section, ptr %2, i64 %indvars.iv821 br i1 %.not663, label %291, label %264 264: ; preds = %.lr.ph781 @@ -652,13 +652,13 @@ define range(i32 0, 3) i32 @unspin(ptr noundef %0, i32 noundef %1, ptr noundef r %266 = load i32, ptr %265, align 4, !tbaa !48 %267 = zext i32 %266 to i64 %268 = tail call ptr @cli_max_malloc(i64 noundef %267) #8 - %269 = getelementptr inbounds nuw ptr, ptr %259, i64 %indvars.iv825 + %269 = getelementptr inbounds nuw ptr, ptr %259, i64 %indvars.iv821 store ptr %268, ptr %269, align 8, !tbaa !49 %270 = icmp eq ptr %268, null - br i1 %270, label %.loopexit.thread854, label %273 + br i1 %270, label %.loopexit.thread850, label %273 -.loopexit.thread854: ; preds = %264 - %271 = trunc nuw nsw i64 %indvars.iv825 to i32 +.loopexit.thread850: ; preds = %264 + %271 = trunc nuw nsw i64 %indvars.iv821 to i32 %272 = load i32, ptr %265, align 4, !tbaa !48 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.22, i32 noundef %272) #8 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.26) #8 @@ -671,7 +671,7 @@ define range(i32 0, 3) i32 @unspin(ptr noundef %0, i32 noundef %1, ptr noundef r %276 = getelementptr inbounds nuw i8, ptr %263, i64 12 %277 = load i32, ptr %276, align 4, !tbaa !3 %278 = load i32, ptr %265, align 4, !tbaa !48 - %279 = trunc nuw nsw i64 %indvars.iv825 to i32 + %279 = trunc nuw nsw i64 %indvars.iv821 to i32 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.23, i32 noundef %279, i32 noundef %277, i32 noundef %278) #8 %280 = getelementptr inbounds nuw i8, ptr %263, i64 8 %281 = load i32, ptr %280, align 4, !tbaa !8 @@ -696,9 +696,9 @@ define range(i32 0, 3) i32 @unspin(ptr noundef %0, i32 noundef %1, ptr noundef r %295 = load i32, ptr %294, align 4, !tbaa !8 %296 = zext i32 %295 to i64 %297 = getelementptr inbounds nuw i8, ptr %0, i64 %296 - %298 = getelementptr inbounds nuw ptr, ptr %259, i64 %indvars.iv825 + %298 = getelementptr inbounds nuw ptr, ptr %259, i64 %indvars.iv821 store ptr %297, ptr %298, align 8, !tbaa !49 - %299 = trunc nuw nsw i64 %indvars.iv825 to i32 + %299 = trunc nuw nsw i64 %indvars.iv821 to i32 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.25, i32 noundef %299) #8 br label %300 @@ -707,42 +707,42 @@ define range(i32 0, 3) i32 @unspin(ptr noundef %0, i32 noundef %1, ptr noundef r %.6553 = phi i32 [ %290, %289 ], [ %.4551780, %273 ], [ %.4551780, %291 ] %.1578 = add i32 %.pn, %.0577777 %301 = lshr i32 %.5562779, 1 - %indvars.iv.next826 = add nuw nsw i64 %indvars.iv825, 1 - %exitcond829.not = icmp eq i64 %indvars.iv.next826, %wide.trip.count828 - br i1 %exitcond829.not, label %.loopexit, label %.lr.ph781 + %indvars.iv.next822 = add nuw nsw i64 %indvars.iv821, 1 + %exitcond825.not = icmp eq i64 %indvars.iv.next822, %wide.trip.count824 + br i1 %exitcond825.not, label %.loopexit, label %.lr.ph781 .loopexit: ; preds = %300 %302 = icmp eq i32 %.6553, 0 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.26) #8 br i1 %302, label %309, label %.preheader729 -.preheader729: ; preds = %.loopexit.thread854, %.loopexit - %.3573741858 = phi i32 [ %271, %.loopexit.thread854 ], [ %3, %.loopexit ] - %.not805 = icmp eq i32 %.3573741858, 0 - br i1 %.not805, label %._crit_edge787, label %.lr.ph786.preheader +.preheader729: ; preds = %.loopexit.thread850, %.loopexit + %.3573741854 = phi i32 [ %271, %.loopexit.thread854 ], [ %3, %.loopexit ] + %.not804 = icmp eq i32 %.3573741854, 0 + br i1 %.not804, label %._crit_edge787, label %.lr.ph786.preheader .lr.ph786.preheader: ; preds = %.preheader729 - %wide.trip.count833 = zext i32 %.3573741858 to i64 + %wide.trip.count829 = zext i32 %.3573741854 to i64 br label %.lr.ph786 .lr.ph786: ; preds = %.lr.ph786.preheader, %307 - %indvars.iv830 = phi i64 [ 0, %.lr.ph786.preheader ], [ %indvars.iv.next831, %307 ] + %indvars.iv826 = phi i64 [ 0, %.lr.ph786.preheader ], [ %indvars.iv.next827, %307 ] %.0554784 = phi i32 [ %240, %.lr.ph786.preheader ], [ %308, %307 ] %303 = and i32 %.0554784, 1 %.not680 = icmp eq i32 %303, 0 br i1 %.not680, label %307, label %304 304: ; preds = %.lr.ph786 - %305 = getelementptr inbounds nuw ptr, ptr %259, i64 %indvars.iv830 + %305 = getelementptr inbounds nuw ptr, ptr %259, i64 %indvars.iv826 %306 = load ptr, ptr %305, align 8, !tbaa !49 tail call void @free(ptr noundef %306) #8 br label %307 307: ; preds = %304, %.lr.ph786 %308 = lshr i32 %.0554784, 1 - %indvars.iv.next831 = add nuw nsw i64 %indvars.iv830, 1 - %exitcond834.not = icmp eq i64 %indvars.iv.next831, %wide.trip.count833 - br i1 %exitcond834.not, label %._crit_edge787, label %.lr.ph786 + %indvars.iv.next827 = add nuw nsw i64 %indvars.iv826, 1 + %exitcond830.not = icmp eq i64 %indvars.iv.next827, %wide.trip.count829 + br i1 %exitcond830.not, label %._crit_edge787, label %.lr.ph786 ._crit_edge787: ; preds = %307, %.preheader729 tail call void @free(ptr noundef %259) #8 @@ -754,20 +754,20 @@ define range(i32 0, 3) i32 @unspin(ptr noundef %0, i32 noundef %1, ptr noundef r %.not665 = icmp eq i32 %311, 0 br i1 %.not665, label %399, label %.lr.ph789.preheader -.thread859: ; preds = %.preheader730 +.thread855: ; preds = %.preheader730 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.26) #8 %312 = getelementptr inbounds nuw i8, ptr %.fr804, i64 12270 %313 = load i32, ptr %312, align 1, !tbaa !10 - %.not665861 = icmp eq i32 %313, 0 - br i1 %.not665861, label %399, label %._crit_edge790 + %.not665857 = icmp eq i32 %313, 0 + br i1 %.not665857, label %399, label %._crit_edge790 .lr.ph789.preheader: ; preds = %309 - %wide.trip.count838 = zext nneg i32 %3 to i64 + %wide.trip.count834 = zext nneg i32 %3 to i64 br label %.lr.ph789 .lr.ph789: ; preds = %.lr.ph789.preheader, %336 - %indvars.iv835 = phi i64 [ 0, %.lr.ph789.preheader ], [ %indvars.iv.next836, %336 ] - %314 = getelementptr inbounds nuw %struct.cli_exe_section, ptr %2, i64 %indvars.iv835 + %indvars.iv831 = phi i64 [ 0, %.lr.ph789.preheader ], [ %indvars.iv.next832, %336 ] + %314 = getelementptr inbounds nuw %struct.cli_exe_section, ptr %2, i64 %indvars.iv831 %315 = load i32, ptr %314, align 4, !tbaa !9 %.not666 = icmp ugt i32 %315, %311 br i1 %.not666, label %336, label %316 @@ -807,16 +807,16 @@ define range(i32 0, 3) i32 @unspin(ptr noundef %0, i32 noundef %1, ptr noundef r br i1 %or.cond715, label %._crit_edge790.loopexit, label %336 336: ; preds = %.lr.ph789, %316, %321, %325, %326 - %indvars.iv.next836 = add nuw nsw i64 %indvars.iv835, 1 - %exitcond839.not = icmp eq i64 %indvars.iv.next836, %wide.trip.count838 - br i1 %exitcond839.not, label %._crit_edge790.thread, label %.lr.ph789 + %indvars.iv.next832 = add nuw nsw i64 %indvars.iv831, 1 + %exitcond835.not = icmp eq i64 %indvars.iv.next832, %wide.trip.count834 + br i1 %exitcond835.not, label %._crit_edge790.thread, label %.lr.ph789 ._crit_edge790.loopexit: ; preds = %326 - %337 = trunc nuw nsw i64 %indvars.iv835 to i32 + %337 = trunc nuw nsw i64 %indvars.iv831 to i32 br label %._crit_edge790 -._crit_edge790: ; preds = %._crit_edge790.loopexit, %.thread859 - %.0577743853862864 = phi i32 [ 0, %.thread859 ], [ %.1578, %._crit_edge790.loopexit ] +._crit_edge790: ; preds = %._crit_edge790.loopexit, %.thread855 + %.0577743849858860 = phi i32 [ 0, %.thread859 ], [ %.1578, %._crit_edge790.loopexit ] %338 = phi i32 [ %313, %.thread859 ], [ %311, %._crit_edge790.loopexit ] %.4574.lcssa = phi i32 [ 0, %.thread859 ], [ %337, %._crit_edge790.loopexit ] %.not671 = icmp eq i32 %.4574.lcssa, %3 @@ -886,7 +886,7 @@ define range(i32 0, 3) i32 @unspin(ptr noundef %0, i32 noundef %1, ptr noundef r tail call void @free(ptr noundef nonnull %353) #8 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.28) #8 %388 = load i32, ptr %380, align 4, !tbaa !3 - %389 = add i32 %388, %.0577743853862864 + %389 = add i32 %388, %.0577743849858860 br label %399 390: ; preds = %354 @@ -895,23 +895,23 @@ define range(i32 0, 3) i32 @unspin(ptr noundef %0, i32 noundef %1, ptr noundef r %392 = or i32 %340, %240 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.29) #8 %393 = load i32, ptr %348, align 4, !tbaa !48 - %394 = add i32 %393, %.0577743853862864 + %394 = add i32 %393, %.0577743849858860 br label %399 395: ; preds = %343 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.30) #8 %396 = getelementptr inbounds nuw i8, ptr %345, i64 12 %397 = load i32, ptr %396, align 4, !tbaa !3 - %398 = add i32 %397, %.0577743853862864 + %398 = add i32 %397, %.0577743849858860 br label %399 ._crit_edge790.thread: ; preds = %336, %339, %._crit_edge790 - %.0577743853862864868 = phi i32 [ %.0577743853862864, %339 ], [ %.0577743853862864, %._crit_edge790 ], [ %.1578, %336 ] + %.0577743849858860864 = phi i32 [ %.0577743849858860, %339 ], [ %.0577743849858860, %._crit_edge790 ], [ %.1578, %336 ] tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.31) #8 br label %399 -399: ; preds = %.thread859, %._crit_edge790.thread, %387, %390, %395, %309 - %.2579 = phi i32 [ %389, %387 ], [ %394, %390 ], [ %398, %395 ], [ %.0577743853862864868, %._crit_edge790.thread ], [ %.1578, %309 ], [ 0, %.thread859 ] +399: ; preds = %.thread855, %._crit_edge790.thread, %387, %390, %395, %309 + %.2579 = phi i32 [ %389, %387 ], [ %394, %390 ], [ %398, %395 ], [ %.0577743849858860864, %._crit_edge790.thread ], [ %.1578, %309 ], [ 0, %.thread859 ] %.1555 = phi i32 [ %240, %387 ], [ %392, %390 ], [ %240, %395 ], [ %240, %._crit_edge790.thread ], [ %240, %309 ], [ %240, %.thread859 ] %400 = sext i32 %.2579 to i64 %401 = tail call ptr @cli_max_malloc(i64 noundef %400) #8 @@ -925,21 +925,21 @@ define range(i32 0, 3) i32 @unspin(ptr noundef %0, i32 noundef %1, ptr noundef r br i1 %.not675, label %.thread723, label %.preheader .preheader: ; preds = %402 - br i1 %141, label %.lr.ph797.preheader, label %._crit_edge798 + br i1 %143, label %.lr.ph797.preheader, label %._crit_edge798 .lr.ph797.preheader: ; preds = %.preheader - %wide.trip.count843 = zext nneg i32 %3 to i64 + %wide.trip.count839 = zext nneg i32 %3 to i64 br label %.lr.ph797 .lr.ph797: ; preds = %.lr.ph797.preheader, %434 - %indvars.iv840 = phi i64 [ 0, %.lr.ph797.preheader ], [ %indvars.iv.next841, %434 ] + %indvars.iv836 = phi i64 [ 0, %.lr.ph797.preheader ], [ %indvars.iv.next837, %434 ] %.0530796 = phi ptr [ %401, %.lr.ph797.preheader ], [ %431, %434 ] %.7564795 = phi i32 [ %.1555, %.lr.ph797.preheader ], [ %435, %434 ] - %.not678 = icmp eq i64 %indvars.iv840, 0 + %.not678 = icmp eq i64 %indvars.iv836, 0 br i1 %.not678, label %412, label %405 405: ; preds = %.lr.ph797 - %406 = getelementptr %struct.cli_exe_section, ptr %404, i64 %indvars.iv840 + %406 = getelementptr %struct.cli_exe_section, ptr %404, i64 %indvars.iv836 %407 = getelementptr i8, ptr %406, i64 -28 %408 = load i32, ptr %407, align 4, !tbaa !8 %409 = getelementptr i8, ptr %406, i64 -24 @@ -949,25 +949,25 @@ define range(i32 0, 3) i32 @unspin(ptr noundef %0, i32 noundef %1, ptr noundef r 412: ; preds = %.lr.ph797, %405 %413 = phi i32 [ %411, %405 ], [ 0, %.lr.ph797 ] - %414 = getelementptr inbounds nuw %struct.cli_exe_section, ptr %404, i64 %indvars.iv840 + %414 = getelementptr inbounds nuw %struct.cli_exe_section, ptr %404, i64 %indvars.iv836 %415 = getelementptr inbounds nuw i8, ptr %414, i64 8 store i32 %413, ptr %415, align 4, !tbaa !8 %416 = and i32 %.7564795, 1 %.not679 = icmp eq i32 %416, 0 - %417 = getelementptr inbounds nuw %struct.cli_exe_section, ptr %2, i64 %indvars.iv840, i32 1 - %418 = getelementptr inbounds nuw %struct.cli_exe_section, ptr %2, i64 %indvars.iv840, i32 3 + %417 = getelementptr inbounds nuw %struct.cli_exe_section, ptr %2, i64 %indvars.iv836, i32 1 + %418 = getelementptr inbounds nuw %struct.cli_exe_section, ptr %2, i64 %indvars.iv836, i32 3 %.in = select i1 %.not679, ptr %418, ptr %417 %419 = load i32, ptr %.in, align 4, !tbaa !11 %420 = getelementptr inbounds nuw i8, ptr %414, i64 12 store i32 %419, ptr %420, align 4, !tbaa !3 - %421 = getelementptr inbounds nuw %struct.cli_exe_section, ptr %2, i64 %indvars.iv840 + %421 = getelementptr inbounds nuw %struct.cli_exe_section, ptr %2, i64 %indvars.iv836 %422 = load i32, ptr %421, align 4, !tbaa !9 store i32 %422, ptr %414, align 4, !tbaa !9 %423 = getelementptr inbounds nuw i8, ptr %421, i64 4 %424 = load i32, ptr %423, align 4, !tbaa !48 %425 = getelementptr inbounds nuw i8, ptr %414, i64 4 store i32 %424, ptr %425, align 4, !tbaa !48 - %426 = getelementptr inbounds nuw ptr, ptr %259, i64 %indvars.iv840 + %426 = getelementptr inbounds nuw ptr, ptr %259, i64 %indvars.iv836 %427 = load ptr, ptr %426, align 8, !tbaa !49 %428 = zext i32 %419 to i64 tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %.0530796, ptr align 1 %427, i64 %428, i1 false) @@ -983,9 +983,9 @@ define range(i32 0, 3) i32 @unspin(ptr noundef %0, i32 noundef %1, ptr noundef r 434: ; preds = %432, %412 %435 = lshr i32 %.7564795, 1 - %indvars.iv.next841 = add nuw nsw i64 %indvars.iv840, 1 - %exitcond844.not = icmp eq i64 %indvars.iv.next841, %wide.trip.count843 - br i1 %exitcond844.not, label %._crit_edge798, label %.lr.ph797 + %indvars.iv.next837 = add nuw nsw i64 %indvars.iv836, 1 + %exitcond840.not = icmp eq i64 %indvars.iv.next837, %wide.trip.count839 + br i1 %exitcond840.not, label %._crit_edge798, label %.lr.ph797 ._crit_edge798: ; preds = %434, %.preheader %436 = tail call i32 @cli_rebuildpe(ptr noundef nonnull %401, ptr noundef nonnull %404, i32 noundef %3, i32 noundef 4194304, i32 noundef 4096, i32 noundef 0, i32 noundef 0, i32 noundef %5) #8 @@ -1011,27 +1011,27 @@ define range(i32 0, 3) i32 @unspin(ptr noundef %0, i32 noundef %1, ptr noundef r tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.33, i32 noundef %.1555) #8 %440 = and i32 %.1555, 1 %.not677 = icmp ne i32 %440, 0 - %or.cond875.not = select i1 %141, i1 %.not677, i1 false - br i1 %or.cond875.not, label %.lr.ph801.split.preheader, label %._crit_edge802 + %or.cond869.not = select i1 %143, i1 %.not677, i1 false + br i1 %or.cond869.not, label %.lr.ph801.split.preheader, label %._crit_edge802 .lr.ph801.split.preheader: ; preds = %439 - %wide.trip.count848 = zext nneg i32 %3 to i64 + %wide.trip.count844 = zext nneg i32 %3 to i64 br label %.lr.ph801.split .lr.ph801.split: ; preds = %.lr.ph801.split.preheader, %.lr.ph801.split - %indvars.iv845 = phi i64 [ 0, %.lr.ph801.split.preheader ], [ %indvars.iv.next846, %.lr.ph801.split ] - %441 = getelementptr inbounds nuw ptr, ptr %259, i64 %indvars.iv845 + %indvars.iv841 = phi i64 [ 0, %.lr.ph801.split.preheader ], [ %indvars.iv.next842, %.lr.ph801.split ] + %441 = getelementptr inbounds nuw ptr, ptr %259, i64 %indvars.iv841 %442 = load ptr, ptr %441, align 8, !tbaa !49 tail call void @free(ptr noundef %442) #8 - %indvars.iv.next846 = add nuw nsw i64 %indvars.iv845, 1 - %exitcond849.not = icmp eq i64 %indvars.iv.next846, %wide.trip.count848 - br i1 %exitcond849.not, label %._crit_edge802, label %.lr.ph801.split + %indvars.iv.next842 = add nuw nsw i64 %indvars.iv841, 1 + %exitcond845.not = icmp eq i64 %indvars.iv.next842, %wide.trip.count844 + br i1 %exitcond845.not, label %._crit_edge802, label %.lr.ph801.split ._crit_edge802: ; preds = %.lr.ph801.split, %439 tail call void @free(ptr noundef %259) #8 br label %.critedge713 -.critedge713: ; preds = %248, %246, %438, %.thread718, %.thread, %.split.us, %.critedge, %._crit_edge802, %._crit_edge787, %261, %202, %192, %180, %169, %138, %109, %91, %87, %57, %43, %39, %33, %17 +.critedge713: ; preds = %248, %246, %438, %.thread718, %.thread, %230, %.critedge, %._crit_edge802, %._crit_edge787, %261, %204, %194, %182, %171, %138, %109, %91, %87, %57, %43, %39, %33, %17 %.0531 = phi i32 [ 1, %17 ], [ 1, %33 ], [ 1, %39 ], [ 1, %43 ], [ 1, %91 ], [ 1, %109 ], [ 1, %169 ], [ 1, %192 ], [ 1, %261 ], [ 1, %._crit_edge787 ], [ 1, %._crit_edge802 ], [ %.0, %438 ], [ 1, %202 ], [ 1, %180 ], [ 1, %138 ], [ 1, %87 ], [ 1, %57 ], [ 1, %.critedge ], [ 1, %.split.us ], [ 1, %.thread ], [ 1, %.thread718 ], [ 2, %246 ], [ 2, %248 ] ret i32 %.0531 } diff --git a/bench/clamav/optimized/upx.ll b/bench/clamav/optimized/upx.ll index f7e9f2b8fc0..284b2608a3d 100644 --- a/bench/clamav/optimized/upx.ll +++ b/bench/clamav/optimized/upx.ll @@ -517,14 +517,14 @@ define internal fastcc range(i32 0, 2) i32 @pefromupx(ptr noundef %0, i32 nounde %16 = zext i32 %4 to i64 %17 = getelementptr inbounds nuw i8, ptr %0, i64 %16 %18 = zext i32 %6 to i64 - %19 = sub nsw i64 0, %18 - %20 = getelementptr inbounds i8, ptr %17, i64 %19 + %.neg579 = sub nsw i64 0, %18 + %20 = getelementptr inbounds i8, ptr %17, i64 %.neg579 %invariant.gep = getelementptr i8, ptr %20, i64 -2 %21 = ptrtoint ptr %0 to i64 %22 = add i64 %15, %21 %23 = sub i32 %4, %6 - %invariant.op = add i32 %23, -2 - %invariant.op506 = add i32 %23, -1 + %invariant.op506 = add i32 %23, -2 + %invariant.op507 = add i32 %23, -1 br i1 %switch, label %.lr.ph.split.us, label %.lr.ph.split .lr.ph.split.us: ; preds = %.lr.ph, %.lr.ph.split.us @@ -559,7 +559,7 @@ define internal fastcc range(i32 0, 2) i32 @pefromupx(ptr noundef %0, i32 nounde br i1 %or.cond391, label %38, label %48 38: ; preds = %33 - %.reass = add i32 %30, %invariant.op + %.reass = add i32 %30, %invariant.op506 %39 = zext i32 %.reass to i64 %40 = getelementptr inbounds nuw i8, ptr %0, i64 %39 %41 = load i8, ptr %40, align 1, !tbaa !3 @@ -567,12 +567,12 @@ define internal fastcc range(i32 0, 2) i32 @pefromupx(ptr noundef %0, i32 nounde br i1 %42, label %43, label %48 43: ; preds = %38 - %.reass507 = add i32 %30, %invariant.op506 - %44 = zext i32 %.reass507 to i64 + %.reass508 = add i32 %30, %invariant.op507 + %44 = zext i32 %.reass508 to i64 %45 = getelementptr inbounds nuw i8, ptr %0, i64 %44 %46 = load i8, ptr %45, align 1, !tbaa !3 %47 = icmp eq i8 %46, -66 - br i1 %47, label %.loopexit.loopexit582, label %48 + br i1 %47, label %.loopexit.loopexit584, label %48 48: ; preds = %43, %38, %33, %.lr.ph.split %49 = add i32 %31, 1 @@ -590,7 +590,7 @@ define internal fastcc range(i32 0, 2) i32 @pefromupx(ptr noundef %0, i32 nounde 55: ; preds = %._crit_edge.thread, %._crit_edge %.in = phi i32 [ %29, %._crit_edge.thread ], [ %53, %._crit_edge ] - %.lcssa502602 = phi i32 [ %25, %._crit_edge.thread ], [ %.lcssa502, %._crit_edge ] + %.lcssa502604 = phi i32 [ %25, %._crit_edge.thread ], [ %.lcssa502, %._crit_edge ] %56 = zext i32 %4 to i64 %57 = zext i32 %6 to i64 %58 = ptrtoint ptr %0 to i64 @@ -626,17 +626,17 @@ define internal fastcc range(i32 0, 2) i32 @pefromupx(ptr noundef %0, i32 nounde %78 = ptrtoint ptr %75 to i64 %79 = sub i64 %77, %78 %80 = tail call ptr @cli_memstr(ptr noundef %75, i64 noundef %79, ptr noundef nonnull @.str.1, i64 noundef 2) #8 - %.not358510 = icmp eq ptr %80, null - br i1 %.not358510, label %.thread453, label %.lr.ph512 + %.not358511 = icmp eq ptr %80, null + br i1 %.not358511, label %.thread453, label %.lr.ph513 -.lr.ph512: ; preds = %71, %95 +.lr.ph513: ; preds = %71, %95 %81 = phi ptr [ %99, %95 ], [ %80, %71 ] %82 = getelementptr inbounds nuw i8, ptr %81, i64 6 %83 = load i8, ptr %82, align 1, !tbaa !3 %84 = icmp eq i8 %83, -117 br i1 %84, label %85, label %95 -85: ; preds = %.lr.ph512 +85: ; preds = %.lr.ph513 %86 = getelementptr inbounds nuw i8, ptr %81, i64 7 %87 = load i8, ptr %86, align 1, !tbaa !3 %88 = icmp eq i8 %87, 7 @@ -651,21 +651,21 @@ define internal fastcc range(i32 0, 2) i32 @pefromupx(ptr noundef %0, i32 nounde %94 = add i32 %93, %6 br label %.loopexit -95: ; preds = %85, %.lr.ph512 +95: ; preds = %85, %.lr.ph513 %96 = getelementptr inbounds nuw i8, ptr %81, i64 1 %97 = ptrtoint ptr %96 to i64 %98 = sub i64 %77, %97 %99 = tail call ptr @cli_memstr(ptr noundef nonnull %96, i64 noundef %98, ptr noundef nonnull @.str.1, i64 noundef 2) #8 %.not358 = icmp eq ptr %99, null - br i1 %.not358, label %.thread453, label %.lr.ph512 + br i1 %.not358, label %.thread453, label %.lr.ph513 -.loopexit.loopexit582: ; preds = %43 +.loopexit.loopexit584: ; preds = %43 %.pre = zext i32 %1 to i64 br label %.loopexit -.loopexit: ; preds = %.loopexit.loopexit582, %89 +.loopexit: ; preds = %.loopexit.loopexit584, %89 %.pre-phi = phi i64 [ %.pre, %.loopexit.loopexit582 ], [ %76, %89 ] - %100 = phi i32 [ %31, %.loopexit.loopexit582 ], [ %.lcssa502602, %89 ] + %100 = phi i32 [ %31, %.loopexit.loopexit582 ], [ %.lcssa502604, %89 ] %.0441 = phi i32 [ %30, %.loopexit.loopexit582 ], [ %94, %89 ] %101 = icmp ne i32 %.0441, 0 %102 = icmp ugt i32 %1, 3 @@ -711,21 +711,21 @@ define internal fastcc range(i32 0, 2) i32 @pefromupx(ptr noundef %0, i32 nounde %125 = sext i32 %121 to i64 %126 = getelementptr inbounds i8, ptr %2, i64 %125 %switch415 = icmp ult i32 %122, 8 - br i1 %switch415, label %.critedge.thread, label %.lr.ph524 + br i1 %switch415, label %.critedge.thread, label %.lr.ph525 -.lr.ph524: ; preds = %124 +.lr.ph525: ; preds = %124 %127 = zext i32 %122 to i64 %128 = add i64 %127, %10 - %.not363529 = icmp slt i32 %121, 0 - br i1 %.not363529, label %.critedge, label %.lr.ph531 + %.not363530 = icmp slt i32 %121, 0 + br i1 %.not363530, label %.critedge, label %.lr.ph532 .critedge.thread: ; preds = %124 %129 = getelementptr inbounds nuw i8, ptr %126, i64 4 br label %checkpe.exit -.lr.ph531: ; preds = %.lr.ph524, %.critedge10 - %.1281522530 = phi ptr [ %152, %.critedge10 ], [ %126, %.lr.ph524 ] - %130 = ptrtoint ptr %.1281522530 to i64 +.lr.ph532: ; preds = %.lr.ph525, %.critedge10 + %.1281523531 = phi ptr [ %152, %.critedge10 ], [ %126, %.lr.ph524 ] + %130 = ptrtoint ptr %.1281523531 to i64 %131 = add i64 %130, 8 %.not364 = icmp ule i64 %131, %128 %132 = icmp ugt i64 %131, %10 @@ -734,19 +734,19 @@ define internal fastcc range(i32 0, 2) i32 @pefromupx(ptr noundef %0, i32 nounde %or.cond399 = and i1 %133, %or.cond398 br i1 %or.cond399, label %134, label %.critedge -134: ; preds = %.lr.ph531 - %135 = load i32, ptr %.1281522530, align 1, !tbaa !3 +134: ; preds = %.lr.ph532 + %135 = load i32, ptr %.1281523531, align 1, !tbaa !3 %.not365 = icmp eq i32 %135, 0 br i1 %.not365, label %.critedge, label %136 136: ; preds = %134 - %137 = getelementptr inbounds nuw i8, ptr %.1281522530, i64 8 - %.not369513 = icmp ult ptr %137, %2 - br i1 %.not369513, label %.critedge10, label %.lr.ph516 + %137 = getelementptr inbounds nuw i8, ptr %.1281523531, i64 8 + %.not369514 = icmp ult ptr %137, %2 + br i1 %.not369514, label %.critedge10, label %.lr.ph517 -.lr.ph516: ; preds = %136, %.critedge12 - %.2282514 = phi ptr [ %151, %.critedge12 ], [ %137, %136 ] - %138 = ptrtoint ptr %.2282514 to i64 +.lr.ph517: ; preds = %136, %.critedge12 + %.2282515 = phi ptr [ %151, %.critedge12 ], [ %137, %136 ] + %138 = ptrtoint ptr %.2282515 to i64 %139 = add i64 %138, 2 %.not370 = icmp ule i64 %139, %128 %140 = icmp ugt i64 %139, %10 @@ -755,18 +755,18 @@ define internal fastcc range(i32 0, 2) i32 @pefromupx(ptr noundef %0, i32 nounde %or.cond401 = and i1 %141, %or.cond400 br i1 %or.cond401, label %142, label %.critedge10 -142: ; preds = %.lr.ph516 - %143 = load i8, ptr %.2282514, align 1, !tbaa !3 +142: ; preds = %.lr.ph517 + %143 = load i8, ptr %.2282515, align 1, !tbaa !3 %.not371 = icmp eq i8 %143, 0 br i1 %.not371, label %.critedge10, label %.preheader.preheader .preheader.preheader: ; preds = %142 - %scevgep = getelementptr i8, ptr %.2282514, i64 1 + %scevgep = getelementptr i8, ptr %.2282515, i64 1 %.not374 = icmp ult ptr %scevgep, %2 br label %.preheader .preheader: ; preds = %.preheader.preheader, %149 - %.2282.pn = phi ptr [ %.3283, %149 ], [ %.2282514, %.preheader.preheader ] + %.2282.pn = phi ptr [ %.3283, %149 ], [ %.2282515, %.preheader.preheader ] %.3283 = getelementptr inbounds nuw i8, ptr %.2282.pn, i64 1 br i1 %.not374, label %.critedge12, label %144 @@ -788,16 +788,16 @@ define internal fastcc range(i32 0, 2) i32 @pefromupx(ptr noundef %0, i32 nounde .critedge12: ; preds = %144, %.preheader, %149 %151 = getelementptr inbounds nuw i8, ptr %.2282.pn, i64 2 %.not369 = icmp ult ptr %151, %2 - br i1 %.not369, label %.critedge10, label %.lr.ph516 + br i1 %.not369, label %.critedge10, label %.lr.ph517 -.critedge10: ; preds = %142, %.critedge12, %.lr.ph516, %136 - %.2282.lcssa = phi ptr [ %137, %136 ], [ %.2282514, %.lr.ph516 ], [ %151, %.critedge12 ], [ %.2282514, %142 ] +.critedge10: ; preds = %142, %.critedge12, %.lr.ph517, %136 + %.2282.lcssa = phi ptr [ %137, %136 ], [ %.2282515, %.lr.ph516 ], [ %151, %.critedge12 ], [ %.2282515, %142 ] %152 = getelementptr inbounds nuw i8, ptr %.2282.lcssa, i64 1 %.not363 = icmp ult ptr %152, %2 - br i1 %.not363, label %.critedge, label %.lr.ph531 + br i1 %.not363, label %.critedge, label %.lr.ph532 -.critedge: ; preds = %.lr.ph531, %.critedge10, %134, %.lr.ph524 - %.1281.lcssa499 = phi ptr [ %126, %.lr.ph524 ], [ %.1281522530, %.lr.ph531 ], [ %152, %.critedge10 ], [ %.1281522530, %134 ] +.critedge: ; preds = %.lr.ph532, %.critedge10, %134, %.lr.ph525 + %.1281.lcssa499 = phi ptr [ %126, %.lr.ph524 ], [ %.1281523531, %.lr.ph531 ], [ %152, %.critedge10 ], [ %.1281523531, %134 ] %153 = getelementptr inbounds nuw i8, ptr %.1281.lcssa499, i64 4 %154 = icmp ult i32 %122, 248 %.not.i = icmp ult ptr %153, %2 @@ -865,7 +865,7 @@ checkpe.exit: ; preds = %.critedge.thread, % br label %.thread453 .thread453: ; preds = %95, %71, %._crit_edge, %60, %55, %checkpe.exit, %123, %113, %103, %.loopexit - %.1446 = phi i32 [ %100, %103 ], [ %.6451, %checkpe.exit ], [ %100, %123 ], [ %100, %113 ], [ %100, %.loopexit ], [ %.lcssa502602, %55 ], [ %.lcssa502602, %60 ], [ %.lcssa502, %._crit_edge ], [ %.lcssa502602, %71 ], [ %.lcssa502602, %95 ] + %.1446 = phi i32 [ %100, %103 ], [ %.6451, %checkpe.exit ], [ %100, %123 ], [ %100, %113 ], [ %100, %.loopexit ], [ %.lcssa502604, %55 ], [ %.lcssa502604, %60 ], [ %.lcssa502, %._crit_edge ], [ %.lcssa502604, %71 ], [ %.lcssa502604, %95 ] %.1 = phi i32 [ %.0441, %103 ], [ %.5443, %checkpe.exit ], [ %.0441, %123 ], [ %.0441, %113 ], [ %.0441, %.loopexit ], [ 0, %55 ], [ 0, %60 ], [ 0, %._crit_edge ], [ 0, %71 ], [ 0, %95 ] %.0288 = phi i32 [ 0, %103 ], [ %121, %checkpe.exit ], [ %121, %123 ], [ 0, %113 ], [ 0, %.loopexit ], [ 0, %55 ], [ 0, %60 ], [ 0, %._crit_edge ], [ 0, %71 ], [ 0, %95 ] %.0280 = phi ptr [ null, %103 ], [ %spec.select, %checkpe.exit ], [ null, %123 ], [ null, %113 ], [ null, %.loopexit ], [ null, %55 ], [ null, %60 ], [ null, %._crit_edge ], [ null, %71 ], [ null, %95 ] @@ -873,9 +873,9 @@ checkpe.exit: ; preds = %.critedge.thread, % %184 = icmp eq ptr %.0280, null %185 = icmp ugt i32 %8, 288 %or.cond14 = and i1 %185, %184 - br i1 %or.cond14, label %.lr.ph544, label %230 + br i1 %or.cond14, label %.lr.ph545, label %230 -.lr.ph544: ; preds = %.thread453 +.lr.ph545: ; preds = %.thread453 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.3) #8 %186 = add i32 %8, -288 %187 = zext i32 %186 to i64 @@ -883,25 +883,25 @@ checkpe.exit: ; preds = %.critedge.thread, % %189 = icmp ugt i32 %188, 247 %190 = zext i32 %188 to i64 %191 = add i64 %190, %10 - br i1 %189, label %.lr.ph544.split.us.preheader, label %.lr.ph544.split.preheader + br i1 %189, label %.lr.ph545.split.us.preheader, label %.lr.ph545.split.preheader -.lr.ph544.split.us.preheader: ; preds = %.lr.ph544 +.lr.ph545.split.us.preheader: ; preds = %.lr.ph545 %192 = getelementptr inbounds nuw i8, ptr %2, i64 %187 - br label %.lr.ph544.split.us + br label %.lr.ph545.split.us -.lr.ph544.split.preheader: ; preds = %.lr.ph544 +.lr.ph545.split.preheader: ; preds = %.lr.ph545 %193 = add i64 %10, %187 %194 = add i64 %193, -1 %195 = tail call i64 @llvm.usub.sat.i64(i64 %10, i64 %194) %196 = sub i64 0, %195 - %scevgep599 = getelementptr i8, ptr %2, i64 %196 + %scevgep601 = getelementptr i8, ptr %2, i64 %196 br label %checkpe.exit429 -.lr.ph544.split.us: ; preds = %.lr.ph544.split.us.preheader, %224 - %.5285542.us = phi ptr [ %225, %224 ], [ %192, %.lr.ph544.split.us.preheader ] - %.3541.us = phi i32 [ %.6444.ph.us, %224 ], [ %.1, %.lr.ph544.split.us.preheader ] - %.3448540.us = phi i32 [ %.7452.ph.us, %224 ], [ %.1446, %.lr.ph544.split.us.preheader ] - %197 = ptrtoint ptr %.5285542.us to i64 +.lr.ph545.split.us: ; preds = %.lr.ph545.split.us.preheader, %224 + %.5285543.us = phi ptr [ %225, %224 ], [ %192, %.lr.ph544.split.us.preheader ] + %.3542.us = phi i32 [ %.6444.ph.us, %224 ], [ %.1, %.lr.ph544.split.us.preheader ] + %.3448541.us = phi i32 [ %.7452.ph.us, %224 ], [ %.1446, %.lr.ph544.split.us.preheader ] + %197 = ptrtoint ptr %.5285543.us to i64 %198 = add i64 %197, 248 %.not47.i418.us = icmp ule i64 %198, %191 %199 = icmp ugt i64 %198, %10 @@ -910,23 +910,23 @@ checkpe.exit: ; preds = %.critedge.thread, % %or.cond54.i420.us = and i1 %200, %or.cond.i419.us br i1 %or.cond54.i420.us, label %201, label %224 -201: ; preds = %.lr.ph544.split.us - %202 = load i32, ptr %.5285542.us, align 1, !tbaa !3 +201: ; preds = %.lr.ph545.split.us + %202 = load i32, ptr %.5285543.us, align 1, !tbaa !3 %.not48.i421.us = icmp eq i32 %202, 17744 br i1 %.not48.i421.us, label %203, label %224 203: ; preds = %201 - %204 = getelementptr inbounds nuw i8, ptr %.5285542.us, i64 56 + %204 = getelementptr inbounds nuw i8, ptr %.5285543.us, i64 56 %205 = load i32, ptr %204, align 1, !tbaa !3 %.not49.i422.us = icmp eq i32 %205, 0 br i1 %.not49.i422.us, label %224, label %206 206: ; preds = %203 - %207 = getelementptr inbounds nuw i8, ptr %.5285542.us, i64 248 - %208 = getelementptr inbounds nuw i8, ptr %.5285542.us, i64 6 + %207 = getelementptr inbounds nuw i8, ptr %.5285543.us, i64 248 + %208 = getelementptr inbounds nuw i8, ptr %.5285543.us, i64 6 %209 = load i8, ptr %208, align 1, !tbaa !3 %210 = zext i8 %209 to i32 - %211 = getelementptr inbounds nuw i8, ptr %.5285542.us, i64 7 + %211 = getelementptr inbounds nuw i8, ptr %.5285543.us, i64 7 %212 = load i8, ptr %211, align 1, !tbaa !3 %213 = zext i8 %212 to i32 %214 = shl nuw nsw i32 %213, 8 @@ -950,15 +950,15 @@ checkpe.exit: ; preds = %.critedge.thread, % %or.cond56.i427.us = and i1 %223, %or.cond55.i426.us br i1 %or.cond56.i427.us, label %checkpe.exit429, label %224 -224: ; preds = %218, %216, %206, %203, %201, %.lr.ph544.split.us - %.7452.ph.us = phi i32 [ %.3448540.us, %.lr.ph544.split.us ], [ %.3448540.us, %201 ], [ %215, %218 ], [ %215, %216 ], [ 0, %206 ], [ %.3448540.us, %203 ] - %.6444.ph.us = phi i32 [ %.3541.us, %.lr.ph544.split.us ], [ %.3541.us, %201 ], [ %205, %218 ], [ %205, %216 ], [ %205, %206 ], [ 0, %203 ] - %225 = getelementptr inbounds i8, ptr %.5285542.us, i64 -1 +224: ; preds = %218, %216, %206, %203, %201, %.lr.ph545.split.us + %.7452.ph.us = phi i32 [ %.3448541.us, %.lr.ph544.split.us ], [ %.3448541.us, %201 ], [ %215, %218 ], [ %215, %216 ], [ 0, %206 ], [ %.3448541.us, %203 ] + %.6444.ph.us = phi i32 [ %.3542.us, %.lr.ph544.split.us ], [ %.3542.us, %201 ], [ %205, %218 ], [ %205, %216 ], [ %205, %206 ], [ 0, %203 ] + %225 = getelementptr inbounds i8, ptr %.5285543.us, i64 -1 %226 = icmp ugt ptr %225, %2 - br i1 %226, label %.lr.ph544.split.us, label %checkpe.exit429 + br i1 %226, label %.lr.ph545.split.us, label %checkpe.exit429 -checkpe.exit429: ; preds = %224, %218, %.lr.ph544.split.preheader - %.5285.lcssa = phi ptr [ %scevgep599, %.lr.ph544.split.preheader ], [ %.5285542.us, %218 ], [ %225, %224 ] +checkpe.exit429: ; preds = %224, %218, %.lr.ph545.split.preheader + %.5285.lcssa = phi ptr [ %scevgep601, %.lr.ph544.split.preheader ], [ %.5285543.us, %218 ], [ %225, %224 ] %.4449 = phi i32 [ %.1446, %.lr.ph544.split.preheader ], [ %215, %218 ], [ %.7452.ph.us, %224 ] %.4442 = phi i32 [ %.1, %.lr.ph544.split.preheader ], [ %205, %218 ], [ %.6444.ph.us, %224 ] %.3277 = phi ptr [ null, %.lr.ph544.split.preheader ], [ %207, %218 ], [ null, %224 ] @@ -1036,40 +1036,40 @@ checkpe.exit429: ; preds = %224, %218, %.lr.ph5 259: ; preds = %249, %252 %260 = phi i32 [ %258, %252 ], [ %251, %249 ] - %.not579 = icmp eq i32 %spec.select482, 0 - br i1 %.not579, label %._crit_edge567, label %.lr.ph566 + %.not581 = icmp eq i32 %spec.select482, 0 + br i1 %.not581, label %._crit_edge568, label %.lr.ph567 -.lr.ph566: ; preds = %259 +.lr.ph567: ; preds = %259 %261 = zext i32 %.1289.fr to i64 %262 = icmp eq i32 %.1289.fr, 0 %263 = zext i32 %5 to i64 %264 = add nuw nsw i64 %261, %263 - br i1 %262, label %.split, label %.lr.ph566.split + br i1 %262, label %.split, label %.lr.ph567.split -.lr.ph566.split: ; preds = %.lr.ph566, %299 - %.4278564 = phi ptr [ %300, %299 ], [ %.1275, %.lr.ph566 ] - %.0286563 = phi i32 [ %301, %299 ], [ 0, %.lr.ph566 ] - %.0293562 = phi i32 [ %297, %299 ], [ %260, %.lr.ph566 ] - %265 = getelementptr inbounds nuw i8, ptr %.4278564, i64 8 +.lr.ph567.split: ; preds = %.lr.ph567, %299 + %.4278565 = phi ptr [ %300, %299 ], [ %.1275, %.lr.ph566 ] + %.0286564 = phi i32 [ %301, %299 ], [ 0, %.lr.ph566 ] + %.0293563 = phi i32 [ %297, %299 ], [ %260, %.lr.ph566 ] + %265 = getelementptr inbounds nuw i8, ptr %.4278565, i64 8 %266 = load i32, ptr %265, align 1, !tbaa !3 br i1 %.not383, label %278, label %267 -267: ; preds = %.lr.ph566.split +267: ; preds = %.lr.ph567.split %268 = udiv i32 %266, %.2 %269 = urem i32 %266, %.2 %270 = icmp ne i32 %269, 0 %271 = zext i1 %270 to i32 %272 = add i32 %268, %271 %273 = mul i32 %272, %.2 - %274 = getelementptr inbounds nuw i8, ptr %.4278564, i64 12 + %274 = getelementptr inbounds nuw i8, ptr %.4278565, i64 12 %275 = load i32, ptr %274, align 1, !tbaa !3 %.fr = freeze i32 %275 %276 = urem i32 %.fr, %.2 %277 = sub nuw i32 %.fr, %276 br label %281 -278: ; preds = %.lr.ph566.split - %279 = getelementptr inbounds nuw i8, ptr %.4278564, i64 12 +278: ; preds = %.lr.ph567.split + %279 = getelementptr inbounds nuw i8, ptr %.4278565, i64 12 %280 = load i32, ptr %279, align 1, !tbaa !3 br label %281 @@ -1093,31 +1093,31 @@ checkpe.exit429: ; preds = %224, %218, %.lr.ph5 %or.cond409 = select i1 %or.cond408, i1 %291, i1 false br i1 %or.cond409, label %292, label %.split -.split: ; preds = %281, %286, %.lr.ph566 - %.us-phi569 = phi i32 [ 0, %.lr.ph566 ], [ %.0286563, %286 ], [ %.0286563, %281 ] - tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.9, i32 noundef %.us-phi569) #8 +.split: ; preds = %281, %286, %.lr.ph567 + %.us-phi570 = phi i32 [ 0, %.lr.ph566 ], [ %.0286564, %286 ], [ %.0286564, %281 ] + tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.9, i32 noundef %.us-phi570) #8 br label %.thread472 292: ; preds = %286 - %293 = getelementptr inbounds nuw i8, ptr %.4278564, i64 8 + %293 = getelementptr inbounds nuw i8, ptr %.4278565, i64 8 store i32 %282, ptr %293, align 1, !tbaa !3 - %294 = getelementptr inbounds nuw i8, ptr %.4278564, i64 12 + %294 = getelementptr inbounds nuw i8, ptr %.4278565, i64 12 store i32 %283, ptr %294, align 1, !tbaa !3 - %295 = getelementptr inbounds nuw i8, ptr %.4278564, i64 16 + %295 = getelementptr inbounds nuw i8, ptr %.4278565, i64 16 store i32 %282, ptr %295, align 1, !tbaa !3 - %296 = getelementptr inbounds nuw i8, ptr %.4278564, i64 20 - store i32 %.0293562, ptr %296, align 1, !tbaa !3 - %297 = add i32 %282, %.0293562 - %298 = icmp ult i32 %297, %.0293562 + %296 = getelementptr inbounds nuw i8, ptr %.4278565, i64 20 + store i32 %.0293563, ptr %296, align 1, !tbaa !3 + %297 = add i32 %282, %.0293563 + %298 = icmp ult i32 %297, %.0293563 br i1 %298, label %.thread472, label %299 299: ; preds = %292 - %300 = getelementptr inbounds nuw i8, ptr %.4278564, i64 40 - %301 = add nuw i32 %.0286563, 1 + %300 = getelementptr inbounds nuw i8, ptr %.4278565, i64 40 + %301 = add nuw i32 %.0286564, 1 %exitcond.not = icmp eq i32 %301, %spec.select482 - br i1 %exitcond.not, label %._crit_edge567, label %.lr.ph566.split + br i1 %exitcond.not, label %._crit_edge568, label %.lr.ph567.split -._crit_edge567: ; preds = %299, %259 +._crit_edge568: ; preds = %299, %259 %.0293.lcssa = phi i32 [ %260, %259 ], [ %297, %299 ] %302 = getelementptr inbounds nuw i8, ptr %.4284, i64 8 store i32 1296124995, ptr %302, align 1, !tbaa !3 @@ -1128,32 +1128,32 @@ checkpe.exit429: ; preds = %224, %218, %.lr.ph5 %.not384 = icmp eq ptr %305, null br i1 %.not384, label %306, label %307 -306: ; preds = %._crit_edge567 +306: ; preds = %._crit_edge568 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.5) #8 br label %.thread472 -307: ; preds = %._crit_edge567 +307: ; preds = %._crit_edge568 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(208) %305, ptr noundef nonnull align 1 dereferenceable(208) @.str.6, i64 208, i1 false) %308 = getelementptr inbounds nuw i8, ptr %305, i64 208 %309 = mul i32 %spec.select482, 40 %310 = add i32 %309, 248 %311 = zext i32 %310 to i64 tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %308, ptr nonnull align 1 %.4284, i64 %311, i1 false) - br i1 %.not579, label %._crit_edge575, label %.lr.ph574 + br i1 %.not581, label %._crit_edge576, label %.lr.ph575 -.lr.ph574: ; preds = %307 +.lr.ph575: ; preds = %307 %312 = getelementptr inbounds nuw i8, ptr %.4284, i64 248 %313 = zext i32 %5 to i64 %314 = sub nsw i64 0, %313 - %invariant.gep576 = getelementptr i8, ptr %2, i64 %314 + %invariant.gep577 = getelementptr i8, ptr %2, i64 %314 br label %315 -315: ; preds = %.lr.ph574, %333 - %.6572 = phi ptr [ %312, %.lr.ph574 ], [ %338, %333 ] - %.1287571 = phi i32 [ 0, %.lr.ph574 ], [ %339, %333 ] - %316 = getelementptr inbounds nuw i8, ptr %.6572, i64 20 +315: ; preds = %.lr.ph575, %333 + %.6573 = phi ptr [ %312, %.lr.ph574 ], [ %338, %333 ] + %.1287572 = phi i32 [ 0, %.lr.ph574 ], [ %339, %333 ] + %316 = getelementptr inbounds nuw i8, ptr %.6573, i64 20 %317 = load i32, ptr %316, align 1, !tbaa !3 - %318 = getelementptr inbounds nuw i8, ptr %.6572, i64 16 + %318 = getelementptr inbounds nuw i8, ptr %.6573, i64 16 %319 = load i32, ptr %318, align 1, !tbaa !3 %320 = icmp ugt i32 %317, %.0293.lcssa %321 = icmp ugt i32 %319, %.0293.lcssa @@ -1168,7 +1168,7 @@ checkpe.exit429: ; preds = %224, %218, %.lr.ph5 br label %.thread472 326: ; preds = %315 - %327 = getelementptr inbounds nuw i8, ptr %.6572, i64 12 + %327 = getelementptr inbounds nuw i8, ptr %.6573, i64 12 %328 = load i32, ptr %327, align 1, !tbaa !3 %329 = sub i32 %328, %5 %330 = load i32, ptr %3, align 4, !tbaa !6 @@ -1183,26 +1183,26 @@ checkpe.exit429: ; preds = %224, %218, %.lr.ph5 %334 = zext i32 %317 to i64 %335 = getelementptr inbounds nuw i8, ptr %305, i64 %334 %336 = zext i32 %328 to i64 - %gep577 = getelementptr i8, ptr %invariant.gep576, i64 %336 + %gep578 = getelementptr i8, ptr %invariant.gep577, i64 %336 %337 = zext i32 %319 to i64 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %335, ptr align 1 %gep577, i64 %337, i1 false) - %338 = getelementptr inbounds nuw i8, ptr %.6572, i64 40 - %339 = add nuw i32 %.1287571, 1 - %exitcond600.not = icmp eq i32 %339, %spec.select482 - br i1 %exitcond600.not, label %._crit_edge575, label %315 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %335, ptr align 1 %gep578, i64 %337, i1 false) + %338 = getelementptr inbounds nuw i8, ptr %.6573, i64 40 + %339 = add nuw i32 %.1287572, 1 + %exitcond602.not = icmp eq i32 %339, %spec.select482 + br i1 %exitcond602.not, label %._crit_edge576, label %315 -._crit_edge575: ; preds = %333, %307 +._crit_edge576: ; preds = %333, %307 %340 = load i32, ptr %3, align 4, !tbaa !6 %341 = add i32 %340, 8192 %342 = icmp ugt i32 %.0293.lcssa, %341 br i1 %342, label %343, label %344 -343: ; preds = %._crit_edge575 +343: ; preds = %._crit_edge576 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.10) #8 tail call void @free(ptr noundef %305) #8 br label %.thread472 -344: ; preds = %._crit_edge575 +344: ; preds = %._crit_edge576 tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %2, ptr nonnull align 1 %305, i64 %304, i1 false) store i32 %.0293.lcssa, ptr %3, align 4, !tbaa !6 tail call void @free(ptr noundef %305) #8 diff --git a/bench/cmake/optimized/huf_compress.ll b/bench/cmake/optimized/huf_compress.ll index fd8424e7ec3..83a160e0bb9 100644 --- a/bench/cmake/optimized/huf_compress.ll +++ b/bench/cmake/optimized/huf_compress.ll @@ -2633,75 +2633,75 @@ define internal fastcc i64 @HUF_compress4X_usingCTable_internal(ptr noundef %0, %12 = getelementptr inbounds nuw i8, ptr %0, i64 6 %13 = ptrtoint ptr %11 to i64 %gepdiff = add i64 %1, -6 - %14 = tail call fastcc i64 @HUF_compress1X_usingCTable_internal(ptr noundef nonnull %12, i64 noundef %gepdiff, ptr noundef %2, i64 noundef %7, ptr noundef %4) - %15 = icmp ult i64 %14, -119 - br i1 %15, label %16, label %.thread - -16: ; preds = %10 - %17 = add i64 %14, -65536 - %or.cond = icmp ult i64 %17, -65535 - br i1 %or.cond, label %.thread, label %18 - -18: ; preds = %16 - %19 = trunc nuw i64 %14 to i16 - store i16 %19, ptr %0, align 1, !tbaa !17 - %20 = getelementptr inbounds nuw i8, ptr %12, i64 %14 - %21 = getelementptr inbounds nuw i8, ptr %2, i64 %7 - %gepdiff127 = sub i64 %gepdiff, %14 - %22 = tail call fastcc i64 @HUF_compress1X_usingCTable_internal(ptr noundef nonnull %20, i64 noundef %gepdiff127, ptr noundef %21, i64 noundef %7, ptr noundef %4) - %23 = icmp ult i64 %22, -119 - br i1 %23, label %24, label %.thread - -24: ; preds = %18 - %25 = add i64 %22, -65536 - %or.cond6 = icmp ult i64 %25, -65535 - br i1 %or.cond6, label %.thread, label %26 - -26: ; preds = %24 - %27 = getelementptr inbounds nuw i8, ptr %0, i64 2 - %28 = trunc nuw i64 %22 to i16 - store i16 %28, ptr %27, align 1, !tbaa !17 - %29 = getelementptr inbounds nuw i8, ptr %20, i64 %22 - %30 = getelementptr inbounds nuw i8, ptr %21, i64 %7 - %31 = add nuw nsw i64 %14, %22 - %gepdiff128 = sub i64 %gepdiff, %31 - %32 = tail call fastcc i64 @HUF_compress1X_usingCTable_internal(ptr noundef nonnull %29, i64 noundef %gepdiff128, ptr noundef %30, i64 noundef %7, ptr noundef %4) - %33 = icmp ult i64 %32, -119 - br i1 %33, label %34, label %.thread - -34: ; preds = %26 - %35 = add i64 %32, -65536 - %or.cond8 = icmp ult i64 %35, -65535 - br i1 %or.cond8, label %.thread, label %36 - -36: ; preds = %34 - %37 = getelementptr inbounds nuw i8, ptr %0, i64 4 - %38 = trunc nuw i64 %32 to i16 - store i16 %38, ptr %37, align 1, !tbaa !17 - %39 = getelementptr inbounds nuw i8, ptr %29, i64 %32 - %40 = getelementptr inbounds nuw i8, ptr %30, i64 %7 - %41 = ptrtoint ptr %39 to i64 - %42 = sub i64 %13, %41 + %12 = tail call fastcc i64 @HUF_compress1X_usingCTable_internal(ptr noundef nonnull %12, i64 noundef %gepdiff, ptr noundef %2, i64 noundef %7, ptr noundef %4) + %13 = icmp ult i64 %12, -119 + br i1 %13, label %14, label %.thread + +14: ; preds = %10 + %15 = add i64 %12, -65536 + %or.cond = icmp ult i64 %15, -65535 + br i1 %or.cond, label %.thread, label %16 + +16: ; preds = %14 + %17 = trunc nuw i64 %12 to i16 + store i16 %17, ptr %0, align 1, !tbaa !17 + %18 = getelementptr inbounds nuw i8, ptr %12, i64 %12 + %19 = getelementptr inbounds nuw i8, ptr %2, i64 %7 + %gepdiff127 = sub i64 %gepdiff, %12 + %20 = tail call fastcc i64 @HUF_compress1X_usingCTable_internal(ptr noundef nonnull %18, i64 noundef %gepdiff127, ptr noundef %19, i64 noundef %7, ptr noundef %4) + %21 = icmp ult i64 %20, -119 + br i1 %21, label %22, label %.thread + +22: ; preds = %16 + %23 = add i64 %20, -65536 + %or.cond6 = icmp ult i64 %23, -65535 + br i1 %or.cond6, label %.thread, label %24 + +24: ; preds = %22 + %25 = getelementptr inbounds nuw i8, ptr %0, i64 2 + %26 = trunc nuw i64 %20 to i16 + store i16 %26, ptr %25, align 1, !tbaa !17 + %27 = getelementptr inbounds nuw i8, ptr %18, i64 %20 + %28 = getelementptr inbounds nuw i8, ptr %19, i64 %7 + %29 = add nuw nsw i64 %12, %20 + %gepdiff128 = sub i64 %gepdiff, %29 + %30 = tail call fastcc i64 @HUF_compress1X_usingCTable_internal(ptr noundef nonnull %27, i64 noundef %gepdiff128, ptr noundef %28, i64 noundef %7, ptr noundef %4) + %31 = icmp ult i64 %30, -119 + br i1 %31, label %32, label %.thread + +32: ; preds = %24 + %33 = add i64 %30, -65536 + %or.cond8 = icmp ult i64 %33, -65535 + br i1 %or.cond8, label %.thread, label %34 + +34: ; preds = %32 + %35 = getelementptr inbounds nuw i8, ptr %0, i64 4 + %36 = trunc nuw i64 %30 to i16 + store i16 %36, ptr %35, align 1, !tbaa !17 + %37 = getelementptr inbounds nuw i8, ptr %27, i64 %30 + %38 = getelementptr inbounds nuw i8, ptr %28, i64 %7 + %41 = ptrtoint ptr %37 to i64 + %gepdiff129 = sub i64 %13, %41 %.neg = mul i64 %7, -3 %gepdiff106 = add i64 %.neg, %3 - %43 = tail call fastcc i64 @HUF_compress1X_usingCTable_internal(ptr noundef nonnull %39, i64 noundef %42, ptr noundef %40, i64 noundef %gepdiff106, ptr noundef %4) - %44 = icmp ult i64 %43, -119 - br i1 %44, label %45, label %.thread + %40 = tail call fastcc i64 @HUF_compress1X_usingCTable_internal(ptr noundef nonnull %37, i64 noundef %gepdiff129, ptr noundef %38, i64 noundef %gepdiff106, ptr noundef %4) + %41 = icmp ult i64 %40, -119 + br i1 %41, label %42, label %.thread -45: ; preds = %36 - %46 = add i64 %43, -65536 - %or.cond10 = icmp ult i64 %46, -65535 - br i1 %or.cond10, label %.thread, label %47 +42: ; preds = %34 + %43 = add i64 %40, -65536 + %or.cond10 = icmp ult i64 %43, -65535 + br i1 %or.cond10, label %.thread, label %44 -47: ; preds = %45 +44: ; preds = %42 %48 = getelementptr inbounds nuw i8, ptr %39, i64 %43 %49 = ptrtoint ptr %48 to i64 %50 = ptrtoint ptr %0 to i64 %51 = sub i64 %49, %50 br label %.thread -.thread: ; preds = %45, %36, %34, %26, %24, %18, %16, %10, %5, %47 - %.0 = phi i64 [ %51, %47 ], [ 0, %5 ], [ 0, %16 ], [ %14, %10 ], [ 0, %24 ], [ %22, %18 ], [ 0, %34 ], [ %32, %26 ], [ 0, %45 ], [ %43, %36 ] +.thread: ; preds = %42, %34, %32, %24, %22, %16, %14, %10, %5, %44 + %.0 = phi i64 [ %51, %47 ], [ 0, %5 ], [ 0, %16 ], [ %12, %10 ], [ 0, %24 ], [ %20, %18 ], [ 0, %34 ], [ %30, %26 ], [ 0, %45 ], [ %40, %36 ] ret i64 %.0 } diff --git a/bench/cmake/optimized/zstd_decompress.ll b/bench/cmake/optimized/zstd_decompress.ll index 81c928461e1..e55cee63923 100644 --- a/bench/cmake/optimized/zstd_decompress.ll +++ b/bench/cmake/optimized/zstd_decompress.ll @@ -2417,42 +2417,42 @@ define dso_local i64 @ZSTD_loadDEntropy(ptr noundef %0, ptr noundef %1, i64 noun %17 = getelementptr inbounds nuw i8, ptr %0, i64 10264 %18 = ptrtoint ptr %13 to i64 %gepdiff = add i64 %2, -8 - %19 = tail call i64 @HUF_readDTableX2_wksp(ptr noundef nonnull %17, ptr noundef nonnull %16, i64 noundef %gepdiff, ptr noundef %0, i64 noundef 10264, i32 noundef 0) #15 - %20 = icmp ult i64 %19, -119 - %21 = getelementptr inbounds nuw i8, ptr %16, i64 %19 - br i1 %20, label %22, label %.loopexit + %18 = tail call i64 @HUF_readDTableX2_wksp(ptr noundef nonnull %17, ptr noundef nonnull %16, i64 noundef %gepdiff, ptr noundef %0, i64 noundef 10264, i32 noundef 0) #15 + %19 = icmp ult i64 %18, -119 + %20 = getelementptr inbounds nuw i8, ptr %16, i64 %18 + br i1 %19, label %21, label %.loopexit -22: ; preds = %15 +21: ; preds = %15 call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %4) #15 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #15 store i32 31, ptr %5, align 4, !tbaa !41 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #15 - %gepdiff103 = sub i64 %gepdiff, %19 - %23 = call i64 @FSE_readNCount(ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef nonnull %21, i64 noundef %gepdiff103) #15 - %24 = icmp ult i64 %23, -119 - br i1 %24, label %25, label %.thread - -25: ; preds = %22 - %26 = load i32, ptr %5, align 4, !tbaa !41 - %27 = icmp ugt i32 %26, 31 - br i1 %27, label %.thread, label %28 - -28: ; preds = %25 - %29 = load i32, ptr %6, align 4, !tbaa !41 - %30 = icmp ugt i32 %29, 8 - br i1 %30, label %.thread, label %31 - -.thread: ; preds = %22, %25, %28 + %gepdiff103 = sub i64 %gepdiff, %18 + %22 = call i64 @FSE_readNCount(ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef nonnull %20, i64 noundef %gepdiff103) #15 + %23 = icmp ult i64 %22, -119 + br i1 %23, label %24, label %.thread + +24: ; preds = %21 + %25 = load i32, ptr %5, align 4, !tbaa !41 + %26 = icmp ugt i32 %25, 31 + br i1 %26, label %.thread, label %27 + +27: ; preds = %24 + %28 = load i32, ptr %6, align 4, !tbaa !41 + %29 = icmp ugt i32 %28, 8 + br i1 %29, label %.thread, label %30 + +.thread: ; preds = %21, %24, %27 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #15 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #15 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %4) #15 br label %.loopexit -31: ; preds = %28 - %32 = getelementptr inbounds nuw i8, ptr %0, i64 4104 - %33 = getelementptr inbounds nuw i8, ptr %0, i64 26664 - call void @ZSTD_buildFSETable(ptr noundef nonnull %32, ptr noundef nonnull %4, i32 noundef %26, ptr noundef nonnull @OF_base, ptr noundef nonnull @OF_bits, i32 noundef %29, ptr noundef nonnull %33, i64 noundef 628, i32 noundef 0) #15 - %34 = getelementptr inbounds nuw i8, ptr %21, i64 %23 +30: ; preds = %27 + %31 = getelementptr inbounds nuw i8, ptr %0, i64 4104 + %32 = getelementptr inbounds nuw i8, ptr %0, i64 26664 + call void @ZSTD_buildFSETable(ptr noundef nonnull %31, ptr noundef nonnull %4, i32 noundef %25, ptr noundef nonnull @OF_base, ptr noundef nonnull @OF_bits, i32 noundef %28, ptr noundef nonnull %32, i64 noundef 628, i32 noundef 0) #15 + %33 = getelementptr inbounds nuw i8, ptr %20, i64 %22 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #15 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #15 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %4) #15 @@ -2460,32 +2460,32 @@ define dso_local i64 @ZSTD_loadDEntropy(ptr noundef %0, ptr noundef %1, i64 noun call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #15 store i32 52, ptr %8, align 4, !tbaa !41 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #15 - %35 = add i64 %19, %23 - %gepdiff104 = sub i64 %gepdiff, %35 - %36 = call i64 @FSE_readNCount(ptr noundef nonnull %7, ptr noundef nonnull %8, ptr noundef nonnull %9, ptr noundef nonnull %34, i64 noundef %gepdiff104) #15 - %37 = icmp ult i64 %36, -119 - br i1 %37, label %38, label %.thread93 - -38: ; preds = %31 - %39 = load i32, ptr %8, align 4, !tbaa !41 - %40 = icmp ugt i32 %39, 52 - br i1 %40, label %.thread93, label %41 - -41: ; preds = %38 - %42 = load i32, ptr %9, align 4, !tbaa !41 - %43 = icmp ugt i32 %42, 9 - br i1 %43, label %.thread93, label %44 - -.thread93: ; preds = %31, %38, %41 + %34 = add i64 %18, %22 + %gepdiff104 = sub i64 %gepdiff, %34 + %35 = call i64 @FSE_readNCount(ptr noundef nonnull %7, ptr noundef nonnull %8, ptr noundef nonnull %9, ptr noundef nonnull %33, i64 noundef %gepdiff104) #15 + %36 = icmp ult i64 %35, -119 + br i1 %36, label %37, label %.thread93 + +37: ; preds = %30 + %38 = load i32, ptr %8, align 4, !tbaa !41 + %39 = icmp ugt i32 %38, 52 + br i1 %39, label %.thread93, label %40 + +40: ; preds = %37 + %41 = load i32, ptr %9, align 4, !tbaa !41 + %42 = icmp ugt i32 %41, 9 + br i1 %42, label %.thread93, label %43 + +.thread93: ; preds = %30, %37, %40 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #15 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #15 call void @llvm.lifetime.end.p0(i64 106, ptr nonnull %7) #15 br label %.loopexit -44: ; preds = %41 - %45 = getelementptr inbounds nuw i8, ptr %0, i64 6160 - call void @ZSTD_buildFSETable(ptr noundef nonnull %45, ptr noundef nonnull %7, i32 noundef %39, ptr noundef nonnull @ML_base, ptr noundef nonnull @ML_bits, i32 noundef %42, ptr noundef nonnull %33, i64 noundef 628, i32 noundef 0) #15 - %46 = getelementptr inbounds nuw i8, ptr %34, i64 %36 +43: ; preds = %40 + %44 = getelementptr inbounds nuw i8, ptr %0, i64 6160 + call void @ZSTD_buildFSETable(ptr noundef nonnull %44, ptr noundef nonnull %7, i32 noundef %38, ptr noundef nonnull @ML_base, ptr noundef nonnull @ML_bits, i32 noundef %41, ptr noundef nonnull %32, i64 noundef 628, i32 noundef 0) #15 + %45 = getelementptr inbounds nuw i8, ptr %33, i64 %35 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #15 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #15 call void @llvm.lifetime.end.p0(i64 106, ptr nonnull %7) #15 @@ -2493,39 +2493,39 @@ define dso_local i64 @ZSTD_loadDEntropy(ptr noundef %0, ptr noundef %1, i64 noun call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #15 store i32 35, ptr %11, align 4, !tbaa !41 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #15 - %47 = ptrtoint ptr %46 to i64 - %48 = sub i64 %18, %47 - %49 = call i64 @FSE_readNCount(ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull %46, i64 noundef %48) #15 - %50 = icmp ult i64 %49, -119 - br i1 %50, label %51, label %.thread97 - -51: ; preds = %44 - %52 = load i32, ptr %11, align 4, !tbaa !41 - %53 = icmp ugt i32 %52, 35 - br i1 %53, label %.thread97, label %54 - -54: ; preds = %51 - %55 = load i32, ptr %12, align 4, !tbaa !41 - %56 = icmp ugt i32 %55, 9 - br i1 %56, label %.thread97, label %57 - -.thread97: ; preds = %44, %51, %54 + %47 = ptrtoint ptr %45 to i64 + %gepdiff105 = sub i64 %18, %47 + %47 = call i64 @FSE_readNCount(ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull %45, i64 noundef %gepdiff105) #15 + %48 = icmp ult i64 %47, -119 + br i1 %48, label %49, label %.thread97 + +49: ; preds = %43 + %50 = load i32, ptr %11, align 4, !tbaa !41 + %51 = icmp ugt i32 %50, 35 + br i1 %51, label %.thread97, label %52 + +52: ; preds = %49 + %53 = load i32, ptr %12, align 4, !tbaa !41 + %54 = icmp ugt i32 %53, 9 + br i1 %54, label %.thread97, label %55 + +.thread97: ; preds = %43, %49, %52 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #15 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #15 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %10) #15 br label %.loopexit -57: ; preds = %54 - call void @ZSTD_buildFSETable(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %52, ptr noundef nonnull @LL_base, ptr noundef nonnull @LL_bits, i32 noundef %55, ptr noundef nonnull %33, i64 noundef 628, i32 noundef 0) #15 - %58 = getelementptr inbounds nuw i8, ptr %46, i64 %49 +55: ; preds = %52 + call void @ZSTD_buildFSETable(ptr noundef nonnull %0, ptr noundef nonnull %10, i32 noundef %50, ptr noundef nonnull @LL_base, ptr noundef nonnull @LL_bits, i32 noundef %53, ptr noundef nonnull %32, i64 noundef 628, i32 noundef 0) #15 + %56 = getelementptr inbounds nuw i8, ptr %45, i64 %47 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #15 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #15 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %10) #15 - %59 = getelementptr inbounds nuw i8, ptr %58, i64 12 - %60 = icmp ugt ptr %59, %13 - br i1 %60, label %.loopexit, label %61 + %57 = getelementptr inbounds nuw i8, ptr %56, i64 12 + %58 = icmp ugt ptr %57, %13 + br i1 %58, label %.loopexit, label %59 -61: ; preds = %57 +59: ; preds = %55 %62 = ptrtoint ptr %59 to i64 %63 = sub i64 %18, %62 %64 = getelementptr inbounds nuw i8, ptr %0, i64 26652 @@ -2533,8 +2533,8 @@ define dso_local i64 @ZSTD_loadDEntropy(ptr noundef %0, ptr noundef %1, i64 noun 65: ; preds = %61, %.critedge %indvars.iv = phi i64 [ 0, %61 ], [ %indvars.iv.next, %.critedge ] - %.469111 = phi ptr [ %58, %61 ], [ %69, %.critedge ] - %.469.val = load i32, ptr %.469111, align 1, !tbaa !41 + %indvars.iv = phi ptr [ %58, %61 ], [ %69, %.critedge ] + %.469.val = load i32, ptr %indvars.iv, align 1, !tbaa !41 %66 = icmp eq i32 %.469.val, 0 %67 = zext i32 %.469.val to i64 %68 = icmp ult i64 %63, %67 @@ -2542,21 +2542,21 @@ define dso_local i64 @ZSTD_loadDEntropy(ptr noundef %0, ptr noundef %1, i64 noun br i1 %or.cond, label %.loopexit, label %.critedge .critedge: ; preds = %65 - %69 = getelementptr inbounds nuw i8, ptr %.469111, i64 4 - %70 = getelementptr inbounds nuw [3 x i32], ptr %64, i64 0, i64 %indvars.iv - store i32 %.469.val, ptr %70, align 4, !tbaa !41 + %66 = getelementptr inbounds nuw i8, ptr %.469111, i64 4 + %67 = getelementptr inbounds nuw [3 x i32], ptr %64, i64 0, i64 %indvars.iv + store i32 %.469.val, ptr %67, align 4, !tbaa !41 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond = icmp eq i64 %indvars.iv.next, 3 - br i1 %exitcond, label %71, label %65, !llvm.loop !114 + br i1 %exitcond, label %68, label %65, !llvm.loop !114 -71: ; preds = %.critedge - %72 = ptrtoint ptr %69 to i64 - %73 = ptrtoint ptr %1 to i64 - %74 = sub i64 %72, %73 +68: ; preds = %.critedge + %69 = ptrtoint ptr %66 to i64 + %70 = ptrtoint ptr %1 to i64 + %71 = sub i64 %69, %70 br label %.loopexit -.loopexit: ; preds = %65, %.thread97, %.thread93, %.thread, %57, %3, %15, %71 - %.0 = phi i64 [ %74, %71 ], [ -30, %15 ], [ -30, %3 ], [ -30, %57 ], [ -30, %.thread ], [ -30, %.thread93 ], [ -30, %.thread97 ], [ -30, %65 ] +.loopexit: ; preds = %65, %.thread97, %.thread93, %.thread, %55, %3, %15, %68 + %.0 = phi i64 [ %71, %71 ], [ -30, %15 ], [ -30, %3 ], [ -30, %57 ], [ -30, %.thread ], [ -30, %.thread93 ], [ -30, %.thread97 ], [ -30, %65 ] ret i64 %.0 } diff --git a/bench/darktable/optimized/export.ll b/bench/darktable/optimized/export.ll index a1f00a79ed7..bdc79413e5d 100644 --- a/bench/darktable/optimized/export.ll +++ b/bench/darktable/optimized/export.ll @@ -2963,123 +2963,123 @@ define void @init_presets(ptr noundef readonly captures(none) %0) local_unnamed_ store i32 %105, ptr %4, align 4, !tbaa !116 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #19 store i64 0, ptr %5, align 8, !tbaa !134 - %109 = call noalias ptr @malloc(i64 noundef %100) #22 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %109, ptr align 1 %99, i64 %100, i1 false) - %110 = icmp slt i32 %92, %105 - br i1 %110, label %.lr.ph, label %._crit_edge + %112 = call noalias ptr @malloc(i64 noundef %100) #22 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %112, ptr align 1 %99, i64 %100, i1 false) + %113 = icmp slt i32 %92, %105 + br i1 %113, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %86 - %111 = getelementptr inbounds nuw i8, ptr %82, i64 104 - %112 = load ptr, ptr %111, align 8, !tbaa !135 - %.not183231 = icmp eq ptr %112, null + %114 = getelementptr inbounds nuw i8, ptr %82, i64 104 + %115 = load ptr, ptr %114, align 8, !tbaa !135 + %.not183231 = icmp eq ptr %115, null br i1 %.not183231, label %.loopexit, label %.lr.ph235 -113: ; preds = %117 - %114 = load ptr, ptr %111, align 8, !tbaa !135 - %.not183 = icmp eq ptr %114, null +116: ; preds = %120 + %117 = load ptr, ptr %114, align 8, !tbaa !135 + %.not183 = icmp eq ptr %117, null br i1 %.not183, label %.loopexit, label %.lr.ph235 -.lr.ph235: ; preds = %.lr.ph, %113 - %115 = phi ptr [ %114, %113 ], [ %112, %.lr.ph ] - %.0161196234 = phi ptr [ %116, %113 ], [ %109, %.lr.ph ] - %.0159197233 = phi i32 [ %119, %113 ], [ %92, %.lr.ph ] - %.0157198232 = phi i64 [ %118, %113 ], [ %100, %.lr.ph ] - %116 = call ptr %115(ptr noundef nonnull %82, ptr noundef %.0161196234, i64 noundef %.0157198232, i32 noundef %.0159197233, ptr noundef nonnull %4, ptr noundef nonnull %5) #19 - %.not184 = icmp eq ptr %116, null - br i1 %.not184, label %.loopexit, label %117 +.lr.ph235: ; preds = %.lr.ph, %116 + %118 = phi ptr [ %117, %113 ], [ %115, %.lr.ph ] + %.0161196234 = phi ptr [ %119, %113 ], [ %112, %.lr.ph ] + %.0159197233 = phi i32 [ %122, %113 ], [ %92, %.lr.ph ] + %.0157198232 = phi i64 [ %121, %113 ], [ %100, %.lr.ph ] + %119 = call ptr %115(ptr noundef nonnull %82, ptr noundef %.0161196234, i64 noundef %.0157198232, i32 noundef %.0159197233, ptr noundef nonnull %4, ptr noundef nonnull %5) #19 + %.not184 = icmp eq ptr %119, null + br i1 %.not184, label %.loopexit, label %120 -117: ; preds = %.lr.ph235 +120: ; preds = %.lr.ph235 call void @free(ptr noundef %.0161196234) #19 - %118 = load i64, ptr %5, align 8, !tbaa !134 - %119 = load i32, ptr %4, align 4, !tbaa !116 - %120 = icmp slt i32 %119, %105 - br i1 %120, label %113, label %._crit_edge - -._crit_edge: ; preds = %117, %86 - %.0157.lcssa = phi i64 [ %100, %86 ], [ %118, %117 ] - %.0153.lcssa = phi ptr [ null, %86 ], [ %116, %117 ] + %121 = load i64, ptr %5, align 8, !tbaa !134 + %122 = load i32, ptr %4, align 4, !tbaa !116 + %123 = icmp slt i32 %122, %105 + br i1 %123, label %116, label %._crit_edge + +._crit_edge: ; preds = %120, %86 + %.0157.lcssa = phi i64 [ %100, %86 ], [ %121, %117 ] + %.0153.lcssa = phi ptr [ null, %86 ], [ %119, %117 ] store i32 %108, ptr %4, align 4, !tbaa !116 store i64 0, ptr %5, align 8, !tbaa !134 - %121 = call noalias ptr @malloc(i64 noundef %102) #22 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %121, ptr align 1 %101, i64 %102, i1 false) - %122 = icmp slt i32 %94, %108 - br i1 %122, label %.lr.ph206, label %._crit_edge207 + %124 = call noalias ptr @malloc(i64 noundef %102) #22 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %124, ptr align 1 %101, i64 %102, i1 false) + %125 = icmp slt i32 %94, %108 + br i1 %125, label %.lr.ph206, label %._crit_edge207 .lr.ph206: ; preds = %._crit_edge - %123 = getelementptr inbounds nuw i8, ptr %83, i64 144 - %124 = load ptr, ptr %123, align 8, !tbaa !136 - %.not181238 = icmp eq ptr %124, null + %126 = getelementptr inbounds nuw i8, ptr %83, i64 144 + %127 = load ptr, ptr %126, align 8, !tbaa !136 + %.not181238 = icmp eq ptr %127, null br i1 %.not181238, label %.loopexit, label %.lr.ph242 -125: ; preds = %129 - %126 = load ptr, ptr %123, align 8, !tbaa !136 - %.not181 = icmp eq ptr %126, null +128: ; preds = %132 + %129 = load ptr, ptr %126, align 8, !tbaa !136 + %.not181 = icmp eq ptr %129, null br i1 %.not181, label %.loopexit, label %.lr.ph242 -.lr.ph242: ; preds = %.lr.ph206, %125 - %127 = phi ptr [ %126, %125 ], [ %124, %.lr.ph206 ] - %.1162201241 = phi ptr [ %128, %125 ], [ %121, %.lr.ph206 ] - %.1160202240 = phi i32 [ %131, %125 ], [ %94, %.lr.ph206 ] - %.0158203239 = phi i64 [ %130, %125 ], [ %102, %.lr.ph206 ] - %128 = call ptr %127(ptr noundef nonnull %83, ptr noundef %.1162201241, i64 noundef %.0158203239, i32 noundef %.1160202240, ptr noundef nonnull %4, ptr noundef nonnull %5) #19 - %.not182 = icmp eq ptr %128, null - br i1 %.not182, label %.loopexit, label %129 +.lr.ph242: ; preds = %.lr.ph206, %128 + %130 = phi ptr [ %129, %125 ], [ %127, %.lr.ph206 ] + %.1162201241 = phi ptr [ %131, %125 ], [ %124, %.lr.ph206 ] + %.1160202240 = phi i32 [ %134, %125 ], [ %94, %.lr.ph206 ] + %.0158203239 = phi i64 [ %133, %125 ], [ %102, %.lr.ph206 ] + %131 = call ptr %127(ptr noundef nonnull %83, ptr noundef %.1162201241, i64 noundef %.0158203239, i32 noundef %.1160202240, ptr noundef nonnull %4, ptr noundef nonnull %5) #19 + %.not182 = icmp eq ptr %131, null + br i1 %.not182, label %.loopexit, label %132 -129: ; preds = %.lr.ph242 +132: ; preds = %.lr.ph242 call void @free(ptr noundef %.1162201241) #19 - %130 = load i64, ptr %5, align 8, !tbaa !134 - %131 = load i32, ptr %4, align 4, !tbaa !116 - %132 = icmp slt i32 %131, %108 - br i1 %132, label %125, label %._crit_edge207.thread + %133 = load i64, ptr %5, align 8, !tbaa !134 + %134 = load i32, ptr %4, align 4, !tbaa !116 + %135 = icmp slt i32 %134, %108 + br i1 %135, label %128, label %._crit_edge207.thread -._crit_edge207.thread: ; preds = %129 - %133 = icmp ne ptr %.0153.lcssa, null - br label %134 +._crit_edge207.thread: ; preds = %132 + %136 = icmp ne ptr %.0153.lcssa, null + br label %137 ._crit_edge207: ; preds = %._crit_edge %.not226 = icmp eq ptr %.0153.lcssa, null - br i1 %.not226, label %220, label %134 - -134: ; preds = %._crit_edge207.thread, %._crit_edge207 - %135 = phi i1 [ %133, %._crit_edge207.thread ], [ true, %._crit_edge207 ] - %.1156.lcssa221 = phi ptr [ %128, %._crit_edge207.thread ], [ null, %._crit_edge207 ] - %.0158.lcssa220 = phi i64 [ %130, %._crit_edge207.thread ], [ %102, %._crit_edge207 ] - %136 = add nsw i32 %98, %96 - %137 = sext i32 %136 to i64 - %138 = sub nsw i64 %36, %137 - %139 = add i64 %.0157.lcssa, %138 - %140 = add i64 %139, %.0158.lcssa220 - %141 = call noalias ptr @malloc(i64 noundef %140) #22 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %141, ptr align 1 %33, i64 %91, i1 false) - %142 = getelementptr inbounds nuw i8, ptr %141, i64 %91 - store i32 %105, ptr %142, align 1 - %143 = getelementptr i8, ptr %142, i64 4 - store i32 %108, ptr %143, align 1 + br i1 %.not226, label %224, label %137 + +137: ; preds = %._crit_edge207.thread, %._crit_edge207 + %138 = phi i1 [ %136, %._crit_edge207.thread ], [ true, %._crit_edge207 ] + %.1156.lcssa221 = phi ptr [ %131, %._crit_edge207.thread ], [ null, %._crit_edge207 ] + %.0158.lcssa220 = phi i64 [ %133, %._crit_edge207.thread ], [ %102, %._crit_edge207 ] + %139 = add nsw i32 %98, %96 + %140 = sext i32 %139 to i64 + %141 = sub nsw i64 %36, %140 + %142 = add i64 %.0157.lcssa, %141 + %143 = add i64 %142, %.0158.lcssa220 + %144 = call noalias ptr @malloc(i64 noundef %143) #22 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %144, ptr align 1 %33, i64 %91, i1 false) + %145 = getelementptr inbounds nuw i8, ptr %144, i64 %91 + store i32 %105, ptr %145, align 1 + %146 = getelementptr i8, ptr %142, i64 4 + store i32 %108, ptr %146, align 1 %144 = getelementptr i8, ptr %142, i64 8 %.0.extract.trunc61 = trunc i64 %.0157.lcssa to i32 store i32 %.0.extract.trunc61, ptr %144, align 1 - %145 = getelementptr i8, ptr %142, i64 12 + %149 = getelementptr i8, ptr %142, i64 12 %.0.extract.trunc = trunc i64 %.0158.lcssa220 to i32 - store i32 %.0.extract.trunc, ptr %145, align 1 - %146 = add i64 %91, 16 - %147 = getelementptr inbounds nuw i8, ptr %141, i64 %146 - br i1 %135, label %148, label %149 - -148: ; preds = %134 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %147, ptr nonnull align 1 %.0153.lcssa, i64 %.0157.lcssa, i1 false) - br label %150 - -149: ; preds = %134 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %147, ptr align 1 %99, i64 %100, i1 false) - br label %150 - -150: ; preds = %149, %148 - %151 = getelementptr i8, ptr %141, i64 %.0157.lcssa - %152 = getelementptr i8, ptr %151, i64 %146 - br i1 %122, label %153, label %154 - -153: ; preds = %150 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %152, ptr nonnull align 1 %.1156.lcssa221, i64 %.0158.lcssa220, i1 false) + store i32 %.0.extract.trunc, ptr %149, align 1 + %150 = add i64 %91, 16 + %151 = getelementptr inbounds nuw i8, ptr %144, i64 %150 + br i1 %138, label %152, label %153 + +152: ; preds = %137 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %151, ptr nonnull align 1 %.0153.lcssa, i64 %.0157.lcssa, i1 false) + br label %154 + +153: ; preds = %137 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %151, ptr align 1 %99, i64 %100, i1 false) + br label %154 + +154: ; preds = %153, %152 + %155 = getelementptr i8, ptr %144, i64 %.0157.lcssa + %156 = getelementptr i8, ptr %155, i64 %150 + br i1 %125, label %157, label %154 + +157: ; preds = %154 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %156, ptr nonnull align 1 %.1156.lcssa221, i64 %.0158.lcssa220, i1 false) br label %155 154: ; preds = %150 @@ -3128,13 +3128,13 @@ define void @init_presets(ptr noundef readonly captures(none) %0) local_unnamed_ %178 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %174, ptr noundef nonnull @.str.108, ptr noundef nonnull @.str.28, i32 noundef 2008, ptr noundef nonnull @__FUNCTION__.init_presets, ptr noundef %177) #23 br label %179 -179: ; preds = %173, %169 +162: ; preds = %173, %169 %180 = load ptr, ptr %6, align 8, !tbaa !121 %181 = call i32 @sqlite3_bind_int(ptr noundef %180, i32 noundef 2, i32 noundef %29) #19 %.not180 = icmp eq i32 %181, 0 br i1 %.not180, label %188, label %182 -182: ; preds = %179 +182: ; preds = %162 %183 = load ptr, ptr @stderr, align 8, !tbaa !119 %184 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 136), align 8, !tbaa !118 %185 = call ptr @dt_database_get(ptr noundef %184) #19 @@ -3142,82 +3142,82 @@ define void @init_presets(ptr noundef readonly captures(none) %0) local_unnamed_ %187 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %183, ptr noundef nonnull @.str.108, ptr noundef nonnull @.str.28, i32 noundef 2009, ptr noundef nonnull @__FUNCTION__.init_presets, ptr noundef %186) #23 br label %188 -188: ; preds = %182, %179 +188:; preds = %182, %179 %189 = load ptr, ptr %6, align 8, !tbaa !121 - %190 = call i32 @sqlite3_step(ptr noundef %189) #19 + %172 = call i32 @sqlite3_step(ptr noundef %189) #23 %191 = load ptr, ptr %6, align 8, !tbaa !121 %192 = call i32 @sqlite3_finalize(ptr noundef %191) #19 call void @free(ptr noundef %.0153.lcssa) #19 call void @free(ptr noundef %.1156.lcssa221) #19 - call void @free(ptr noundef nonnull %141) #19 + call void @free(ptr noundef nonnull %144) #19 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #19 - br label %220 + br label %224 -.loopexit: ; preds = %.lr.ph235, %113, %.lr.ph242, %125, %.lr.ph, %.lr.ph206 - %.0155 = phi ptr [ null, %.lr.ph206 ], [ null, %.lr.ph ], [ %128, %125 ], [ null, %.lr.ph242 ], [ null, %113 ], [ null, %.lr.ph235 ] - %.1154 = phi ptr [ %.0153.lcssa, %.lr.ph206 ], [ null, %.lr.ph ], [ %.0153.lcssa, %125 ], [ %.0153.lcssa, %.lr.ph242 ], [ null, %.lr.ph235 ], [ %116, %113 ] +.loopexit: ; preds = %.lr.ph235, %116, %.lr.ph242, %128, %.lr.ph, %.lr.ph206 + %.0155 = phi ptr [ null, %.lr.ph206 ], [ null, %.lr.ph ], [ %131, %125 ], [ null, %.lr.ph242 ], [ null, %113 ], [ null, %.lr.ph235 ] + %.1154 = phi ptr [ %.0153.lcssa, %.lr.ph206 ], [ null, %.lr.ph ], [ %.0153.lcssa, %125 ], [ %.0153.lcssa, %.lr.ph242 ], [ null, %.lr.ph235 ], [ %119, %113 ] call void @free(ptr noundef %.1154) #19 call void @free(ptr noundef %.0155) #19 call void (ptr, ...) @dt_print_ext(ptr noundef nonnull @.str.111, ptr noundef %38, i32 noundef %92, i32 noundef %94, i32 noundef %105, i32 noundef %108) #19 - %193 = load i32, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 8), align 8, !tbaa !104 - %194 = and i32 %193, 256 - %.not185 = icmp eq i32 %194, 0 - br i1 %.not185, label %196, label %195 + %197 = load i32, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 8), align 8, !tbaa !104 + %198 = and i32 %197, 256 + %.not185 = icmp eq i32 %198, 0 + br i1 %.not185, label %200, label %199 -195: ; preds = %.loopexit +199: ; preds = %.loopexit call void (ptr, ...) @dt_print_ext(ptr noundef nonnull @.str.103, ptr noundef nonnull @.str.28, i32 noundef 2030, ptr noundef nonnull @__FUNCTION__.init_presets, ptr noundef nonnull @.str.107) #19 - br label %196 - -196: ; preds = %195, %.loopexit - %197 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 136), align 8, !tbaa !118 - %198 = call ptr @dt_database_get(ptr noundef %197) #19 - %199 = call i32 @sqlite3_prepare_v2(ptr noundef %198, ptr noundef nonnull @.str.107, i32 noundef -1, ptr noundef nonnull %7, ptr noundef null) #19 - %.not186 = icmp eq i32 %199, 0 - br i1 %.not186, label %206, label %200 - -200: ; preds = %196 - %201 = load ptr, ptr @stderr, align 8, !tbaa !119 - %202 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 136), align 8, !tbaa !118 - %203 = call ptr @dt_database_get(ptr noundef %202) #19 - %204 = call ptr @sqlite3_errmsg(ptr noundef %203) #19 - %205 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %201, ptr noundef nonnull @.str.105, ptr noundef nonnull @.str.28, i32 noundef 2030, ptr noundef nonnull @__FUNCTION__.init_presets, ptr noundef nonnull @.str.107, ptr noundef %204) #23 - br label %206 - -206: ; preds = %200, %196 - %207 = load ptr, ptr %7, align 8, !tbaa !121 - %208 = call i32 @sqlite3_bind_int(ptr noundef %207, i32 noundef 1, i32 noundef %29) #19 - %.not187 = icmp eq i32 %208, 0 - br i1 %.not187, label %215, label %209 - -209: ; preds = %206 - %210 = load ptr, ptr @stderr, align 8, !tbaa !119 - %211 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 136), align 8, !tbaa !118 - %212 = call ptr @dt_database_get(ptr noundef %211) #19 - %213 = call ptr @sqlite3_errmsg(ptr noundef %212) #19 - %214 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %210, ptr noundef nonnull @.str.108, ptr noundef nonnull @.str.28, i32 noundef 2031, ptr noundef nonnull @__FUNCTION__.init_presets, ptr noundef %213) #23 - br label %215 - -215: ; preds = %209, %206 - %216 = load ptr, ptr %7, align 8, !tbaa !121 - %217 = call i32 @sqlite3_step(ptr noundef %216) #19 - %218 = load ptr, ptr %7, align 8, !tbaa !121 - %219 = call i32 @sqlite3_finalize(ptr noundef %218) #19 - br label %220 - -220: ; preds = %188, %._crit_edge207, %215 + br label %200 + +200: ; preds = %199, %.loopexit + %201 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 136), align 8, !tbaa !118 + %202 = call ptr @dt_database_get(ptr noundef %201) #19 + %203 = call i32 @sqlite3_prepare_v2(ptr noundef %202, ptr noundef nonnull @.str.107, i32 noundef -1, ptr noundef nonnull %7, ptr noundef null) #19 + %.not186 = icmp eq i32 %203, 0 + br i1 %.not186, label %210, label %204 + +204: ; preds = %200 + %205 = load ptr, ptr @stderr, align 8, !tbaa !119 + %206 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 136), align 8, !tbaa !118 + %207 = call ptr @dt_database_get(ptr noundef %206) #19 + %208 = call ptr @sqlite3_errmsg(ptr noundef %207) #19 + %209 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %205, ptr noundef nonnull @.str.105, ptr noundef nonnull @.str.28, i32 noundef 2030, ptr noundef nonnull @__FUNCTION__.init_presets, ptr noundef nonnull @.str.107, ptr noundef %208) #23 + br label %210 + +210: ; preds = %204, %200 + %211 = load ptr, ptr %7, align 8, !tbaa !121 + %212 = call i32 @sqlite3_bind_int(ptr noundef %211, i32 noundef 1, i32 noundef %29) #19 + %.not187 = icmp eq i32 %212, 0 + br i1 %.not187, label %219, label %213 + +213: ; preds = %210 + %214 = load ptr, ptr @stderr, align 8, !tbaa !119 + %215 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 136), align 8, !tbaa !118 + %216 = call ptr @dt_database_get(ptr noundef %215) #19 + %217 = call ptr @sqlite3_errmsg(ptr noundef %216) #19 + %218 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %214, ptr noundef nonnull @.str.108, ptr noundef nonnull @.str.28, i32 noundef 2031, ptr noundef nonnull @__FUNCTION__.init_presets, ptr noundef %217) #23 + br label %219 + +219: ; preds = %213, %210 + %220 = load ptr, ptr %7, align 8, !tbaa !121 + %221 = call i32 @sqlite3_step(ptr noundef %220) #19 + %222 = load ptr, ptr %7, align 8, !tbaa !121 + %223 = call i32 @sqlite3_finalize(ptr noundef %222) #19 + br label %224 + +224: ; preds = %188, %._crit_edge207, %219 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #19 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #19 br label %.critedge -.critedge: ; preds = %220, %67, %62 - %221 = load ptr, ptr %2, align 8, !tbaa !121 - %222 = call i32 @sqlite3_step(ptr noundef %221) #19 - %223 = icmp eq i32 %222, 100 - br i1 %223, label %.lr.ph211, label %._crit_edge212 +.critedge: ; preds = %224, %67, %62 + %225 = load ptr, ptr %2, align 8, !tbaa !121 + %226 = call i32 @sqlite3_step(ptr noundef %225) #19 + %227 = icmp eq i32 %226, 100 + br i1 %227, label %.lr.ph211, label %._crit_edge212 ._crit_edge212: ; preds = %.critedge, %24 - %224 = load ptr, ptr %2, align 8, !tbaa !121 - %225 = call i32 @sqlite3_finalize(ptr noundef %224) #19 + %228 = load ptr, ptr %2, align 8, !tbaa !121 + %229 = call i32 @sqlite3_finalize(ptr noundef %228) #19 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #19 ret void } diff --git a/bench/darktable/optimized/print_settings.ll b/bench/darktable/optimized/print_settings.ll index a8d7764ac8d..89efc09ace3 100644 --- a/bench/darktable/optimized/print_settings.ll +++ b/bench/darktable/optimized/print_settings.ll @@ -5582,9 +5582,9 @@ define noalias noundef ptr @legacy_params(ptr noundef readnone captures(none) %0 %51 = add i32 %50, 1 %52 = add nsw i32 %51, %48 %53 = sext i32 %52 to i64 - %.neg149 = add i64 %2, 8 + %.neg148 = add i64 %2, 8 %54 = add nsw i64 %20, %26 - %55 = sub i64 %.neg149, %54 + %55 = sub i64 %.neg148, %54 %56 = add i64 %55, %53 %57 = tail call noalias ptr @malloc(i64 noundef %56) #20 tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %57, ptr nonnull align 1 %1, i64 %10, i1 false) @@ -5610,7 +5610,7 @@ define noalias noundef ptr @legacy_params(ptr noundef readnone captures(none) %0 %70 = getelementptr i8, ptr %68, i64 %69 %71 = ptrtoint ptr %27 to i64 %72 = ptrtoint ptr %1 to i64 - %.neg = add i64 %2, %72 + %72 = add i64 %2, %72 %73 = sub i64 %.neg, %71 tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %70, ptr nonnull align 1 %27, i64 %73, i1 false) br label %.sink.split @@ -5650,10 +5650,10 @@ define noalias noundef ptr @legacy_params(ptr noundef readnone captures(none) %0 br label %.sink.split .sink.split: ; preds = %45, %74, %78 - %.sink151 = phi i64 [ %79, %78 ], [ %75, %74 ], [ %56, %45 ] + %.sink154 = phi i64 [ %79, %78 ], [ %75, %74 ], [ %56, %45 ] %.sink = phi i32 [ 4, %78 ], [ 3, %74 ], [ 2, %45 ] %.0.ph = phi ptr [ %80, %78 ], [ %76, %74 ], [ %57, %45 ] - store i64 %.sink151, ptr %5, align 8, !tbaa !226 + store i64 %.sink154, ptr %5, align 8, !tbaa !226 store i32 %.sink, ptr %4, align 4, !tbaa !132 br label %91 diff --git a/bench/duckdb/optimized/huf_compress.ll b/bench/duckdb/optimized/huf_compress.ll index bc277ee9f6f..30201c801e7 100644 --- a/bench/duckdb/optimized/huf_compress.ll +++ b/bench/duckdb/optimized/huf_compress.ll @@ -2682,13 +2682,13 @@ define internal fastcc noundef i64 @_ZN11duckdb_zstdL35HUF_compress4X_usingCTabl %13 = getelementptr inbounds nuw i8, ptr %0, i64 6 %14 = ptrtoint ptr %12 to i64 %gepdiff = add i64 %1, -6 - %15 = tail call fastcc noundef i64 @_ZN11duckdb_zstdL35HUF_compress1X_usingCTable_internalEPvmPKvmPKmi(ptr noundef nonnull %13, i64 noundef %gepdiff, ptr noundef %2, i64 noundef %8, ptr noundef %4, i32 noundef %5) - %16 = icmp ult i64 %15, -119 - br i1 %16, label %17, label %.thread + %13 = tail call fastcc noundef i64 @_ZN11duckdb_zstdL35HUF_compress1X_usingCTable_internalEPvmPKvmPKmi(ptr noundef nonnull %13, i64 noundef %gepdiff, ptr noundef %2, i64 noundef %8, ptr noundef %4, i32 noundef %5) + %14 = icmp ult i64 %13, -119 + br i1 %14, label %15, label %.thread -17: ; preds = %11 - %18 = add i64 %15, -65536 - %or.cond = icmp ult i64 %18, -65535 +15: ; preds = %11 + %16 = add i64 %13, -65536 + %or.cond = icmp ult i64 %16, -65535 br i1 %or.cond, label %.thread, label %19 19: ; preds = %17 @@ -2701,56 +2701,56 @@ define internal fastcc noundef i64 @_ZN11duckdb_zstdL35HUF_compress4X_usingCTabl %24 = icmp ult i64 %23, -119 br i1 %24, label %25, label %.thread -25: ; preds = %19 +17: ; preds = %19 %26 = add i64 %23, -65536 %or.cond6 = icmp ult i64 %26, -65535 br i1 %or.cond6, label %.thread, label %27 -27: ; preds = %25 - %28 = getelementptr inbounds nuw i8, ptr %0, i64 2 - %29 = trunc nuw i64 %23 to i16 - store i16 %29, ptr %28, align 1, !tbaa !16 - %30 = getelementptr inbounds nuw i8, ptr %21, i64 %23 - %31 = getelementptr inbounds nuw i8, ptr %22, i64 %8 - %32 = add nuw nsw i64 %15, %23 - %gepdiff128 = sub i64 %gepdiff, %32 - %33 = tail call fastcc noundef i64 @_ZN11duckdb_zstdL35HUF_compress1X_usingCTable_internalEPvmPKvmPKmi(ptr noundef nonnull %30, i64 noundef %gepdiff128, ptr noundef %31, i64 noundef %8, ptr noundef %4, i32 noundef %5) - %34 = icmp ult i64 %33, -119 - br i1 %34, label %35, label %.thread - -35: ; preds = %27 - %36 = add i64 %33, -65536 - %or.cond8 = icmp ult i64 %36, -65535 - br i1 %or.cond8, label %.thread, label %37 - -37: ; preds = %35 - %38 = getelementptr inbounds nuw i8, ptr %0, i64 4 - %39 = trunc nuw i64 %33 to i16 - store i16 %39, ptr %38, align 1, !tbaa !16 - %40 = getelementptr inbounds nuw i8, ptr %30, i64 %33 - %41 = getelementptr inbounds nuw i8, ptr %31, i64 %8 - %42 = ptrtoint ptr %40 to i64 - %43 = sub i64 %14, %42 +25: ; preds = %25 + %26 = getelementptr inbounds nuw i8, ptr %0, i64 2 + %27 = trunc nuw i64 %23 to i16 + store i16 %27, ptr %26, align 1, !tbaa !16 + %28 = getelementptr inbounds nuw i8, ptr %21, i64 %23 + %29 = getelementptr inbounds nuw i8, ptr %22, i64 %8 + %30 = add nuw nsw i64 %13, %23 + %gepdiff128 = sub i64 %gepdiff, %30 + %31 = tail call fastcc noundef i64 @_ZN11duckdb_zstdL35HUF_compress1X_usingCTable_internalEPvmPKvmPKmi(ptr noundef nonnull %28, i64 noundef %gepdiff128, ptr noundef %29, i64 noundef %8, ptr noundef %4, i32 noundef %5) + %32 = icmp ult i64 %31, -119 + br i1 %32, label %33, label %.thread + +33: ; preds = %25 + %34 = add i64 %31, -65536 + %or.cond8 = icmp ult i64 %34, -65535 + br i1 %or.cond8, label %.thread, label %35 + +35: ; preds = %33 + %36 = getelementptr inbounds nuw i8, ptr %0, i64 4 + %37 = trunc nuw i64 %31 to i16 + store i16 %37, ptr %36, align 1, !tbaa !16 + %38 = getelementptr inbounds nuw i8, ptr %28, i64 %31 + %39 = getelementptr inbounds nuw i8, ptr %29, i64 %8 + %42 = ptrtoint ptr %38 to i64 + %gepdiff129 = sub i64 %14, %42 %.neg = mul i64 %8, -3 %gepdiff106 = add i64 %.neg, %3 - %44 = tail call fastcc noundef i64 @_ZN11duckdb_zstdL35HUF_compress1X_usingCTable_internalEPvmPKvmPKmi(ptr noundef nonnull %40, i64 noundef %43, ptr noundef %41, i64 noundef %gepdiff106, ptr noundef %4, i32 noundef %5) - %45 = icmp ult i64 %44, -119 - br i1 %45, label %46, label %.thread + %41 = tail call fastcc noundef i64 @_ZN11duckdb_zstdL35HUF_compress1X_usingCTable_internalEPvmPKvmPKmi(ptr noundef nonnull %38, i64 noundef %gepdiff129, ptr noundef %39, i64 noundef %gepdiff106, ptr noundef %4, i32 noundef %5) + %42 = icmp ult i64 %41, -119 + br i1 %42, label %43, label %.thread -46: ; preds = %37 - %47 = add i64 %44, -65536 - %or.cond10 = icmp ult i64 %47, -65535 - br i1 %or.cond10, label %.thread, label %48 +43: ; preds = %35 + %44 = add i64 %41, -65536 + %or.cond10 = icmp ult i64 %44, -65535 + br i1 %or.cond10, label %.thread, label %45 -48: ; preds = %46 - %49 = getelementptr inbounds nuw i8, ptr %40, i64 %44 +45: ; preds = %43 + %49 = getelementptr inbounds nuw i8, ptr %40, i64 %41 %50 = ptrtoint ptr %49 to i64 %51 = ptrtoint ptr %0 to i64 %52 = sub i64 %50, %51 br label %.thread -.thread: ; preds = %46, %37, %35, %27, %25, %19, %17, %11, %6, %48 - %.0 = phi i64 [ %52, %48 ], [ 0, %6 ], [ 0, %17 ], [ %15, %11 ], [ 0, %25 ], [ %23, %19 ], [ 0, %35 ], [ %33, %27 ], [ 0, %46 ], [ %44, %37 ] +.thread: ; preds = %43, %35, %33, %25, %25, %19, %15, %11, %6, %45 + %.0 = phi i64 [ %52, %48 ], [ 0, %6 ], [ 0, %17 ], [ %13, %11 ], [ 0, %25 ], [ %23, %19 ], [ 0, %35 ], [ %31, %27 ], [ 0, %46 ], [ %41, %37 ] ret i64 %.0 } diff --git a/bench/ffmpeg/optimized/flac_picture.ll b/bench/ffmpeg/optimized/flac_picture.ll index 67682293c48..99920c3ad92 100644 --- a/bench/ffmpeg/optimized/flac_picture.ll +++ b/bench/ffmpeg/optimized/flac_picture.ll @@ -33,7 +33,7 @@ define range(i32 -2147483648, 1) i32 @ff_flac_parse_picture(ptr noundef %0, ptr %12 = and i32 %11, 8 %.not118 = icmp eq i32 %12, 0 %. = select i1 %.not118, i32 0, i32 -1094995529 - br label %166 + br label %161 13: ; preds = %4 %14 = zext nneg i32 %2 to i64 @@ -44,15 +44,15 @@ define range(i32 -2147483648, 1) i32 @ff_flac_parse_picture(ptr noundef %0, ptr %19 = icmp ugt i32 %18, 20 br i1 %19, label %20, label %24 -20: ; preds = %13 +20: ; preds = %13 tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %0, i32 noundef 16, ptr noundef nonnull @.str.1, i32 noundef %18) #7 %21 = getelementptr inbounds nuw i8, ptr %0, i64 212 %22 = load i32, ptr %21, align 4, !tbaa !9 %23 = and i32 %22, 8 %.not = icmp eq i32 %23, 0 - br i1 %.not, label %24, label %166 + br i1 %.not, label %24, label %161 -24: ; preds = %20, %13 +24: ; preds = %20, %13 %.091 = phi i32 [ %18, %13 ], [ 0, %20 ] %25 = getelementptr inbounds nuw i8, ptr %7, i64 8 %26 = load i32, ptr %16, align 1, !tbaa !25 @@ -60,166 +60,166 @@ define range(i32 -2147483648, 1) i32 @ff_flac_parse_picture(ptr noundef %0, ptr %28 = zext i32 %27 to i64 %29 = add i32 %27, -64 %or.cond = icmp ult i32 %29, -63 - br i1 %or.cond, label %30, label %34 + br i1 %or.cond, label %30, label %32 30: ; preds = %24 tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %0, i32 noundef 16, ptr noundef nonnull @.str.2) #7 - %31 = getelementptr inbounds nuw i8, ptr %0, i64 212 - %32 = load i32, ptr %31, align 4, !tbaa !9 - %33 = and i32 %32, 8 - %.not117 = icmp eq i32 %33, 0 + %29 = getelementptr inbounds nuw i8, ptr %0, i64 212 + %30 = load i32, ptr %29, align 4, !tbaa !9 + %31 = and i32 %30, 8 + %.not117 = icmp eq i32 %31, 0 %.119 = select i1 %.not117, i32 0, i32 -1094995529 - br label %166 + br label %161 -34: ; preds = %24 - %35 = add nuw nsw i32 %27, 24 +32: ; preds = %24 + %33 = add nuw nsw i32 %27, 24 %36 = ptrtoint ptr %15 to i64 %gepdiff = add nsw i32 %2, -8 - %37 = icmp samesign ugt i32 %35, %gepdiff - br i1 %37, label %38, label %42 + %34 = icmp samesign ugt i32 %33, %gepdiff + br i1 %34, label %35, label %39 -38: ; preds = %34 +35: ; preds = %32 tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %0, i32 noundef 16, ptr noundef nonnull @.str) #7 - %39 = getelementptr inbounds nuw i8, ptr %0, i64 212 - %40 = load i32, ptr %39, align 4, !tbaa !9 - %41 = and i32 %40, 8 - %.not116 = icmp eq i32 %41, 0 + %36 = getelementptr inbounds nuw i8, ptr %0, i64 212 + %37 = load i32, ptr %36, align 4, !tbaa !9 + %38 = and i32 %37, 8 + %.not116 = icmp eq i32 %38, 0 %.120 = select i1 %.not116, i32 0, i32 -1094995529 - br label %166 + br label %161 -42: ; preds = %34 +39: ; preds = %32 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 16 %6, ptr nonnull align 1 %25, i64 %28, i1 false) - %43 = getelementptr inbounds nuw i8, ptr %25, i64 %28 - %44 = getelementptr inbounds nuw [64 x i8], ptr %6, i64 0, i64 %28 - store i8 0, ptr %44, align 1, !tbaa !25 - %45 = load i32, ptr getelementptr inbounds nuw (i8, ptr @ff_id3v2_mime_tags, i64 32), align 4, !tbaa !26 - %.not105157 = icmp eq i32 %45, 0 - br i1 %.not105157, label %._crit_edge, label %.lr.ph.preheader - -.lr.ph.preheader: ; preds = %42 - %46 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) @ff_id3v2_mime_tags, ptr noundef nonnull dereferenceable(1) %6, i64 noundef 64) #8 - %.not106162 = icmp eq i32 %46, 0 - br i1 %.not106162, label %.lr.ph._crit_edge, label %.lr.ph164 - -.lr.ph164: ; preds = %.lr.ph.preheader, %.lr.ph - %.093158163 = phi ptr [ %49, %.lr.ph ], [ @ff_id3v2_mime_tags, %.lr.ph.preheader ] - %47 = getelementptr inbounds nuw i8, ptr %.093158163, i64 68 - %48 = load i32, ptr %47, align 4, !tbaa !26 - %.not105 = icmp eq i32 %48, 0 + %40 = getelementptr inbounds nuw i8, ptr %25, i64 %28 + %41 = getelementptr inbounds nuw [64 x i8], ptr %6, i64 0, i64 %28 + store i8 0, ptr %41, align 1, !tbaa !25 + %42 = load i32, ptr getelementptr inbounds nuw (i8, ptr @ff_id3v2_mime_tags, i64 32), align 4, !tbaa !26 + %.not105162 = icmp eq i32 %42, 0 + br i1 %.not105162, label %._crit_edge, label %.lr.ph.preheader + +.lr.ph.preheader: ; preds = %39 + %43 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) @ff_id3v2_mime_tags, ptr noundef nonnull dereferenceable(1) %6, i64 noundef 64) #8 + %.not106167 = icmp eq i32 %43, 0 + br i1 %.not106167, label %.lr.ph._crit_edge, label %.lr.ph169 + +.lr.ph169: ; preds = %.lr.ph.preheader, %.lr.ph + %.093163168 = phi ptr [ %46, %.lr.ph ], [ @ff_id3v2_mime_tags, %.lr.ph.preheader ] + %44 = getelementptr inbounds nuw i8, ptr %.093163168, i64 68 + %45 = load i32, ptr %44, align 4, !tbaa !26 + %.not105 = icmp eq i32 %45, 0 br i1 %.not105, label %._crit_edge, label %.lr.ph, !llvm.loop !28 -.lr.ph: ; preds = %.lr.ph164 - %49 = getelementptr inbounds nuw i8, ptr %.093158163, i64 36 - %50 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %49, ptr noundef nonnull dereferenceable(1) %6, i64 noundef 64) #8 - %.not106 = icmp eq i32 %50, 0 - br i1 %.not106, label %.lr.ph._crit_edge, label %.lr.ph164, !llvm.loop !28 +.lr.ph: ; preds = %.lr.ph169 + %46 = getelementptr inbounds nuw i8, ptr %.093163168, i64 36 + %47 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %46, ptr noundef nonnull dereferenceable(1) %6, i64 noundef 64) #8 + %.not106 = icmp eq i32 %47, 0 + br i1 %.not106, label %.lr.ph._crit_edge, label %.lr.ph169, !llvm.loop !28 -._crit_edge: ; preds = %.lr.ph164, %42 +._crit_edge: ; preds = %.lr.ph169, %39 call void (ptr, i32, ptr, ...) @av_log(ptr noundef %0, i32 noundef 24, ptr noundef nonnull @.str.3, ptr noundef nonnull %6) #7 - br label %166 + br label %161 .lr.ph._crit_edge: ; preds = %.lr.ph, %.lr.ph.preheader - %.lcssa = phi i32 [ %45, %.lr.ph.preheader ], [ %48, %.lr.ph ] - %51 = load i32, ptr %43, align 1, !tbaa !25 - %52 = tail call i32 @llvm.bswap.i32(i32 %51) + %.lcssa = phi i32 [ %42, %.lr.ph.preheader ], [ %45, %.lr.ph ] + %48 = load i32, ptr %40, align 1, !tbaa !25 + %49 = tail call i32 @llvm.bswap.i32(i32 %48) %gepdiff154 = add nsw i32 %2, -32 - %53 = sub i32 %gepdiff154, %27 - %54 = icmp ugt i32 %52, %53 - br i1 %54, label %55, label %59 + %50 = sub i32 %gepdiff154, %27 + %51 = icmp ugt i32 %49, %50 + br i1 %51, label %52, label %56 -55: ; preds = %.lr.ph._crit_edge +52: ; preds = %.lr.ph._crit_edge tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %0, i32 noundef 16, ptr noundef nonnull @.str) #7 - %56 = getelementptr inbounds nuw i8, ptr %0, i64 212 - %57 = load i32, ptr %56, align 4, !tbaa !9 - %58 = and i32 %57, 8 - %.not115 = icmp eq i32 %58, 0 + %53 = getelementptr inbounds nuw i8, ptr %0, i64 212 + %54 = load i32, ptr %53, align 4, !tbaa !9 + %55 = and i32 %54, 8 + %.not115 = icmp eq i32 %55, 0 %.121 = select i1 %.not115, i32 0, i32 -1094995529 - br label %166 - -59: ; preds = %.lr.ph._crit_edge - %60 = getelementptr inbounds nuw i8, ptr %43, i64 4 - %.not107 = icmp eq i32 %51, 0 - %61 = zext i32 %52 to i64 - %62 = getelementptr inbounds nuw i8, ptr %60, i64 %61 - %63 = getelementptr inbounds nuw i8, ptr %62, i64 4 - %64 = load i32, ptr %62, align 1, !tbaa !25 - %65 = tail call i32 @llvm.bswap.i32(i32 %64) - store i8 0, ptr %62, align 1, !tbaa !25 - %66 = load i32, ptr %63, align 1, !tbaa !25 - %67 = tail call i32 @llvm.bswap.i32(i32 %66) - %68 = getelementptr inbounds nuw i8, ptr %62, i64 16 - %69 = getelementptr inbounds nuw i8, ptr %62, i64 20 - %70 = load i32, ptr %68, align 1, !tbaa !25 - %71 = tail call i32 @llvm.bswap.i32(i32 %70) - %72 = ptrtoint ptr %69 to i64 - %73 = sub i64 %36, %72 + br label %161 + +56: ; preds = %.lr.ph._crit_edge + %57 = getelementptr inbounds nuw i8, ptr %40, i64 4 + %.not107 = icmp eq i32 %48, 0 + %58 = zext i32 %49 to i64 + %59 = getelementptr inbounds nuw i8, ptr %57, i64 %58 + %60 = getelementptr inbounds nuw i8, ptr %59, i64 4 + %61 = load i32, ptr %59, align 1, !tbaa !25 + %62 = tail call i32 @llvm.bswap.i32(i32 %61) + store i8 0, ptr %59, align 1, !tbaa !25 + %63 = load i32, ptr %60, align 1, !tbaa !25 + %64 = tail call i32 @llvm.bswap.i32(i32 %63) + %65 = getelementptr inbounds nuw i8, ptr %59, i64 16 + %66 = getelementptr inbounds nuw i8, ptr %59, i64 20 + %67 = load i32, ptr %65, align 1, !tbaa !25 + %68 = tail call i32 @llvm.bswap.i32(i32 %67) + %72 = ptrtoint ptr %66 to i64 + %gepdiff155 = sub i64 %36, %72 %74 = trunc i64 %73 to i32 - %75 = icmp eq i32 %70, 0 + %71 = icmp eq i32 %67, 0 %76 = icmp ugt i32 %71, %74 %or.cond122 = select i1 %75, i1 true, i1 %76 br i1 %or.cond122, label %77, label %.thread150 -77: ; preds = %59 +77:; preds = %59 %78 = icmp ugt i32 %71, 524288000 br i1 %78, label %79, label %83 -79: ; preds = %77 +79: ; preds = %77 tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %0, i32 noundef 16, ptr noundef nonnull @.str.4, i32 noundef %71) #7 %80 = getelementptr inbounds nuw i8, ptr %0, i64 212 %81 = load i32, ptr %80, align 4, !tbaa !9 %82 = and i32 %81, 8 %.not114 = icmp eq i32 %82, 0 %.123 = select i1 %.not114, i32 0, i32 -1094995529 - br label %166 + br label %161 -83: ; preds = %77 +78: ; preds = %77 %.not108 = icmp eq i32 %3, 0 - br i1 %.not108, label %91, label %84 - -84: ; preds = %83 - %85 = getelementptr inbounds nuw i8, ptr %0, i64 272 - %86 = load i32, ptr %85, align 8, !tbaa !30 - %87 = icmp slt i32 %86, 1 - %88 = and i32 %71, 16777215 - %89 = icmp eq i32 %88, %74 - %90 = and i1 %76, %89 - %or.cond126 = select i1 %87, i1 %90, i1 false - br i1 %or.cond126, label %95, label %91 - -91: ; preds = %84, %83 + br i1 %.not108, label %86, label %79 + +79: ; preds = %78 + %80 = getelementptr inbounds nuw i8, ptr %0, i64 272 + %81 = load i32, ptr %80, align 8, !tbaa !30 + %82 = icmp slt i32 %81, 1 + %83 = and i32 %68, 16777215 + %84 = icmp eq i32 %83, %74 + %85 = and i1 %76, %89 + %or.cond126 = select i1 %87, i1 %85, i1 false + br i1 %or.cond126, label %90, label %86 + +86: ; preds = %79, %78 tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %0, i32 noundef 16, ptr noundef nonnull @.str) #7 - %92 = getelementptr inbounds nuw i8, ptr %0, i64 212 - %93 = load i32, ptr %92, align 4, !tbaa !9 - %94 = and i32 %93, 8 - %.not109 = icmp eq i32 %94, 0 + %87 = getelementptr inbounds nuw i8, ptr %0, i64 212 + %88 = load i32, ptr %87, align 4, !tbaa !9 + %89 = and i32 %88, 8 + %.not109 = icmp eq i32 %89, 0 %.127 = select i1 %.not109, i32 0, i32 -1094995529 - br label %166 + br label %161 -95: ; preds = %84 - tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef nonnull %0, i32 noundef 32, ptr noundef nonnull @.str.5, i32 noundef %74, i32 noundef %71) #7 - %96 = sub nuw nsw i32 %71, %74 +90: ; preds = %79 + tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef nonnull %0, i32 noundef 32, ptr noundef nonnull @.str.5, i32 noundef %74, i32 noundef %68) #7 + %91 = sub nuw nsw i32 %68, %74 br label %113 -.thread150: ; preds = %59 - %97 = lshr i32 %2, 4 - %98 = sub nsw i32 %2, %97 - %.not110 = icmp ult i32 %71, %98 - br i1 %.not110, label %113, label %99 - -99: ; preds = %.thread150 - %100 = add nuw nsw i32 %2, 64 - %101 = zext nneg i32 %100 to i64 - %102 = tail call ptr @av_buffer_create(ptr noundef nonnull %7, i64 noundef %101, ptr noundef nonnull @av_buffer_default_free, ptr noundef null, i32 noundef 0) #7 - store ptr %102, ptr %5, align 8, !tbaa !31 - %.not112 = icmp eq ptr %102, null - br i1 %.not112, label %166, label %103 - -103: ; preds = %99 +.thread150: ; preds = %56 + %92 = lshr i32 %2, 4 + %93 = sub nsw i32 %2, %92 + %.not110 = icmp ult i32 %68, %93 + br i1 %.not110, label %113, label %94 + +94: ; preds = %.thread150 + %95 = add nuw nsw i32 %2, 64 + %96 = zext nneg i32 %95 to i64 + %97 = tail call ptr @av_buffer_create(ptr noundef nonnull %7, i64 noundef %96, ptr noundef nonnull @av_buffer_default_free, ptr noundef null, i32 noundef 0) #7 + store ptr %97, ptr %5, align 8, !tbaa !31 + %.not112 = icmp eq ptr %97, null + br i1 %.not112, label %161, label %98 + +98: ; preds = %94 store ptr null, ptr %1, align 8, !tbaa !4 %104 = ptrtoint ptr %7 to i64 %105 = sub i64 %72, %104 - %106 = getelementptr inbounds nuw i8, ptr %102, i64 8 - %107 = load ptr, ptr %106, align 8, !tbaa !33 + %101 = getelementptr inbounds nuw i8, ptr %97, i64 8 + %102 = load ptr, ptr %101, align 8, !tbaa !33 %sext = shl i64 %105, 32 %108 = ashr exact i64 %sext, 32 %109 = getelementptr inbounds i8, ptr %107, i64 %108 @@ -231,7 +231,7 @@ define range(i32 -2147483648, 1) i32 @ff_flac_parse_picture(ptr noundef %0, ptr %.pre = zext i32 %71 to i64 br label %134 -113: ; preds = %95, %.thread150 +113:; preds = %90, %.thread150 %.0152 = phi i32 [ 0, %.thread150 ], [ %96, %95 ] %114 = add i32 %71, 64 %115 = zext i32 %114 to i64 @@ -240,21 +240,21 @@ define range(i32 -2147483648, 1) i32 @ff_flac_parse_picture(ptr noundef %0, ptr %.not111 = icmp eq ptr %116, null br i1 %.not111, label %166, label %117 -117: ; preds = %113 +117: ; preds = %113 %118 = getelementptr inbounds nuw i8, ptr %116, i64 8 %119 = load ptr, ptr %118, align 8, !tbaa !33 br i1 %or.cond122, label %122, label %120 -120: ; preds = %117 - %121 = zext i32 %71 to i64 +120:; preds = %117 + %121 = zext i32 %68 to i64 tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %119, ptr nonnull align 1 %69, i64 %121, i1 false) br label %134 -122: ; preds = %117 - %123 = and i64 %73, 4294967295 +122:; preds = %117 + %123 = and i64 %gepdiff155, 4294967295 tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %119, ptr nonnull align 1 %69, i64 %123, i1 false) %124 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %125 = load ptr, ptr %124, align 8, !tbaa !37 + %121 = load ptr, ptr %124, align 8, !tbaa !37 %126 = load ptr, ptr %118, align 8, !tbaa !33 %127 = zext i32 %71 to i64 %128 = getelementptr inbounds nuw i8, ptr %126, i64 %127 @@ -265,20 +265,20 @@ define range(i32 -2147483648, 1) i32 @ff_flac_parse_picture(ptr noundef %0, ptr %133 = icmp ult i32 %132, %.0152 br i1 %133, label %165, label %134 -134: ; preds = %120, %122, %103 - %.pre-phi = phi i64 [ %121, %120 ], [ %127, %122 ], [ %.pre, %103 ] - %135 = phi ptr [ %116, %120 ], [ %116, %122 ], [ %102, %103 ] +134:; preds = %120, %122, %98 + %130 = phi i64 [ %121, %120 ], [ %127, %122 ], [ %.pre, %103 ] + %135 = phi ptr [ %116, %120 ], [ %116, %122 ], [ %97, %103 ] %136 = getelementptr inbounds nuw i8, ptr %135, i64 8 %137 = load ptr, ptr %136, align 8, !tbaa !33 - %138 = getelementptr inbounds nuw i8, ptr %137, i64 %.pre-phi + %138 = getelementptr inbounds nuw i8, ptr %137, i64 %130 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %138, i8 0, i64 64, i1 false) - %139 = load ptr, ptr %136, align 8, !tbaa !33 + %135 = load ptr, ptr %136, align 8, !tbaa !33 %140 = load i64, ptr %139, align 1, !tbaa !25 %141 = call i32 @ff_add_attached_pic(ptr noundef %0, ptr noundef null, ptr noundef null, ptr noundef nonnull %5, i32 noundef 0) #7 %142 = icmp slt i32 %141, 0 br i1 %142, label %165, label %143 -143: ; preds = %134 +143:; preds = %134 %144 = icmp eq i64 %140, 727905341920923785 %spec.select = select i1 %144, i32 61, i32 %.lcssa %145 = getelementptr inbounds nuw i8, ptr %0, i64 48 @@ -304,16 +304,16 @@ define range(i32 -2147483648, 1) i32 @ff_flac_parse_picture(ptr noundef %0, ptr %162 = call i32 @av_dict_set(ptr noundef nonnull %158, ptr noundef nonnull @.str.6, ptr noundef %161, i32 noundef 0) #7 br i1 %.not107, label %166, label %163 -163: ; preds = %143 +163:; preds = %143 %164 = call i32 @av_dict_set(ptr noundef nonnull %158, ptr noundef nonnull @.str.7, ptr noundef nonnull %60, i32 noundef 0) #7 br label %166 -165: ; preds = %134, %122 +165: ; preds = %134, %122 %.092 = phi i32 [ -1094995529, %122 ], [ %141, %134 ] call void @av_buffer_unref(ptr noundef nonnull %5) #7 - br label %166 + br label %161 -166: ; preds = %143, %163, %113, %99, %91, %79, %55, %38, %30, %20, %9, %165, %._crit_edge +161: ; preds = %143, %163, %113, %94, %86, %79, %52, %35, %30, %20, %9, %165, %._crit_edge %.090 = phi i32 [ 0, %._crit_edge ], [ %.092, %165 ], [ %., %9 ], [ -1094995529, %20 ], [ %.119, %30 ], [ %.120, %38 ], [ %.121, %55 ], [ %.123, %79 ], [ %.127, %91 ], [ -12, %99 ], [ -12, %113 ], [ 0, %163 ], [ 0, %143 ] call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %6) #7 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #7 diff --git a/bench/freetype/optimized/type1.ll b/bench/freetype/optimized/type1.ll index f17a0afa5cd..704bf431790 100644 --- a/bench/freetype/optimized/type1.ll +++ b/bench/freetype/optimized/type1.ll @@ -5368,14 +5368,14 @@ define internal fastcc i32 @T1_Read_PFM(ptr noundef %0, ptr noundef readonly cap %49 = icmp eq ptr %48, %8 br i1 %49, label %.thread87, label %50 -50: ; preds = %29 +53: ; preds = %29 %.ptr = getelementptr inbounds nuw i8, ptr %48, i64 2 - %51 = icmp ugt ptr %.ptr, %10 - br i1 %51, label %.thread.sink.split, label %52 + %54 = icmp ugt ptr %.ptr, %10 + br i1 %54, label %.thread.sink.split, label %55 -52: ; preds = %50 - %53 = getelementptr inbounds nuw i8, ptr %48, i64 1 - %54 = load i8, ptr %53, align 1, !tbaa !95 +55: ; preds = %53 + %56 = getelementptr inbounds nuw i8, ptr %48, i64 1 + %57 = load i8, ptr %56, align 1, !tbaa !95 %55 = zext i8 %54 to i32 %56 = shl nuw nsw i32 %55, 8 %57 = load i8, ptr %48, align 1, !tbaa !95 @@ -5389,11 +5389,11 @@ define internal fastcc i32 @T1_Read_PFM(ptr noundef %0, ptr noundef readonly cap %64 = icmp ugt ptr %63, %10 br i1 %64, label %.thread.sink.split, label %65 -65: ; preds = %52 +65:; preds = %52 %66 = icmp eq i32 %59, 0 br i1 %66, label %.thread87, label %67 -67: ; preds = %65 +67:; preds = %65 %68 = zext nneg i32 %59 to i64 %69 = call ptr @ft_mem_qrealloc(ptr noundef %6, i64 noundef 16, i64 noundef 0, i64 noundef %68, ptr noundef null, ptr noundef nonnull %4) #16 %70 = getelementptr inbounds nuw i8, ptr %2, i64 72 @@ -5402,7 +5402,7 @@ define internal fastcc i32 @T1_Read_PFM(ptr noundef %0, ptr noundef readonly cap %.not = icmp eq i32 %71, 0 br i1 %.not, label %72, label %.thread -72: ; preds = %67 +72:; preds = %67 %73 = load i32, ptr %60, align 8, !tbaa !249 %74 = shl i32 %73, 2 %75 = zext i32 %74 to i64 @@ -5410,97 +5410,97 @@ define internal fastcc i32 @T1_Read_PFM(ptr noundef %0, ptr noundef readonly cap %.ptr80 = getelementptr inbounds nuw i8, ptr %76, i64 2 %77 = getelementptr inbounds nuw i8, ptr %0, i64 168 %78 = load ptr, ptr %77, align 8, !tbaa !446 - %79 = getelementptr inbounds nuw i8, ptr %0, i64 72 - %80 = load i32, ptr %79, align 8, !tbaa !447 + %.ptr80 = getelementptr inbounds nuw i8, ptr %0, i64 72 + %80 = load i32, ptr %.ptr80, align 8, !tbaa !447 %81 = icmp sgt i32 %80, 0 br i1 %81, label %.lr.ph, label %.loopexit -.lr.ph: ; preds = %72 +.lr.ph:; preds = %72 %82 = getelementptr inbounds nuw i8, ptr %0, i64 80 %83 = load ptr, ptr %82, align 8, !tbaa !448 %wide.trip.count = zext nneg i32 %80 to i64 - br label %85 + br label %88 -84: ; preds = %85 +84:; preds = %85 %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 %.loopexit, label %85, !llvm.loop !449 + br i1 %exitcond.not, label %.loopexit, label %88, !llvm.loop !449 -85: ; preds = %.lr.ph, %84 +88: ; preds = %.lr.ph, %84 %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %84 ] - %86 = getelementptr inbounds nuw ptr, ptr %83, i64 %indvars.iv - %87 = load ptr, ptr %86, align 8, !tbaa !450 - %88 = getelementptr inbounds nuw i8, ptr %87, i64 12 - %89 = load i16, ptr %88, align 4, !tbaa !235 - %90 = icmp eq i16 %89, 7 - br i1 %90, label %91, label %84 - -91: ; preds = %85 - store ptr %87, ptr %77, align 8, !tbaa !446 + %89 = getelementptr inbounds nuw ptr, ptr %83, i64 %indvars.iv + %90 = load ptr, ptr %89, align 8, !tbaa !450 + %91 = getelementptr inbounds nuw i8, ptr %90, i64 12 + %92 = load i16, ptr %91, align 4, !tbaa !235 + %93 = icmp eq i16 %92, 7 + br i1 %93, label %94, label %84 + +94: ; preds = %88 + store ptr %90, ptr %77, align 8, !tbaa !446 br label %.loopexit -.loopexit: ; preds = %84, %72, %91 +.loopexit: ; preds = %84, %72, %94 %.not81 = icmp eq i32 %74, 0 - br i1 %.not81, label %108, label %.lr.ph79 + br i1 %.not81, label %111, label %.lr.ph79 .lr.ph79: ; preds = %.loopexit, %.lr.ph79 - %.06878 = phi ptr [ %106, %.lr.ph79 ], [ %.ptr, %.loopexit ] - %.06977 = phi ptr [ %105, %.lr.ph79 ], [ %69, %.loopexit ] - %92 = load i8, ptr %.06878, align 1, !tbaa !95 - %93 = zext i8 %92 to i64 - %94 = call i32 @FT_Get_Char_Index(ptr noundef %0, i64 noundef %93) #16 - store i32 %94, ptr %.06977, align 4, !tbaa !326 - %95 = getelementptr inbounds nuw i8, ptr %.06878, i64 1 - %96 = load i8, ptr %95, align 1, !tbaa !95 - %97 = zext i8 %96 to i64 - %98 = call i32 @FT_Get_Char_Index(ptr noundef %0, i64 noundef %97) #16 - %99 = getelementptr inbounds nuw i8, ptr %.06977, i64 4 - store i32 %98, ptr %99, align 4, !tbaa !328 - %100 = getelementptr inbounds nuw i8, ptr %.06878, i64 2 - %101 = load i16, ptr %100, align 1 - %102 = sext i16 %101 to i32 - %103 = getelementptr inbounds nuw i8, ptr %.06977, i64 8 - store i32 %102, ptr %103, align 4, !tbaa !329 - %104 = getelementptr inbounds nuw i8, ptr %.06977, i64 12 - store i32 0, ptr %104, align 4, !tbaa !330 - %105 = getelementptr inbounds nuw i8, ptr %.06977, i64 16 - %106 = getelementptr inbounds nuw i8, ptr %.06878, i64 4 - %107 = icmp ult ptr %106, %.ptr80 - br i1 %107, label %.lr.ph79, label %._crit_edge.loopexit, !llvm.loop !451 + %.06878 = phi ptr [ %109, %.lr.ph79 ], [ %.ptr, %.loopexit ] + %.06977 = phi ptr [ %108, %.lr.ph79 ], [ %69, %.loopexit ] + %95 = load i8, ptr %.06878, align 1, !tbaa !95 + %96 = zext i8 %95 to i64 + %97 = call i32 @FT_Get_Char_Index(ptr noundef %0, i64 noundef %96) #16 + store i32 %97, ptr %.06977, align 4, !tbaa !326 + %98 = getelementptr inbounds nuw i8, ptr %.06878, i64 1 + %99 = load i8, ptr %98, align 1, !tbaa !95 + %100 = zext i8 %99 to i64 + %101 = call i32 @FT_Get_Char_Index(ptr noundef %0, i64 noundef %100) #16 + %102 = getelementptr inbounds nuw i8, ptr %.06977, i64 4 + store i32 %101, ptr %102, align 4, !tbaa !328 + %103 = getelementptr inbounds nuw i8, ptr %.06878, i64 2 + %104 = load i16, ptr %103, align 1 + %105 = sext i16 %104 to i32 + %106 = getelementptr inbounds nuw i8, ptr %.06977, i64 8 + store i32 %105, ptr %106, align 4, !tbaa !329 + %107 = getelementptr inbounds nuw i8, ptr %.06977, i64 12 + store i32 0, ptr %107, align 4, !tbaa !330 + %108 = getelementptr inbounds nuw i8, ptr %.06977, i64 16 + %109 = getelementptr inbounds nuw i8, ptr %.06878, i64 4 + %110 = icmp ult ptr %109, %.ptr80 + br i1 %110, label %.lr.ph79, label %._crit_edge.loopexit, !llvm.loop !451 ._crit_edge.loopexit: ; preds = %.lr.ph79 %.pre = load ptr, ptr %70, align 8, !tbaa !245 %.pre84 = load i32, ptr %60, align 8, !tbaa !249 - br label %108 + br label %111 -108: ; preds = %.loopexit, %._crit_edge.loopexit - %109 = phi i32 [ %.pre84, %._crit_edge.loopexit ], [ %73, %.loopexit ] - %110 = phi ptr [ %.pre, %._crit_edge.loopexit ], [ %69, %.loopexit ] +111: ; preds = %.loopexit, %._crit_edge.loopexit + %112 = phi i32 [ %.pre84, %._crit_edge.loopexit ], [ %73, %.loopexit ] + %113 = phi ptr [ %.pre, %._crit_edge.loopexit ], [ %69, %.loopexit ] store ptr %78, ptr %77, align 8, !tbaa !446 - %111 = zext i32 %109 to i64 - call void @qsort(ptr noundef %110, i64 noundef %111, i64 noundef 16, ptr noundef nonnull @compare_kern_pairs) #16 + %114 = zext i32 %112 to i64 + call void @qsort(ptr noundef %113, i64 noundef %114, i64 noundef 16, ptr noundef nonnull @compare_kern_pairs) #16 %.pr.pre = load i32, ptr %4, align 4, !tbaa !19 - %112 = icmp eq i32 %.pr.pre, 0 - br i1 %112, label %.thread87, label %.thread + %115 = icmp eq i32 %.pr.pre, 0 + br i1 %115, label %.thread87, label %.thread -.thread.sink.split: ; preds = %52, %50, %3 +.thread.sink.split: ; preds = %55, %53, %3 store i32 2, ptr %4, align 4, !tbaa !19 br label %.thread -.thread: ; preds = %.thread.sink.split, %67, %108 - %113 = getelementptr inbounds nuw i8, ptr %2, i64 72 - %114 = load ptr, ptr %113, align 8, !tbaa !245 - call void @ft_mem_free(ptr noundef %6, ptr noundef %114) #16 - store ptr null, ptr %113, align 8, !tbaa !245 - %115 = getelementptr inbounds nuw i8, ptr %2, i64 80 - store i32 0, ptr %115, align 8, !tbaa !249 +.thread: ; preds = %.thread.sink.split, %67, %111 + %116 = getelementptr inbounds nuw i8, ptr %2, i64 72 + %117 = load ptr, ptr %116, align 8, !tbaa !245 + call void @ft_mem_free(ptr noundef %6, ptr noundef %117) #16 + store ptr null, ptr %116, align 8, !tbaa !245 + %118 = getelementptr inbounds nuw i8, ptr %2, i64 80 + store i32 0, ptr %118, align 8, !tbaa !249 %.pre86 = load i32, ptr %4, align 4, !tbaa !19 br label %.thread87 -.thread87: ; preds = %25, %13, %29, %65, %.thread, %108 - %116 = phi i32 [ %.pre86, %.thread ], [ 0, %108 ], [ 0, %65 ], [ 0, %29 ], [ 0, %13 ], [ 0, %25 ] +.thread87: ; preds = %25, %13, %29, %65, %.thread, %111 + %119 = phi i32 [ %.pre86, %.thread ], [ 0, %108 ], [ 0, %65 ], [ 0, %29 ], [ 0, %13 ], [ 0, %25 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #16 - ret i32 %116 + ret i32 %119 } declare hidden void @FT_Stream_ExitFrame(ptr noundef) local_unnamed_addr #5 diff --git a/bench/git/optimized/apply.ll b/bench/git/optimized/apply.ll index bacfc791991..98cf040af6b 100644 --- a/bench/git/optimized/apply.ll +++ b/bench/git/optimized/apply.ll @@ -9361,7 +9361,7 @@ define internal fastcc ptr @find_name_traditional(ptr noundef readonly captures( 7: ; preds = %4 %8 = tail call fastcc ptr @find_name_gnu(ptr noundef %0, ptr noundef nonnull %1, i32 noundef %3) %.not = icmp eq ptr %8, null - br i1 %.not, label %9, label %296 + br i1 %.not, label %9, label %299 9: ; preds = %7, %4 %10 = tail call ptr @strchrnul(ptr noundef nonnull %1, i32 noundef 10) #22 @@ -9562,7 +9562,7 @@ sane_tz_len.exit.i: ; preds = %31, %61, %54, %47, .thread82.i: ; preds = %124, %117, %110, %103, %96, %93, %86, %79, %76, %72, %.loopexit.i %125 = phi i64 [ %70, %117 ], [ %70, %76 ], [ %70, %79 ], [ %70, %86 ], [ %70, %93 ], [ %70, %96 ], [ %70, %103 ], [ %70, %110 ], [ %70, %72 ], [ %70, %124 ], [ 6, %.loopexit.i ] %126 = phi ptr [ %69, %117 ], [ %69, %76 ], [ %69, %79 ], [ %69, %86 ], [ %69, %93 ], [ %69, %96 ], [ %69, %103 ], [ %69, %110 ], [ %69, %72 ], [ %69, %124 ], [ %14, %.loopexit.i ] - %.090.i = phi i64 [ %.0.i, %117 ], [ %.0.i, %76 ], [ %.0.i, %79 ], [ %.0.i, %86 ], [ %.0.i, %93 ], [ %.0.i, %96 ], [ %.0.i, %103 ], [ %.0.i, %110 ], [ %.0.i, %72 ], [ %.0.i, %124 ], [ 0, %.loopexit.i ] + %.091.i = phi i64 [ %.0.i, %117 ], [ %.0.i, %76 ], [ %.0.i, %79 ], [ %.0.i, %86 ], [ %.0.i, %93 ], [ %.0.i, %96 ], [ %.0.i, %103 ], [ %.0.i, %110 ], [ %.0.i, %72 ], [ %.0.i, %124 ], [ 0, %.loopexit.i ] %127 = getelementptr i8, ptr %1, i64 %125 %128 = getelementptr i8, ptr %127, i64 -1 %129 = load i8, ptr %128, align 1, !tbaa !53 @@ -9685,9 +9685,9 @@ short_time_len.exit.i.i: ; preds = %189 short_time_len.exit.i: ; preds = %short_time_len.exit.i.i, %189, %182, %175, %168, %165, %158, %151, %148, %144, %140, %.critedge.i.i, %.thread82.i, %124, %117 %199 = phi ptr [ %69, %117 ], [ %126, %short_time_len.exit.i.i ], [ %126, %.thread82.i ], [ %69, %124 ], [ %126, %.critedge.i.i ], [ %126, %144 ], [ %126, %140 ], [ %126, %182 ], [ %126, %175 ], [ %126, %168 ], [ %126, %165 ], [ %126, %158 ], [ %126, %151 ], [ %126, %148 ], [ %126, %189 ] - %.089.i = phi i64 [ %.0.i, %117 ], [ %.090.i, %short_time_len.exit.i.i ], [ %.090.i, %.thread82.i ], [ %13, %124 ], [ %.090.i, %.critedge.i.i ], [ %.090.i, %144 ], [ %.090.i, %140 ], [ %.090.i, %182 ], [ %.090.i, %175 ], [ %.090.i, %168 ], [ %.090.i, %165 ], [ %.090.i, %158 ], [ %.090.i, %151 ], [ %.090.i, %148 ], [ %.090.i, %189 ] + %.090.i = phi i64 [ %.0.i, %117 ], [ %.091.i, %short_time_len.exit.i.i ], [ %.091.i, %.thread82.i ], [ %13, %124 ], [ %.091.i, %.critedge.i.i ], [ %.091.i, %144 ], [ %.091.i, %140 ], [ %.091.i, %182 ], [ %.091.i, %175 ], [ %.091.i, %168 ], [ %.091.i, %165 ], [ %.091.i, %158 ], [ %.091.i, %151 ], [ %.091.i, %148 ], [ %.091.i, %189 ] %.1.i = phi i64 [ 9, %117 ], [ %198, %short_time_len.exit.i.i ], [ 0, %.thread82.i ], [ 0, %124 ], [ 0, %.critedge.i.i ], [ 0, %144 ], [ 0, %140 ], [ 0, %182 ], [ 0, %175 ], [ 0, %168 ], [ 0, %165 ], [ 0, %158 ], [ 0, %151 ], [ 0, %148 ], [ 0, %189 ] - %200 = add i64 %.1.i, %.089.i + %200 = add i64 %.1.i, %.090.i %201 = sub i64 %13, %200 %202 = icmp ult i64 %201, 8 br i1 %202, label %diff_timestamp_len.exit.thread, label %203 @@ -9803,7 +9803,7 @@ date_len.exit.i: ; preds = %261, %254, %252 %275 = icmp eq ptr %274, %1 br i1 %275, label %diff_timestamp_len.exit.thread, label %276 -276: ; preds = %date_len.exit.i +276:; preds = %date_len.exit.i %277 = getelementptr inbounds i8, ptr %274, i64 -1 %278 = load i8, ptr %277, align 1, !tbaa !53 switch i8 %278, label %diff_timestamp_len.exit.thread [ @@ -9811,54 +9811,54 @@ date_len.exit.i: ; preds = %261, %254, %252 i8 32, label %282 ] -279: ; preds = %276 +280: ; preds = %276 %280 = ptrtoint ptr %277 to i64 %281 = sub i64 %11, %280 br label %diff_timestamp_len.exit -282: ; preds = %276 +281: ; preds = %276 %283 = ptrtoint ptr %274 to i64 br label %.preheader.i76.i .preheader.i76.i: ; preds = %284, %282 - %.0.i77.i = phi ptr [ %285, %284 ], [ %274, %282 ] + %.0.i77.i = phi ptr [ %287, %284 ], [ %274, %282 ] %.not16.i.i = icmp eq ptr %.0.i77.i, %1 - br i1 %.not16.i.i, label %trailing_spaces_len.exit.i, label %284 + br i1 %.not16.i.i, label %trailing_spaces_len.exit.i, label %286 -284: ; preds = %.preheader.i76.i - %285 = getelementptr inbounds i8, ptr %.0.i77.i, i64 -1 - %286 = load i8, ptr %285, align 1, !tbaa !53 - %.not17.i.i = icmp eq i8 %286, 32 - br i1 %.not17.i.i, label %.preheader.i76.i, label %287, !llvm.loop !219 +286: ; preds = %.preheader.i76.i + %287 = getelementptr inbounds i8, ptr %.0.i77.i, i64 -1 + %288 = load i8, ptr %287, align 1, !tbaa !53 + %.not17.i.i = icmp eq i8 %288, 32 + br i1 %.not17.i.i, label %.preheader.i76.i, label %289, !llvm.loop !219 -287: ; preds = %284 - %288 = ptrtoint ptr %.0.i77.i to i64 +289: ; preds = %286 + %290 = ptrtoint ptr %.0.i77.i to i64 br label %trailing_spaces_len.exit.i -trailing_spaces_len.exit.i: ; preds = %.preheader.i76.i, %287 - %.pn.i = phi i64 [ %288, %287 ], [ %12, %.preheader.i76.i ] - %.013.i.i = add i64 %270, %200 +trailing_spaces_len.exit.i: ; preds = %.preheader.i76.i, %289 + %.013.i.i = phi i64 [ %290, %287 ], [ %12, %.preheader.i76.i ] + %293 = add i64 %270, %200 %289 = add i64 %.013.i.i, %283 %290 = sub i64 %289, %.pn.i br label %diff_timestamp_len.exit -diff_timestamp_len.exit: ; preds = %279, %trailing_spaces_len.exit.i +diff_timestamp_len.exit: ; preds = %280, %trailing_spaces_len.exit.i %.042.i = phi i64 [ %281, %279 ], [ %290, %trailing_spaces_len.exit.i ] %.not26 = icmp eq i64 %.042.i, 0 - br i1 %.not26, label %diff_timestamp_len.exit.thread, label %292 + br i1 %.not26, label %diff_timestamp_len.exit.thread, label %295 diff_timestamp_len.exit.thread: ; preds = %207, %214, %221, %224, %231, %238, %245, %short_time_len.exit.i, %203, %276, %date_len.exit.i, %9, %diff_timestamp_len.exit - %291 = tail call fastcc ptr @find_name_common(ptr noundef %0, ptr noundef nonnull %1, ptr noundef %2, i32 noundef %3, ptr noundef null, i32 noundef 2) - br label %296 + %294 = tail call fastcc ptr @find_name_common(ptr noundef %0, ptr noundef nonnull %1, ptr noundef %2, i32 noundef %3, ptr noundef null, i32 noundef 2) + br label %299 -292: ; preds = %diff_timestamp_len.exit - %293 = sub i64 %13, %.042.i - %294 = getelementptr inbounds nuw i8, ptr %1, i64 %293 - %295 = tail call fastcc ptr @find_name_common(ptr noundef %0, ptr noundef nonnull %1, ptr noundef %2, i32 noundef %3, ptr noundef nonnull %294, i32 noundef 0) - br label %296 +295: ; preds = %diff_timestamp_len.exit + %296 = sub i64 %13, %.042.i + %297 = getelementptr inbounds nuw i8, ptr %1, i64 %296 + %298 = tail call fastcc ptr @find_name_common(ptr noundef %0, ptr noundef nonnull %1, ptr noundef %2, i32 noundef %3, ptr noundef nonnull %297, i32 noundef 0) + br label %299 -296: ; preds = %7, %292, %diff_timestamp_len.exit.thread - %.1 = phi ptr [ %295, %292 ], [ %291, %diff_timestamp_len.exit.thread ], [ %8, %7 ] +299: ; preds = %7, %295, %diff_timestamp_len.exit.thread + %.1 = phi ptr [ %298, %292 ], [ %294, %diff_timestamp_len.exit.thread ], [ %8, %7 ] ret ptr %.1 } diff --git a/bench/git/optimized/fast-import.ll b/bench/git/optimized/fast-import.ll index 05b8f1727f3..17f40dc4644 100644 --- a/bench/git/optimized/fast-import.ll +++ b/bench/git/optimized/fast-import.ll @@ -8071,53 +8071,53 @@ define internal fastcc ptr @parse_ident(ptr noundef %0) unnamed_addr #0 { i32 4, label %42 ] -30: ; preds = %24 - %31 = call fastcc i32 @validate_raw_date(ptr noundef nonnull %25, ptr noundef %2, i32 noundef 1) - %32 = icmp slt i32 %31, 0 - br i1 %32, label %33, label %46 +29: ; preds = %24 + %30 = call fastcc i32 @validate_raw_date(ptr noundef nonnull %25, ptr noundef %2, i32 noundef 1) + %31 = icmp slt i32 %30, 0 + br i1 %31, label %32, label %45 -33: ; preds = %30 +32: ; preds = %29 call void (ptr, ...) @die(ptr noundef nonnull @.str.116, ptr noundef nonnull %25, ptr noundef nonnull %spec.select) #25 unreachable -34: ; preds = %24 - %35 = call fastcc i32 @validate_raw_date(ptr noundef nonnull %25, ptr noundef %2, i32 noundef 0) - %36 = icmp slt i32 %35, 0 - br i1 %36, label %37, label %46 +33: ; preds = %24 + %34 = call fastcc i32 @validate_raw_date(ptr noundef nonnull %25, ptr noundef %2, i32 noundef 0) + %35 = icmp slt i32 %34, 0 + br i1 %35, label %36, label %45 -37: ; preds = %34 +36: ; preds = %33 call void (ptr, ...) @die(ptr noundef nonnull @.str.116, ptr noundef nonnull %25, ptr noundef nonnull %spec.select) #25 unreachable -38: ; preds = %24 - %39 = call i32 @parse_date(ptr noundef nonnull %25, ptr noundef nonnull %2) #24 - %40 = icmp slt i32 %39, 0 - br i1 %40, label %41, label %46 +37: ; preds = %24 + %38 = call i32 @parse_date(ptr noundef nonnull %25, ptr noundef nonnull %2) #24 + %39 = icmp slt i32 %38, 0 + br i1 %39, label %40, label %45 -41: ; preds = %38 +40: ; preds = %37 call void (ptr, ...) @die(ptr noundef nonnull @.str.117, ptr noundef nonnull %25, ptr noundef nonnull %spec.select) #25 unreachable -42: ; preds = %24 - %43 = call i32 @strcmp(ptr noundef nonnull dereferenceable(4) @.str.118, ptr noundef nonnull dereferenceable(1) %25) #26 - %.not37 = icmp eq i32 %43, 0 - br i1 %.not37, label %45, label %44 +41: ; preds = %24 + %42 = call i32 @strcmp(ptr noundef nonnull dereferenceable(4) @.str.118, ptr noundef nonnull dereferenceable(1) %25) #26 + %.not37 = icmp eq i32 %42, 0 + br i1 %.not37, label %44, label %43 -44: ; preds = %42 +43: ; preds = %41 call void (ptr, ...) @die(ptr noundef nonnull @.str.119, ptr noundef nonnull %spec.select) #25 unreachable -45: ; preds = %42 +44: ; preds = %41 call void @datestamp(ptr noundef nonnull %2) #24 - br label %46 + br label %45 default.unreachable: ; preds = %24 unreachable -46: ; preds = %38, %34, %30, %45 - %47 = call ptr @strbuf_detach(ptr noundef nonnull %2, ptr noundef null) #24 +45: ; preds = %37, %33, %29, %44 + %46 = call ptr @strbuf_detach(ptr noundef nonnull %2, ptr noundef null) #24 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) #24 - ret ptr %47 + ret ptr %46 } ; Function Attrs: nounwind uwtable diff --git a/bench/git/optimized/packfile.ll b/bench/git/optimized/packfile.ll index 732543594a7..7b7a46d5fec 100644 --- a/bench/git/optimized/packfile.ll +++ b/bench/git/optimized/packfile.ll @@ -5218,7 +5218,7 @@ st_mult.exit32: ; preds = %st_mult.exit23 %44 = icmp ult ptr %43, %4 br i1 %44, label %45, label %48 -45: ; preds = %st_mult.exit32 +45: ; preds = %st_mult.exit32 %46 = tail call fastcc ptr @_(ptr noundef nonnull @.str.41) %47 = getelementptr inbounds nuw i8, ptr %0, i64 248 tail call void (ptr, ...) @die(ptr noundef %46, ptr noundef nonnull %47) #25 @@ -5239,10 +5239,10 @@ st_mult.exit32: ; preds = %st_mult.exit23 unreachable check_pack_index_ptr.exit: ; preds = %48 - %56 = load i8, ptr %43, align 1, !tbaa !12 - %57 = zext i8 %56 to i64 - %58 = shl nuw nsw i64 %57, 24 - %59 = getelementptr inbounds nuw i8, ptr %43, i64 1 + %51 = load i8, ptr %43, align 1, !tbaa !12 + %52 = zext i8 %51 to i64 + %53 = shl nuw nsw i64 %52, 24 + %54 = getelementptr inbounds nuw i8, ptr %43, i64 1 %60 = load i8, ptr %59, align 1, !tbaa !12 %61 = zext i8 %60 to i64 %62 = shl nuw nsw i64 %61, 16 diff --git a/bench/hyperscan/optimized/runtime.ll b/bench/hyperscan/optimized/runtime.ll index c5ac16b83d2..479a718a965 100644 --- a/bench/hyperscan/optimized/runtime.ll +++ b/bench/hyperscan/optimized/runtime.ll @@ -582,13 +582,13 @@ initSomState.exit: ; preds = %2, %13, %24 switch i8 %46, label %337 [ i8 0, label %nfaRevAccelCheck.exit i8 5, label %47 - i8 6, label %107 - i8 7, label %171 - i8 8, label %232 - i8 9, label %297 - i8 10, label %306 - i8 11, label %316 - i8 12, label %326 + i8 6, label %109 + i8 7, label %175 + i8 8, label %238 + i8 9, label %305 + i8 10, label %314 + i8 11, label %324 + i8 12, label %334 ] 47: ; preds = %44 @@ -598,7 +598,7 @@ initSomState.exit: ; preds = %2, %13, %24 %51 = zext i8 %50 to i64 %52 = sub i64 %48, %51 %53 = icmp ult i64 %52, 16 - br i1 %53, label %337, label %54 + br i1 %53, label %345, label %54 54: ; preds = %47 %55 = getelementptr inbounds nuw i8, ptr %35, i64 12 @@ -625,7 +625,7 @@ initSomState.exit: ; preds = %2, %13, %24 %65 = ptrtoint ptr %.ptr173 to i64 %66 = and i64 %65, 15 %.not.i34 = icmp eq i64 %66, 0 - br i1 %.not.i34, label %.preheader244, label %67 + br i1 %.not.i34, label %.preheader252, label %67 67: ; preds = %64 %68 = getelementptr inbounds i8, ptr %.ptr173, i64 -16 @@ -648,559 +648,559 @@ initSomState.exit: ; preds = %2, %13, %24 %.add169 = sub nuw nsw i64 %52, %66 br label %.preheader244 -.preheader244: ; preds = %78, %64 +.preheader252: ; preds = %78, %64 %.014.i73.idx.ph = phi i64 [ %52, %64 ], [ %.add169, %78 ] - br label %79 + br label %81 -79: ; preds = %.preheader244, %81 +81: ; preds = %.preheader252, %83 %.014.i73.idx = phi i64 [ %.014.i73.add, %81 ], [ %.014.i73.idx.ph, %.preheader244 ] - %80 = icmp sgt i64 %.014.i73.idx, 15 - br i1 %80, label %81, label %91 + %82 = icmp sgt i64 %.014.i73.idx, 15 + br i1 %82, label %83, label %93 -81: ; preds = %79 +83: ; preds = %81 %.014.i73.add = add nsw i64 %.014.i73.idx, -16 %.ptr170 = getelementptr inbounds i8, ptr %37, i64 %.014.i73.add call void @llvm.assume(i1 true) [ "align"(ptr %.ptr170, i64 16) ] - %82 = load <16 x i8>, ptr %.ptr170, align 16 - %83 = icmp eq <16 x i8> %58, %82 - %84 = bitcast <16 x i1> %83 to i16 - %.not.i75.not = icmp eq i16 %84, 0 - br i1 %.not.i75.not, label %79, label %rvermSearchAligned.exit, !prof !6 + %84 = load <16 x i8>, ptr %.ptr170, align 16 + %85 = icmp eq <16 x i8> %58, %84 + %86 = bitcast <16 x i1> %85 to i16 + %.not.i75.not = icmp eq i16 %86, 0 + br i1 %.not.i75.not, label %81, label %rvermSearchAligned.exit, !prof !6 -rvermSearchAligned.exit: ; preds = %81 +rvermSearchAligned.exit: ; preds = %83 %.014.i73.ptr.le = getelementptr inbounds nuw i8, ptr %37, i64 %.014.i73.idx - %85 = zext i16 %84 to i32 - %86 = getelementptr inbounds nuw i8, ptr %.014.i73.ptr.le, i64 15 - %87 = tail call range(i32 0, 32) i32 @llvm.ctlz.i32(i32 range(i32 1, 0) %85, i1 true) - %88 = zext nneg i32 %87 to i64 - %89 = sub nsw i64 0, %88 - %90 = getelementptr inbounds i8, ptr %86, i64 %89 + %87 = zext i16 %86 to i32 + %88 = getelementptr inbounds nuw i8, ptr %.014.i73.ptr.le, i64 15 + %89 = tail call range(i32 0, 32) i32 @llvm.ctlz.i32(i32 range(i32 1, 0) %87, i1 true) + %90 = zext nneg i32 %89 to i64 + %91 = sub nsw i64 0, %90 + %92 = getelementptr inbounds i8, ptr %88, i64 %91 br label %rvermicelliExec.exit -91: ; preds = %79 - %92 = load <16 x i8>, ptr %37, align 1 - %93 = icmp eq <16 x i8> %58, %92 - %94 = bitcast <16 x i1> %93 to i16 - %.not.i67 = icmp eq i16 %94, 0 - br i1 %.not.i67, label %rvermUnalign.exit, label %95, !prof !6 - -95: ; preds = %91 - %96 = zext i16 %94 to i32 - %97 = getelementptr inbounds nuw i8, ptr %37, i64 31 - %98 = tail call range(i32 0, 32) i32 @llvm.ctlz.i32(i32 range(i32 1, 0) %96, i1 true) - %99 = zext nneg i32 %98 to i64 - %100 = sub nsw i64 0, %99 - %101 = getelementptr inbounds i8, ptr %97, i64 %100 +93: ; preds = %81 + %94 = load <16 x i8>, ptr %37, align 1 + %95 = icmp eq <16 x i8> %58, %94 + %96 = bitcast <16 x i1> %95 to i16 + %.not.i67 = icmp eq i16 %96, 0 + br i1 %.not.i67, label %rvermUnalign.exit, label %97, !prof !6 + +97: ; preds = %93 + %98 = zext i16 %96 to i32 + %99 = getelementptr inbounds nuw i8, ptr %37, i64 31 + %100 = tail call range(i32 0, 32) i32 @llvm.ctlz.i32(i32 range(i32 1, 0) %98, i1 true) + %101 = zext nneg i32 %100 to i64 + %102 = sub nsw i64 0, %101 + %103 = getelementptr inbounds i8, ptr %99, i64 %102 br label %rvermUnalign.exit -rvermUnalign.exit: ; preds = %91, %95 - %.08.i = phi ptr [ %101, %95 ], [ null, %91 ] +rvermUnalign.exit: ; preds = %93, %97 + %.08.i = phi ptr [ %103, %95 ], [ null, %91 ] %.not62.i = icmp eq ptr %.08.i, null - %102 = getelementptr inbounds i8, ptr %37, i64 -1 - %103 = select i1 %.not62.i, ptr %102, ptr %.08.i + %104 = getelementptr inbounds i8, ptr %37, i64 -1 + %105 = select i1 %.not62.i, ptr %104, ptr %.08.i br label %rvermicelliExec.exit rvermicelliExec.exit: ; preds = %.preheader, %61, %rvermSearchAligned.exit, %.thread, %rvermUnalign.exit - %.0.i35 = phi ptr [ %103, %rvermUnalign.exit ], [ %90, %rvermSearchAligned.exit ], [ %77, %.thread ], [ %.046.i, %61 ], [ %.046.i, %.preheader ] - %104 = ptrtoint ptr %.0.i35 to i64 - %105 = sub i64 %51, %59 - %106 = add i64 %105, %104 - br label %337 - -107: ; preds = %44 - %108 = add i64 %39, 1 - %109 = getelementptr inbounds nuw i8, ptr %35, i64 10 - %110 = load i8, ptr %109, align 2 - %111 = zext i8 %110 to i64 - %112 = sub i64 %108, %111 - %113 = icmp ult i64 %112, 16 - br i1 %113, label %337, label %114 - -114: ; preds = %107 - %115 = getelementptr inbounds nuw i8, ptr %35, i64 12 - %116 = load i8, ptr %115, align 4 - %.ptr165 = getelementptr inbounds i8, ptr %37, i64 %112 - %117 = insertelement <16 x i8> poison, i8 %116, i64 0 - %118 = shufflevector <16 x i8> %117, <16 x i8> poison, <16 x i32> zeroinitializer - %119 = ptrtoint ptr %37 to i64 - %120 = icmp slt i64 %112, 16 - br i1 %120, label %.preheader182, label %125 - -.preheader182: ; preds = %114, %121 + %.0.i35 = phi ptr [ %105, %rvermUnalign.exit ], [ %92, %rvermSearchAligned.exit ], [ %77, %.thread ], [ %.046.i, %61 ], [ %.046.i, %.preheader ] + %106 = ptrtoint ptr %.0.i35 to i64 + %107 = sub i64 %51, %59 + %108 = add i64 %107, %106 + br label %345 + +109: ; preds = %44 + %110 = add i64 %39, 1 + %111 = getelementptr inbounds nuw i8, ptr %35, i64 10 + %112 = load i8, ptr %111, align 2 + %113 = zext i8 %112 to i64 + %114 = sub i64 %110, %113 + %115 = icmp ult i64 %114, 16 + br i1 %115, label %345, label %116 + +116: ; preds = %109 + %117 = getelementptr inbounds nuw i8, ptr %35, i64 12 + %118 = load i8, ptr %117, align 4 + %.ptr165 = getelementptr inbounds i8, ptr %37, i64 %114 + %119 = insertelement <16 x i8> poison, i8 %118, i64 0 + %120 = shufflevector <16 x i8> %119, <16 x i8> poison, <16 x i32> zeroinitializer + %121 = ptrtoint ptr %37 to i64 + %122 = icmp slt i64 %114, 16 + br i1 %122, label %.preheader190, label %127 + +.preheader190: ; preds = %116, %123 %.pn.i47 = phi ptr [ %.046.i48, %121 ], [ %.ptr165, %114 ] %.046.i48 = getelementptr inbounds i8, ptr %.pn.i47, i64 -1 %.not63.i49 = icmp ult ptr %.046.i48, %37 - br i1 %.not63.i49, label %rvermicelliExec.exit50, label %121 - -121: ; preds = %.preheader182 - %122 = load i8, ptr %.046.i48, align 1 - %123 = and i8 %122, -33 - %124 = icmp eq i8 %123, %116 - br i1 %124, label %rvermicelliExec.exit50, label %.preheader182 - -125: ; preds = %114 - %126 = ptrtoint ptr %.ptr165 to i64 - %127 = and i64 %126, 15 - %.not.i37 = icmp eq i64 %127, 0 - br i1 %.not.i37, label %.preheader246, label %128 - -128: ; preds = %125 - %129 = getelementptr inbounds i8, ptr %.ptr165, i64 -16 - %130 = load <16 x i8>, ptr %129, align 1 - %131 = and <16 x i8> %130, splat (i8 -33) - %132 = icmp eq <16 x i8> %118, %131 - %133 = bitcast <16 x i1> %132 to i16 - %.not.i64 = icmp eq i16 %133, 0 - br i1 %.not.i64, label %140, label %.thread102, !prof !6 - -.thread102: ; preds = %128 - %134 = zext i16 %133 to i32 - %135 = getelementptr inbounds nuw i8, ptr %.ptr165, i64 15 - %136 = tail call range(i32 0, 32) i32 @llvm.ctlz.i32(i32 range(i32 1, 0) %134, i1 true) - %137 = zext nneg i32 %136 to i64 - %138 = sub nsw i64 0, %137 - %139 = getelementptr inbounds i8, ptr %135, i64 %138 + br i1 %.not63.i49, label %rvermicelliExec.exit50, label %123 + +123: ; preds = %.preheader190 + %124 = load i8, ptr %.046.i48, align 1 + %125 = and i8 %124, -33 + %126 = icmp eq i8 %125, %118 + br i1 %126, label %rvermicelliExec.exit50, label %.preheader190 + +127: ; preds = %116 + %128 = ptrtoint ptr %.ptr165 to i64 + %129 = and i64 %128, 15 + %.not.i37 = icmp eq i64 %129, 0 + br i1 %.not.i37, label %.preheader254, label %130 + +130: ; preds = %127 + %131 = getelementptr inbounds i8, ptr %.ptr165, i64 -16 + %132 = load <16 x i8>, ptr %131, align 1 + %133 = and <16 x i8> %132, splat (i8 -33) + %134 = icmp eq <16 x i8> %120, %133 + %135 = bitcast <16 x i1> %134 to i16 + %.not.i64 = icmp eq i16 %135, 0 + br i1 %.not.i64, label %142, label %.thread102, !prof !6 + +.thread102: ; preds = %130 + %136 = zext i16 %135 to i32 + %137 = getelementptr inbounds nuw i8, ptr %.ptr165, i64 15 + %138 = tail call range(i32 0, 32) i32 @llvm.ctlz.i32(i32 range(i32 1, 0) %136, i1 true) + %139 = zext nneg i32 %138 to i64 + %140 = sub nsw i64 0, %139 + %141 = getelementptr inbounds i8, ptr %137, i64 %140 br label %rvermicelliExec.exit50 -140: ; preds = %128 - %.add161 = sub nuw nsw i64 %112, %127 +142: ; preds = %130 + %.add161 = sub nuw nsw i64 %114, %129 br label %.preheader246 -.preheader246: ; preds = %140, %125 - %.015.i.idx.ph = phi i64 [ %112, %125 ], [ %.add161, %140 ] - br label %141 +.preheader254: ; preds = %142, %127 + %.015.i.idx.ph = phi i64 [ %114, %125 ], [ %.add161, %140 ] + br label %145 -141: ; preds = %.preheader246, %143 +145: ; preds = %.preheader254, %147 %.015.i.idx = phi i64 [ %.015.i.add, %143 ], [ %.015.i.idx.ph, %.preheader246 ] - %142 = icmp sgt i64 %.015.i.idx, 15 - br i1 %142, label %143, label %154 + %146 = icmp sgt i64 %.015.i.idx, 15 + br i1 %146, label %147, label %158 -143: ; preds = %141 +147: ; preds = %145 %.015.i.add = add nsw i64 %.015.i.idx, -16 %.ptr162 = getelementptr inbounds i8, ptr %37, i64 %.015.i.add call void @llvm.assume(i1 true) [ "align"(ptr %.ptr162, i64 16) ] - %144 = load <16 x i8>, ptr %.ptr162, align 16 - %145 = and <16 x i8> %144, splat (i8 -33) - %146 = icmp eq <16 x i8> %118, %145 - %147 = bitcast <16 x i1> %146 to i16 - %.not.i71 = icmp eq i16 %147, 0 - br i1 %.not.i71, label %141, label %rvermSearchAlignedNocase.exit, !prof !6 - -rvermSearchAlignedNocase.exit: ; preds = %143 + %148 = load <16 x i8>, ptr %.ptr162, align 16 + %149 = and <16 x i8> %148, splat (i8 -33) + %150 = icmp eq <16 x i8> %120, %149 + %151 = bitcast <16 x i1> %150 to i16 + %.not.i71 = icmp eq i16 %151, 0 + br i1 %.not.i71, label %145, label %rvermSearchAlignedNocase.exit, !prof !6 + +rvermSearchAlignedNocase.exit: ; preds = %147 %.015.i.ptr.le = getelementptr inbounds nuw i8, ptr %37, i64 %.015.i.idx - %148 = zext i16 %147 to i32 - %149 = getelementptr inbounds nuw i8, ptr %.015.i.ptr.le, i64 15 - %150 = tail call range(i32 0, 32) i32 @llvm.ctlz.i32(i32 range(i32 1, 0) %148, i1 true) - %151 = zext nneg i32 %150 to i64 - %152 = sub nsw i64 0, %151 - %153 = getelementptr inbounds i8, ptr %149, i64 %152 + %152 = zext i16 %151 to i32 + %153 = getelementptr inbounds nuw i8, ptr %.015.i.ptr.le, i64 15 + %154 = tail call range(i32 0, 32) i32 @llvm.ctlz.i32(i32 range(i32 1, 0) %152, i1 true) + %155 = zext nneg i32 %154 to i64 + %156 = sub nsw i64 0, %155 + %157 = getelementptr inbounds i8, ptr %153, i64 %156 br label %rvermicelliExec.exit50 -154: ; preds = %141 - %155 = load <16 x i8>, ptr %37, align 1 - %156 = and <16 x i8> %155, splat (i8 -33) - %157 = icmp eq <16 x i8> %118, %156 - %158 = bitcast <16 x i1> %157 to i16 - %.not.i63 = icmp eq i16 %158, 0 - br i1 %.not.i63, label %rvermUnalignNocase.exit, label %159, !prof !6 - -159: ; preds = %154 - %160 = zext i16 %158 to i32 - %161 = getelementptr inbounds nuw i8, ptr %37, i64 31 - %162 = tail call range(i32 0, 32) i32 @llvm.ctlz.i32(i32 range(i32 1, 0) %160, i1 true) - %163 = zext nneg i32 %162 to i64 - %164 = sub nsw i64 0, %163 - %165 = getelementptr inbounds i8, ptr %161, i64 %164 +158: ; preds = %145 + %159 = load <16 x i8>, ptr %37, align 1 + %160 = and <16 x i8> %159, splat (i8 -33) + %161 = icmp eq <16 x i8> %120, %160 + %162 = bitcast <16 x i1> %161 to i16 + %.not.i63 = icmp eq i16 %162, 0 + br i1 %.not.i63, label %rvermUnalignNocase.exit, label %163, !prof !6 + +163: ; preds = %158 + %164 = zext i16 %162 to i32 + %165 = getelementptr inbounds nuw i8, ptr %37, i64 31 + %166 = tail call range(i32 0, 32) i32 @llvm.ctlz.i32(i32 range(i32 1, 0) %164, i1 true) + %167 = zext nneg i32 %166 to i64 + %168 = sub nsw i64 0, %167 + %169 = getelementptr inbounds i8, ptr %165, i64 %168 br label %rvermUnalignNocase.exit -rvermUnalignNocase.exit: ; preds = %154, %159 - %.09.i = phi ptr [ %165, %159 ], [ null, %154 ] +rvermUnalignNocase.exit: ; preds = %158, %163 + %.09.i = phi ptr [ %169, %159 ], [ null, %154 ] %.not62.i45 = icmp eq ptr %.09.i, null - %166 = getelementptr inbounds i8, ptr %37, i64 -1 - %167 = select i1 %.not62.i45, ptr %166, ptr %.09.i + %170 = getelementptr inbounds i8, ptr %37, i64 -1 + %171 = select i1 %.not62.i45, ptr %170, ptr %.09.i br label %rvermicelliExec.exit50 -rvermicelliExec.exit50: ; preds = %.preheader182, %121, %rvermSearchAlignedNocase.exit, %.thread102, %rvermUnalignNocase.exit - %.0.i42 = phi ptr [ %167, %rvermUnalignNocase.exit ], [ %153, %rvermSearchAlignedNocase.exit ], [ %139, %.thread102 ], [ %.046.i48, %121 ], [ %.046.i48, %.preheader182 ] - %168 = ptrtoint ptr %.0.i42 to i64 - %169 = sub i64 %111, %119 - %170 = add i64 %169, %168 - br label %337 - -171: ; preds = %44 - %172 = add i64 %39, 1 - %173 = getelementptr inbounds nuw i8, ptr %35, i64 10 - %174 = load i8, ptr %173, align 2 - %175 = zext i8 %174 to i64 - %176 = sub i64 %172, %175 - %177 = icmp ult i64 %176, 17 - br i1 %177, label %337, label %178 - -178: ; preds = %171 - %179 = getelementptr inbounds nuw i8, ptr %35, i64 12 - %180 = load i8, ptr %179, align 4 - %181 = getelementptr inbounds nuw i8, ptr %35, i64 13 - %182 = load i8, ptr %181, align 1 - %.ptr157 = getelementptr inbounds i8, ptr %37, i64 %176 - %183 = insertelement <16 x i8> poison, i8 %180, i64 0 - %184 = shufflevector <16 x i8> %183, <16 x i8> poison, <16 x i32> zeroinitializer - %185 = insertelement <16 x i8> poison, i8 %182, i64 0 - %186 = shufflevector <16 x i8> %185, <16 x i8> poison, <16 x i32> zeroinitializer - %187 = ptrtoint ptr %.ptr157 to i64 - %188 = and i64 %187, 15 - %.not.i51 = icmp eq i64 %188, 0 - br i1 %.not.i51, label %.preheader249, label %189 - -189: ; preds = %178 - %190 = getelementptr inbounds i8, ptr %.ptr157, i64 -16 - %191 = load <16 x i8>, ptr %190, align 1 - %192 = icmp eq <16 x i8> %186, %191 - %193 = icmp eq <16 x i8> %184, %191 - %194 = sext <16 x i1> %193 to <16 x i8> - %195 = shufflevector <16 x i8> , <16 x i8> %194, <16 x i32> - %196 = icmp slt <16 x i8> %195, zeroinitializer - %197 = select <16 x i1> %192, <16 x i1> %196, <16 x i1> zeroinitializer - %198 = bitcast <16 x i1> %197 to i16 - %.not.i79 = icmp eq i16 %198, 0 +rvermicelliExec.exit50: ; preds = %.preheader190, %123, %rvermSearchAlignedNocase.exit, %.thread102, %rvermUnalignNocase.exit + %.0.i42 = phi ptr [ %167, %rvermUnalignNocase.exit ], [ %157, %rvermSearchAlignedNocase.exit ], [ %141, %.thread102 ], [ %.046.i48, %121 ], [ %.046.i48, %.preheader182 ] + %172 = ptrtoint ptr %.0.i42 to i64 + %173 = sub i64 %113, %121 + %174 = add i64 %173, %172 + br label %345 + +175: ; preds = %44 + %176 = add i64 %39, 1 + %177 = getelementptr inbounds nuw i8, ptr %35, i64 10 + %178 = load i8, ptr %177, align 2 + %179 = zext i8 %178 to i64 + %180 = sub i64 %176, %179 + %181 = icmp ult i64 %180, 17 + br i1 %181, label %345, label %182 + +182: ; preds = %175 + %183 = getelementptr inbounds nuw i8, ptr %35, i64 12 + %184 = load i8, ptr %183, align 4 + %185 = getelementptr inbounds nuw i8, ptr %35, i64 13 + %186 = load i8, ptr %185, align 1 + %.ptr157 = getelementptr inbounds i8, ptr %37, i64 %180 + %187 = insertelement <16 x i8> poison, i8 %184, i64 0 + %188 = shufflevector <16 x i8> %187, <16 x i8> poison, <16 x i32> zeroinitializer + %189 = insertelement <16 x i8> poison, i8 %186, i64 0 + %190 = shufflevector <16 x i8> %189, <16 x i8> poison, <16 x i32> zeroinitializer + %191 = ptrtoint ptr %.ptr157 to i64 + %192 = and i64 %191, 15 + %.not.i51 = icmp eq i64 %192, 0 + br i1 %.not.i51, label %.preheader257, label %193 + +193: ; preds = %182 + %194 = getelementptr inbounds i8, ptr %.ptr157, i64 -16 + %195 = load <16 x i8>, ptr %194, align 1 + %196 = icmp eq <16 x i8> %190, %195 + %197 = icmp eq <16 x i8> %188, %195 + %198 = sext <16 x i1> %197 to <16 x i8> + %199 = shufflevector <16 x i8> , <16 x i8> %198, <16 x i32> + %200 = icmp slt <16 x i8> %199, zeroinitializer + %201 = select <16 x i1> %196, <16 x i1> %200, <16 x i1> zeroinitializer + %202 = bitcast <16 x i1> %201 to i16 + %.not.i79 = icmp eq i16 %202, 0 br i1 %.not.i79, label %rdvermPrecondition.exit, label %rdvermPrecondition.exit.thread, !prof !6 -rdvermPrecondition.exit.thread: ; preds = %189 - %199 = zext i16 %198 to i32 - %200 = getelementptr inbounds nuw i8, ptr %.ptr157, i64 15 - %201 = tail call range(i32 0, 32) i32 @llvm.ctlz.i32(i32 range(i32 1, 0) %199, i1 true) - %202 = zext nneg i32 %201 to i64 - %203 = sub nsw i64 0, %202 - %204 = getelementptr inbounds i8, ptr %200, i64 %203 +rdvermPrecondition.exit.thread: ; preds = %193 + %203 = zext i16 %202 to i32 + %204 = getelementptr inbounds nuw i8, ptr %.ptr157, i64 15 + %205 = tail call range(i32 0, 32) i32 @llvm.ctlz.i32(i32 range(i32 1, 0) %203, i1 true) + %206 = zext nneg i32 %205 to i64 + %207 = sub nsw i64 0, %206 + %208 = getelementptr inbounds i8, ptr %204, i64 %207 br label %rvermicelliDoubleExec.exit -rdvermPrecondition.exit: ; preds = %189 - %.add153 = sub nuw nsw i64 %176, %188 +rdvermPrecondition.exit: ; preds = %193 + %.add153 = sub nuw nsw i64 %180, %192 %.ptr158 = getelementptr inbounds i8, ptr %37, i64 %.add153 %.not41.i = icmp sgt i64 %.add153, 0 br i1 %.not41.i, label %.preheader249, label %rvermicelliDoubleExec.exit -.preheader249: ; preds = %rdvermPrecondition.exit, %178 - %.020.i84.idx.ph = phi i64 [ %176, %178 ], [ %.add153, %rdvermPrecondition.exit ] - br label %205 +.preheader257: ; preds = %rdvermPrecondition.exit, %182 + %.020.i84.idx.ph = phi i64 [ %180, %178 ], [ %.add153, %rdvermPrecondition.exit ] + br label %211 -205: ; preds = %.preheader249, %221 +211: ; preds = %.preheader257, %227 %.020.i84.idx = phi i64 [ %.020.i84.add, %221 ], [ %.020.i84.idx.ph, %.preheader249 ] %.020.i84.ptr = getelementptr inbounds i8, ptr %37, i64 %.020.i84.idx - %206 = icmp sgt i64 %.020.i84.idx, 16 - br i1 %206, label %207, label %rvermicelliDoubleExec.exit + %212 = icmp sgt i64 %.020.i84.idx, 16 + br i1 %212, label %213, label %rvermicelliDoubleExec.exit -207: ; preds = %205 +213: ; preds = %211 %.020.i84.add = add nsw i64 %.020.i84.idx, -16 %.ptr154 = getelementptr inbounds i8, ptr %37, i64 %.020.i84.add call void @llvm.assume(i1 true) [ "align"(ptr %.ptr154, i64 16) ] - %208 = load <16 x i8>, ptr %.ptr154, align 16 - %209 = icmp eq <16 x i8> %186, %208 - %210 = icmp eq <16 x i8> %184, %208 - %211 = sext <16 x i1> %210 to <16 x i8> - %212 = shufflevector <16 x i8> , <16 x i8> %211, <16 x i32> - %213 = icmp slt <16 x i8> %212, zeroinitializer - %214 = select <16 x i1> %209, <16 x i1> %213, <16 x i1> zeroinitializer - %215 = bitcast <16 x i1> %214 to i16 - %216 = getelementptr inbounds i8, ptr %.020.i84.ptr, i64 -17 - %217 = load i8, ptr %216, align 1 - %218 = icmp eq i8 %217, %180 - %219 = extractelement <16 x i8> %208, i64 0 - %220 = icmp eq i8 %219, %182 - %or.cond = select i1 %218, i1 %220, i1 false - br i1 %or.cond, label %.thread122.split.loop.exit194, label %221 - -221: ; preds = %207 - %.not.i86.not = icmp eq i16 %215, 0 - br i1 %.not.i86.not, label %205, label %.thread122, !prof !7 - -.thread122.split.loop.exit194: ; preds = %207 - %222 = or i16 %215, 1 + %214 = load <16 x i8>, ptr %.ptr154, align 16 + %215 = icmp eq <16 x i8> %190, %214 + %216 = icmp eq <16 x i8> %188, %214 + %217 = sext <16 x i1> %216 to <16 x i8> + %218 = shufflevector <16 x i8> , <16 x i8> %217, <16 x i32> + %219 = icmp slt <16 x i8> %218, zeroinitializer + %220 = select <16 x i1> %215, <16 x i1> %219, <16 x i1> zeroinitializer + %221 = bitcast <16 x i1> %220 to i16 + %222 = getelementptr inbounds i8, ptr %.020.i84.ptr, i64 -17 + %223 = load i8, ptr %222, align 1 + %224 = icmp eq i8 %223, %184 + %225 = extractelement <16 x i8> %214, i64 0 + %226 = icmp eq i8 %225, %186 + %or.cond = select i1 %224, i1 %226, i1 false + br i1 %or.cond, label %.thread122.split.loop.exit202, label %227 + +227: ; preds = %213 + %.not.i86.not = icmp eq i16 %221, 0 + br i1 %.not.i86.not, label %211, label %.thread122, !prof !7 + +.thread122.split.loop.exit202: ; preds = %213 + %228 = or i16 %221, 1 br label %.thread122 -.thread122: ; preds = %221, %.thread122.split.loop.exit194 - %.018.i119.in = phi i16 [ %222, %.thread122.split.loop.exit194 ], [ %215, %221 ] +.thread122: ; preds = %227, %.thread122.split.loop.exit202 + %.018.i119.in = phi i16 [ %228, %.thread122.split.loop.exit194 ], [ %221, %221 ] %.018.i119 = zext i16 %.018.i119.in to i32 - %223 = getelementptr inbounds nuw i8, ptr %.020.i84.ptr, i64 15 - %224 = tail call range(i32 0, 32) i32 @llvm.ctlz.i32(i32 range(i32 1, 0) %.018.i119, i1 true) - %225 = zext nneg i32 %224 to i64 - %226 = sub nsw i64 0, %225 - %227 = getelementptr inbounds i8, ptr %223, i64 %226 + %229 = getelementptr inbounds nuw i8, ptr %.020.i84.ptr, i64 15 + %230 = tail call range(i32 0, 32) i32 @llvm.ctlz.i32(i32 range(i32 1, 0) %.018.i119, i1 true) + %231 = zext nneg i32 %230 to i64 + %232 = sub nsw i64 0, %231 + %233 = getelementptr inbounds i8, ptr %229, i64 %232 br label %rvermicelliDoubleExec.exit -rvermicelliDoubleExec.exit: ; preds = %205, %.thread122, %rdvermPrecondition.exit.thread, %rdvermPrecondition.exit - %.1.i53 = phi ptr [ %.ptr158, %rdvermPrecondition.exit ], [ %204, %rdvermPrecondition.exit.thread ], [ %227, %.thread122 ], [ %.020.i84.ptr, %205 ] - %228 = ptrtoint ptr %.1.i53 to i64 - %229 = ptrtoint ptr %37 to i64 - %230 = sub i64 %175, %229 - %231 = add i64 %230, %228 - br label %337 - -232: ; preds = %44 - %233 = add i64 %39, 1 - %234 = getelementptr inbounds nuw i8, ptr %35, i64 10 - %235 = load i8, ptr %234, align 2 - %236 = zext i8 %235 to i64 - %237 = sub i64 %233, %236 - %238 = icmp ult i64 %237, 17 - br i1 %238, label %337, label %239 - -239: ; preds = %232 - %240 = getelementptr inbounds nuw i8, ptr %35, i64 12 - %241 = load i8, ptr %240, align 4 - %242 = getelementptr inbounds nuw i8, ptr %35, i64 13 - %243 = load i8, ptr %242, align 1 - %.ptr149 = getelementptr inbounds i8, ptr %37, i64 %237 - %244 = insertelement <16 x i8> poison, i8 %241, i64 0 - %245 = shufflevector <16 x i8> %244, <16 x i8> poison, <16 x i32> zeroinitializer - %246 = insertelement <16 x i8> poison, i8 %243, i64 0 - %247 = shufflevector <16 x i8> %246, <16 x i8> poison, <16 x i32> zeroinitializer - %248 = ptrtoint ptr %.ptr149 to i64 - %249 = and i64 %248, 15 - %.not.i54 = icmp eq i64 %249, 0 - br i1 %.not.i54, label %.preheader255, label %250 - -250: ; preds = %239 - %251 = getelementptr inbounds i8, ptr %.ptr149, i64 -16 - %252 = load <16 x i8>, ptr %251, align 1 - %253 = and <16 x i8> %252, splat (i8 -33) - %254 = icmp eq <16 x i8> %247, %253 - %255 = icmp eq <16 x i8> %245, %253 - %256 = sext <16 x i1> %255 to <16 x i8> - %257 = shufflevector <16 x i8> , <16 x i8> %256, <16 x i32> - %258 = icmp slt <16 x i8> %257, zeroinitializer - %259 = select <16 x i1> %254, <16 x i1> %258, <16 x i1> zeroinitializer - %260 = bitcast <16 x i1> %259 to i16 - %.not.i77 = icmp eq i16 %260, 0 +rvermicelliDoubleExec.exit: ; preds = %211, %.thread122, %rdvermPrecondition.exit.thread, %rdvermPrecondition.exit + %.1.i53 = phi ptr [ %.ptr158, %rdvermPrecondition.exit ], [ %208, %rdvermPrecondition.exit.thread ], [ %233, %.thread122 ], [ %.020.i84.ptr, %205 ] + %234 = ptrtoint ptr %.1.i53 to i64 + %235 = ptrtoint ptr %37 to i64 + %236 = sub i64 %179, %235 + %237 = add i64 %236, %234 + br label %345 + +238: ; preds = %44 + %239 = add i64 %39, 1 + %240 = getelementptr inbounds nuw i8, ptr %35, i64 10 + %241 = load i8, ptr %240, align 2 + %242 = zext i8 %241 to i64 + %243 = sub i64 %239, %242 + %244 = icmp ult i64 %243, 17 + br i1 %244, label %345, label %245 + +245: ; preds = %238 + %246 = getelementptr inbounds nuw i8, ptr %35, i64 12 + %247 = load i8, ptr %246, align 4 + %248 = getelementptr inbounds nuw i8, ptr %35, i64 13 + %249 = load i8, ptr %248, align 1 + %.ptr149 = getelementptr inbounds i8, ptr %37, i64 %243 + %250 = insertelement <16 x i8> poison, i8 %247, i64 0 + %251 = shufflevector <16 x i8> %250, <16 x i8> poison, <16 x i32> zeroinitializer + %252 = insertelement <16 x i8> poison, i8 %249, i64 0 + %253 = shufflevector <16 x i8> %252, <16 x i8> poison, <16 x i32> zeroinitializer + %254 = ptrtoint ptr %.ptr149 to i64 + %255 = and i64 %254, 15 + %.not.i54 = icmp eq i64 %255, 0 + br i1 %.not.i54, label %.preheader263, label %256 + +256: ; preds = %245 + %257 = getelementptr inbounds i8, ptr %.ptr149, i64 -16 + %258 = load <16 x i8>, ptr %257, align 1 + %259 = and <16 x i8> %258, splat (i8 -33) + %260 = icmp eq <16 x i8> %253, %259 + %261 = icmp eq <16 x i8> %251, %259 + %262 = sext <16 x i1> %261 to <16 x i8> + %263 = shufflevector <16 x i8> , <16 x i8> %262, <16 x i32> + %264 = icmp slt <16 x i8> %263, zeroinitializer + %265 = select <16 x i1> %260, <16 x i1> %264, <16 x i1> zeroinitializer + %266 = bitcast <16 x i1> %265 to i16 + %.not.i77 = icmp eq i16 %266, 0 br i1 %.not.i77, label %rdvermPreconditionNocase.exit, label %rdvermPreconditionNocase.exit.thread, !prof !6 -rdvermPreconditionNocase.exit.thread: ; preds = %250 - %261 = zext i16 %260 to i32 - %262 = getelementptr inbounds nuw i8, ptr %.ptr149, i64 15 - %263 = tail call range(i32 0, 32) i32 @llvm.ctlz.i32(i32 range(i32 1, 0) %261, i1 true) - %264 = zext nneg i32 %263 to i64 - %265 = sub nsw i64 0, %264 - %266 = getelementptr inbounds i8, ptr %262, i64 %265 +rdvermPreconditionNocase.exit.thread: ; preds = %256 + %267 = zext i16 %266 to i32 + %268 = getelementptr inbounds nuw i8, ptr %.ptr149, i64 15 + %269 = tail call range(i32 0, 32) i32 @llvm.ctlz.i32(i32 range(i32 1, 0) %267, i1 true) + %270 = zext nneg i32 %269 to i64 + %271 = sub nsw i64 0, %270 + %272 = getelementptr inbounds i8, ptr %268, i64 %271 br label %rvermicelliDoubleExec.exit62 -rdvermPreconditionNocase.exit: ; preds = %250 - %.add146 = sub nuw nsw i64 %237, %249 +rdvermPreconditionNocase.exit: ; preds = %256 + %.add146 = sub nuw nsw i64 %243, %255 %.ptr150 = getelementptr inbounds i8, ptr %37, i64 %.add146 %.not41.i56 = icmp sgt i64 %.add146, 0 - br i1 %.not41.i56, label %.preheader255, label %rvermicelliDoubleExec.exit62 + br i1 %.not41.i56, label %.preheader263, label %rvermicelliDoubleExec.exit62 -.preheader255: ; preds = %rdvermPreconditionNocase.exit, %239 - %.022.i.idx.ph = phi i64 [ %237, %239 ], [ %.add146, %rdvermPreconditionNocase.exit ] - br label %267 +.preheader263: ; preds = %rdvermPreconditionNocase.exit, %245 + %.022.i.idx.ph = phi i64 [ %243, %239 ], [ %.add146, %rdvermPreconditionNocase.exit ] + br label %275 -267: ; preds = %.preheader255, %286 +275: ; preds = %.preheader263, %294 %.022.i.idx = phi i64 [ %.022.i.add, %286 ], [ %.022.i.idx.ph, %.preheader255 ] %.022.i.ptr = getelementptr inbounds i8, ptr %37, i64 %.022.i.idx - %268 = icmp sgt i64 %.022.i.idx, 16 - br i1 %268, label %269, label %rvermicelliDoubleExec.exit62 + %276 = icmp sgt i64 %.022.i.idx, 16 + br i1 %276, label %277, label %rvermicelliDoubleExec.exit62 -269: ; preds = %267 +277: ; preds = %275 %.022.i.add = add nsw i64 %.022.i.idx, -16 %.ptr = getelementptr inbounds i8, ptr %37, i64 %.022.i.add call void @llvm.assume(i1 true) [ "align"(ptr %.ptr, i64 16) ] - %270 = load <16 x i8>, ptr %.ptr, align 16 - %271 = and <16 x i8> %270, splat (i8 -33) - %272 = icmp eq <16 x i8> %247, %271 - %273 = icmp eq <16 x i8> %245, %271 - %274 = sext <16 x i1> %273 to <16 x i8> - %275 = shufflevector <16 x i8> , <16 x i8> %274, <16 x i32> - %276 = icmp slt <16 x i8> %275, zeroinitializer - %277 = select <16 x i1> %272, <16 x i1> %276, <16 x i1> zeroinitializer - %278 = bitcast <16 x i1> %277 to i16 - %279 = getelementptr inbounds i8, ptr %.022.i.ptr, i64 -17 - %280 = load i8, ptr %279, align 1 - %281 = and i8 %280, -33 - %282 = icmp eq i8 %281, %241 - %283 = extractelement <16 x i8> %270, i64 0 - %284 = and i8 %283, -33 - %285 = icmp eq i8 %284, %243 - %or.cond230 = select i1 %282, i1 %285, i1 false - br i1 %or.cond230, label %.thread139.split.loop.exit188, label %286 - -286: ; preds = %269 - %.not.i82 = icmp eq i16 %278, 0 - br i1 %.not.i82, label %267, label %.thread139, !prof !7 - -.thread139.split.loop.exit188: ; preds = %269 - %287 = or i16 %278, 1 + %278 = load <16 x i8>, ptr %.ptr, align 16 + %279 = and <16 x i8> %278, splat (i8 -33) + %280 = icmp eq <16 x i8> %253, %279 + %281 = icmp eq <16 x i8> %251, %279 + %282 = sext <16 x i1> %281 to <16 x i8> + %283 = shufflevector <16 x i8> , <16 x i8> %282, <16 x i32> + %284 = icmp slt <16 x i8> %283, zeroinitializer + %285 = select <16 x i1> %280, <16 x i1> %284, <16 x i1> zeroinitializer + %286 = bitcast <16 x i1> %285 to i16 + %287 = getelementptr inbounds i8, ptr %.022.i.ptr, i64 -17 + %288 = load i8, ptr %287, align 1 + %289 = and i8 %288, -33 + %290 = icmp eq i8 %289, %247 + %291 = extractelement <16 x i8> %278, i64 0 + %292 = and i8 %291, -33 + %293 = icmp eq i8 %292, %249 + %or.cond238 = select i1 %290, i1 %293, i1 false + br i1 %or.cond238, label %.thread139.split.loop.exit196, label %294 + +294: ; preds = %277 + %.not.i82 = icmp eq i16 %286, 0 + br i1 %.not.i82, label %275, label %.thread139, !prof !7 + +.thread139.split.loop.exit196: ; preds = %277 + %295 = or i16 %286, 1 br label %.thread139 -.thread139: ; preds = %286, %.thread139.split.loop.exit188 - %.020.i136.in = phi i16 [ %287, %.thread139.split.loop.exit188 ], [ %278, %286 ] +.thread139: ; preds = %294, %.thread139.split.loop.exit196 + %.020.i136.in = phi i16 [ %295, %.thread139.split.loop.exit188 ], [ %286, %286 ] %.020.i136 = zext i16 %.020.i136.in to i32 - %288 = getelementptr inbounds nuw i8, ptr %.022.i.ptr, i64 15 - %289 = tail call range(i32 0, 32) i32 @llvm.ctlz.i32(i32 range(i32 1, 0) %.020.i136, i1 true) - %290 = zext nneg i32 %289 to i64 - %291 = sub nsw i64 0, %290 - %292 = getelementptr inbounds i8, ptr %288, i64 %291 + %296 = getelementptr inbounds nuw i8, ptr %.022.i.ptr, i64 15 + %297 = tail call range(i32 0, 32) i32 @llvm.ctlz.i32(i32 range(i32 1, 0) %.020.i136, i1 true) + %298 = zext nneg i32 %297 to i64 + %299 = sub nsw i64 0, %298 + %300 = getelementptr inbounds i8, ptr %296, i64 %299 br label %rvermicelliDoubleExec.exit62 -rvermicelliDoubleExec.exit62: ; preds = %267, %.thread139, %rdvermPreconditionNocase.exit.thread, %rdvermPreconditionNocase.exit - %.1.i60 = phi ptr [ %.ptr150, %rdvermPreconditionNocase.exit ], [ %266, %rdvermPreconditionNocase.exit.thread ], [ %292, %.thread139 ], [ %.022.i.ptr, %267 ] - %293 = ptrtoint ptr %.1.i60 to i64 - %294 = ptrtoint ptr %37 to i64 - %295 = sub i64 %236, %294 - %296 = add i64 %295, %293 - br label %337 - -297: ; preds = %44 - %298 = getelementptr inbounds nuw i8, ptr %35, i64 10 - %299 = load i8, ptr %298, align 2 - %300 = zext i8 %299 to i64 - %301 = sub i64 %39, %300 - %302 = getelementptr inbounds nuw i8, ptr %37, i64 %301 - %303 = load i8, ptr %302, align 1 - %304 = getelementptr inbounds nuw i8, ptr %35, i64 12 - %305 = load i8, ptr %304, align 4 - %.not65.i = icmp eq i8 %303, %305 - br i1 %.not65.i, label %337, label %nfaRevAccelCheck.exit.thread - -306: ; preds = %44 - %307 = getelementptr inbounds nuw i8, ptr %35, i64 10 - %308 = load i8, ptr %307, align 2 - %309 = zext i8 %308 to i64 - %310 = sub i64 %39, %309 - %311 = getelementptr inbounds nuw i8, ptr %37, i64 %310 - %312 = load i8, ptr %311, align 1 - %313 = and i8 %312, -33 - %314 = getelementptr inbounds nuw i8, ptr %35, i64 12 - %315 = load i8, ptr %314, align 4 - %.not64.i = icmp eq i8 %313, %315 - br i1 %.not64.i, label %337, label %nfaRevAccelCheck.exit.thread - -316: ; preds = %44 - %317 = getelementptr inbounds nuw i8, ptr %37, i64 %39 - %318 = getelementptr inbounds nuw i8, ptr %35, i64 10 - %319 = load i8, ptr %318, align 2 - %320 = zext i8 %319 to i64 - %321 = sub nsw i64 0, %320 - %322 = getelementptr inbounds i8, ptr %317, i64 %321 - %323 = load i16, ptr %322, align 1 - %324 = getelementptr inbounds nuw i8, ptr %35, i64 12 - %325 = load i16, ptr %324, align 4 - %.not63.i = icmp eq i16 %323, %325 - br i1 %.not63.i, label %337, label %nfaRevAccelCheck.exit.thread - -326: ; preds = %44 - %327 = getelementptr inbounds nuw i8, ptr %37, i64 %39 - %328 = getelementptr inbounds nuw i8, ptr %35, i64 10 - %329 = load i8, ptr %328, align 2 - %330 = zext i8 %329 to i64 - %331 = sub nsw i64 0, %330 - %332 = getelementptr inbounds i8, ptr %327, i64 %331 - %333 = load i16, ptr %332, align 1 - %334 = and i16 %333, -8225 - %335 = getelementptr inbounds nuw i8, ptr %35, i64 12 - %336 = load i16, ptr %335, align 4 - %.not.i = icmp eq i16 %334, %336 - br i1 %.not.i, label %337, label %nfaRevAccelCheck.exit.thread - -337: ; preds = %44, %326, %316, %306, %297, %rvermicelliDoubleExec.exit62, %232, %rvermicelliDoubleExec.exit, %171, %rvermicelliExec.exit50, %107, %rvermicelliExec.exit, %47 - %.0.i33 = phi i64 [ %39, %47 ], [ %106, %rvermicelliExec.exit ], [ %39, %107 ], [ %170, %rvermicelliExec.exit50 ], [ %39, %171 ], [ %231, %rvermicelliDoubleExec.exit ], [ %39, %232 ], [ %296, %rvermicelliDoubleExec.exit62 ], [ %39, %297 ], [ %39, %306 ], [ %39, %316 ], [ %39, %326 ], [ %39, %44 ] - %338 = icmp ult i64 %.0.i33, %42 - br i1 %338, label %nfaRevAccelCheck.exit.thread, label %nfaRevAccelCheck.exit - -nfaRevAccelCheck.exit: ; preds = %44, %337 +rvermicelliDoubleExec.exit62: ; preds = %275, %.thread139, %rdvermPreconditionNocase.exit.thread, %rdvermPreconditionNocase.exit + %.1.i60 = phi ptr [ %.ptr150, %rdvermPreconditionNocase.exit ], [ %272, %rdvermPreconditionNocase.exit.thread ], [ %300, %.thread139 ], [ %.022.i.ptr, %267 ] + %301 = ptrtoint ptr %.1.i60 to i64 + %302 = ptrtoint ptr %37 to i64 + %303 = sub i64 %242, %302 + %304 = add i64 %303, %301 + br label %345 + +305: ; preds = %44 + %306 = getelementptr inbounds nuw i8, ptr %35, i64 10 + %307 = load i8, ptr %306, align 2 + %308 = zext i8 %307 to i64 + %309 = sub i64 %39, %308 + %310 = getelementptr inbounds nuw i8, ptr %37, i64 %309 + %311 = load i8, ptr %310, align 1 + %312 = getelementptr inbounds nuw i8, ptr %35, i64 12 + %313 = load i8, ptr %312, align 4 + %.not65.i = icmp eq i8 %311, %313 + br i1 %.not65.i, label %345, label %nfaRevAccelCheck.exit.thread + +314: ; preds = %44 + %315 = getelementptr inbounds nuw i8, ptr %35, i64 10 + %316 = load i8, ptr %315, align 2 + %317 = zext i8 %316 to i64 + %318 = sub i64 %39, %317 + %319 = getelementptr inbounds nuw i8, ptr %37, i64 %318 + %320 = load i8, ptr %319, align 1 + %321 = and i8 %320, -33 + %322 = getelementptr inbounds nuw i8, ptr %35, i64 12 + %323 = load i8, ptr %322, align 4 + %.not64.i = icmp eq i8 %321, %323 + br i1 %.not64.i, label %345, label %nfaRevAccelCheck.exit.thread + +324: ; preds = %44 + %325 = getelementptr inbounds nuw i8, ptr %37, i64 %39 + %326 = getelementptr inbounds nuw i8, ptr %35, i64 10 + %327 = load i8, ptr %326, align 2 + %328 = zext i8 %327 to i64 + %329 = sub nsw i64 0, %328 + %330 = getelementptr inbounds i8, ptr %325, i64 %329 + %331 = load i16, ptr %330, align 1 + %332 = getelementptr inbounds nuw i8, ptr %35, i64 12 + %333 = load i16, ptr %332, align 4 + %.not63.i = icmp eq i16 %331, %333 + br i1 %.not63.i, label %345, label %nfaRevAccelCheck.exit.thread + +334: ; preds = %44 + %335 = getelementptr inbounds nuw i8, ptr %37, i64 %39 + %336 = getelementptr inbounds nuw i8, ptr %35, i64 10 + %337 = load i8, ptr %336, align 2 + %338 = zext i8 %337 to i64 + %339 = sub nsw i64 0, %338 + %340 = getelementptr inbounds i8, ptr %335, i64 %339 + %341 = load i16, ptr %340, align 1 + %342 = and i16 %341, -8225 + %343 = getelementptr inbounds nuw i8, ptr %35, i64 12 + %344 = load i16, ptr %343, align 4 + %.not.i = icmp eq i16 %342, %344 + br i1 %.not.i, label %345, label %nfaRevAccelCheck.exit.thread + +345: ; preds = %44, %334, %324, %314, %305, %rvermicelliDoubleExec.exit62, %238, %rvermicelliDoubleExec.exit, %175, %rvermicelliExec.exit50, %109, %rvermicelliExec.exit, %47 + %.0.i33 = phi i64 [ %39, %47 ], [ %108, %rvermicelliExec.exit ], [ %39, %107 ], [ %174, %rvermicelliExec.exit50 ], [ %39, %171 ], [ %237, %rvermicelliDoubleExec.exit ], [ %39, %232 ], [ %304, %rvermicelliDoubleExec.exit62 ], [ %39, %297 ], [ %39, %306 ], [ %39, %316 ], [ %39, %326 ], [ %39, %44 ] + %346 = icmp ult i64 %.0.i33, %42 + br i1 %346, label %nfaRevAccelCheck.exit.thread, label %nfaRevAccelCheck.exit + +nfaRevAccelCheck.exit: ; preds = %44, %345 %.0.i = phi i64 [ %39, %44 ], [ %.0.i33, %337 ] %.not = icmp eq i64 %.0.i, 0 - br i1 %.not, label %nfaRevAccelCheck.exit.thread, label %339 - -339: ; preds = %nfaRevAccelCheck.exit - %340 = getelementptr inbounds nuw i8, ptr %1, i64 176 - %341 = load ptr, ptr %340, align 16 - store ptr %35, ptr %341, align 8 - %342 = getelementptr inbounds nuw i8, ptr %341, i64 12 - store i32 0, ptr %342, align 4 - %343 = getelementptr inbounds nuw i8, ptr %341, i64 8 - store i32 0, ptr %343, align 8 - %344 = getelementptr inbounds nuw i8, ptr %1, i64 168 - %345 = load ptr, ptr %344, align 8 - %346 = getelementptr inbounds nuw i8, ptr %32, i64 8 - %347 = load i32, ptr %346, align 4 - %348 = zext i32 %347 to i64 - %349 = getelementptr inbounds nuw i8, ptr %345, i64 %348 - %350 = getelementptr inbounds nuw i8, ptr %341, i64 16 - store ptr %349, ptr %350, align 8 - %351 = load ptr, ptr %3, align 8 - %352 = getelementptr inbounds nuw i8, ptr %32, i64 4 - %353 = load i32, ptr %352, align 4 - %354 = zext i32 %353 to i64 - %355 = getelementptr inbounds nuw i8, ptr %351, i64 %354 - %356 = getelementptr inbounds nuw i8, ptr %341, i64 24 - store ptr %355, ptr %356, align 8 - %357 = getelementptr inbounds nuw i8, ptr %1, i64 320 - %358 = load i64, ptr %357, align 8 - %359 = getelementptr inbounds nuw i8, ptr %341, i64 32 - store i64 %358, ptr %359, align 8 - %360 = load ptr, ptr %36, align 8 - %361 = getelementptr inbounds nuw i8, ptr %341, i64 40 - store ptr %360, ptr %361, align 8 - %362 = load i64, ptr %38, align 8 - %363 = getelementptr inbounds nuw i8, ptr %341, i64 48 - store i64 %362, ptr %363, align 8 - %364 = getelementptr inbounds nuw i8, ptr %1, i64 304 - %365 = load ptr, ptr %364, align 8 - %366 = getelementptr inbounds nuw i8, ptr %341, i64 56 - store ptr %365, ptr %366, align 8 - %367 = getelementptr inbounds nuw i8, ptr %1, i64 312 - %368 = load i64, ptr %367, align 8 - %369 = getelementptr inbounds nuw i8, ptr %341, i64 64 - store i64 %368, ptr %369, align 8 - %370 = getelementptr inbounds nuw i8, ptr %341, i64 88 - store ptr @roseReportAdaptor, ptr %370, align 8 - %371 = getelementptr inbounds nuw i8, ptr %341, i64 96 - store ptr %1, ptr %371, align 8 - %372 = getelementptr inbounds nuw i8, ptr %341, i64 80 - store i8 0, ptr %372, align 8 - store i64 %.0.i, ptr %363, align 8 - %373 = tail call signext i8 @nfaQueueInitState(ptr noundef %35, ptr noundef nonnull %341) #13 - %374 = getelementptr inbounds nuw i8, ptr %341, i64 104 - store i32 0, ptr %374, align 8, !alias.scope !8 - %375 = getelementptr inbounds nuw i8, ptr %341, i64 112 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %375, i8 0, i64 16, i1 false) - %376 = getelementptr inbounds nuw i8, ptr %341, i64 128 - store i32 2, ptr %376, align 8, !alias.scope !11 - %377 = getelementptr inbounds nuw i8, ptr %341, i64 136 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %377, i8 0, i64 16, i1 false) - store i32 2, ptr %342, align 4, !alias.scope !11 - %378 = load i64, ptr %38, align 8 - %379 = getelementptr inbounds nuw i8, ptr %341, i64 152 - store i32 1, ptr %379, align 8, !alias.scope !14 - %380 = getelementptr inbounds nuw i8, ptr %341, i64 160 - store i64 %378, ptr %380, align 8, !alias.scope !14 - %381 = getelementptr inbounds nuw i8, ptr %341, i64 168 - store i64 0, ptr %381, align 8, !alias.scope !14 - store i32 3, ptr %342, align 4, !alias.scope !14 - %382 = load ptr, ptr %341, align 8 - %383 = load i64, ptr %38, align 8 - %384 = tail call signext i8 @nfaQueueExec(ptr noundef %382, ptr noundef nonnull %341, i64 noundef %383) #13 - %.not31 = icmp eq i8 %384, 0 - br i1 %.not31, label %nfaRevAccelCheck.exit.thread, label %385 - -385: ; preds = %339 - %386 = load i32, ptr %35, align 64 - %387 = and i32 %386, 1 - %.not32 = icmp eq i32 %387, 0 - br i1 %.not32, label %nfaRevAccelCheck.exit.thread, label %388 - -388: ; preds = %385 - %389 = load i64, ptr %38, align 8 - %390 = icmp eq i64 %.0.i, %389 - br i1 %390, label %391, label %nfaRevAccelCheck.exit.thread - -391: ; preds = %388 - %392 = load ptr, ptr %350, align 8 - %393 = load ptr, ptr %356, align 8 - %394 = load i64, ptr %363, align 8 - %395 = load ptr, ptr %370, align 8 - %396 = tail call signext i8 @nfaCheckFinalState(ptr noundef nonnull %35, ptr noundef %392, ptr noundef %393, i64 noundef %394, ptr noundef %395, ptr noundef nonnull %1) #13 + br i1 %.not, label %nfaRevAccelCheck.exit.thread, label %347 + +347: ; preds = %nfaRevAccelCheck.exit + %348 = getelementptr inbounds nuw i8, ptr %1, i64 176 + %349 = load ptr, ptr %348, align 16 + store ptr %35, ptr %349, align 8 + %350 = getelementptr inbounds nuw i8, ptr %349, i64 12 + store i32 0, ptr %350, align 4 + %351 = getelementptr inbounds nuw i8, ptr %349, i64 8 + store i32 0, ptr %351, align 8 + %352 = getelementptr inbounds nuw i8, ptr %1, i64 168 + %353 = load ptr, ptr %352, align 8 + %354 = getelementptr inbounds nuw i8, ptr %32, i64 8 + %355 = load i32, ptr %354, align 4 + %356 = zext i32 %355 to i64 + %357 = getelementptr inbounds nuw i8, ptr %353, i64 %356 + %358 = getelementptr inbounds nuw i8, ptr %349, i64 16 + store ptr %357, ptr %358, align 8 + %359 = load ptr, ptr %3, align 8 + %360 = getelementptr inbounds nuw i8, ptr %32, i64 4 + %361 = load i32, ptr %360, align 4 + %362 = zext i32 %361 to i64 + %363 = getelementptr inbounds nuw i8, ptr %359, i64 %362 + %364 = getelementptr inbounds nuw i8, ptr %349, i64 24 + store ptr %363, ptr %364, align 8 + %365 = getelementptr inbounds nuw i8, ptr %1, i64 320 + %366 = load i64, ptr %365, align 8 + %367 = getelementptr inbounds nuw i8, ptr %349, i64 32 + store i64 %366, ptr %367, align 8 + %368 = load ptr, ptr %36, align 8 + %369 = getelementptr inbounds nuw i8, ptr %349, i64 40 + store ptr %368, ptr %369, align 8 + %370 = load i64, ptr %38, align 8 + %371 = getelementptr inbounds nuw i8, ptr %349, i64 48 + store i64 %370, ptr %371, align 8 + %372 = getelementptr inbounds nuw i8, ptr %1, i64 304 + %373 = load ptr, ptr %372, align 8 + %374 = getelementptr inbounds nuw i8, ptr %349, i64 56 + store ptr %373, ptr %374, align 8 + %375 = getelementptr inbounds nuw i8, ptr %1, i64 312 + %376 = load i64, ptr %375, align 8 + %377 = getelementptr inbounds nuw i8, ptr %349, i64 64 + store i64 %376, ptr %377, align 8 + %378 = getelementptr inbounds nuw i8, ptr %349, i64 88 + store ptr @roseReportAdaptor, ptr %378, align 8 + %379 = getelementptr inbounds nuw i8, ptr %349, i64 96 + store ptr %1, ptr %379, align 8 + %380 = getelementptr inbounds nuw i8, ptr %349, i64 80 + store i8 0, ptr %380, align 8 + store i64 %.0.i, ptr %371, align 8 + %381 = tail call signext i8 @nfaQueueInitState(ptr noundef %35, ptr noundef nonnull %349) #13 + %382 = getelementptr inbounds nuw i8, ptr %349, i64 104 + store i32 0, ptr %382, align 8, !alias.scope !8 + %383 = getelementptr inbounds nuw i8, ptr %349, i64 112 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %383, i8 0, i64 16, i1 false) + %384 = getelementptr inbounds nuw i8, ptr %349, i64 128 + store i32 2, ptr %384, align 8, !alias.scope !11 + %385 = getelementptr inbounds nuw i8, ptr %349, i64 136 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %385, i8 0, i64 16, i1 false) + store i32 2, ptr %350, align 4, !alias.scope !11 + %386 = load i64, ptr %38, align 8 + %387 = getelementptr inbounds nuw i8, ptr %349, i64 152 + store i32 1, ptr %387, align 8, !alias.scope !14 + %388 = getelementptr inbounds nuw i8, ptr %349, i64 160 + store i64 %386, ptr %388, align 8, !alias.scope !14 + %389 = getelementptr inbounds nuw i8, ptr %349, i64 168 + store i64 0, ptr %389, align 8, !alias.scope !14 + store i32 3, ptr %350, align 4, !alias.scope !14 + %390 = load ptr, ptr %349, align 8 + %391 = load i64, ptr %38, align 8 + %392 = tail call signext i8 @nfaQueueExec(ptr noundef %390, ptr noundef nonnull %349, i64 noundef %391) #13 + %.not31 = icmp eq i8 %392, 0 + br i1 %.not31, label %nfaRevAccelCheck.exit.thread, label %393 + +393: ; preds = %347 + %394 = load i32, ptr %35, align 64 + %395 = and i32 %394, 1 + %.not32 = icmp eq i32 %395, 0 + br i1 %.not32, label %nfaRevAccelCheck.exit.thread, label %396 + +396: ; preds = %393 + %397 = load i64, ptr %38, align 8 + %398 = icmp eq i64 %.0.i, %397 + br i1 %398, label %399, label %nfaRevAccelCheck.exit.thread + +399: ; preds = %396 + %400 = load ptr, ptr %358, align 8 + %401 = load ptr, ptr %364, align 8 + %402 = load i64, ptr %371, align 8 + %403 = load ptr, ptr %378, align 8 + %404 = tail call signext i8 @nfaCheckFinalState(ptr noundef nonnull %35, ptr noundef %400, ptr noundef %401, i64 noundef %402, ptr noundef %403, ptr noundef nonnull %1) #13 br label %nfaRevAccelCheck.exit.thread -nfaRevAccelCheck.exit.thread: ; preds = %337, %326, %316, %306, %297, %initSomState.exit, %339, %385, %388, %391, %nfaRevAccelCheck.exit +nfaRevAccelCheck.exit.thread: ; preds = %345, %334, %324, %314, %305, %initSomState.exit, %347, %393, %396, %393, %nfaRevAccelCheck.exit ret void } diff --git a/bench/libquic/optimized/s3_srvr.ll b/bench/libquic/optimized/s3_srvr.ll index 397bfd26094..bc0ef682613 100644 --- a/bench/libquic/optimized/s3_srvr.ll +++ b/bench/libquic/optimized/s3_srvr.ll @@ -3912,7 +3912,7 @@ define hidden i32 @ssl3_send_new_session_ticket(ptr noundef %0) local_unnamed_ad %10 = getelementptr inbounds nuw i8, ptr %0, i64 52 %11 = load i32, ptr %10, align 4, !tbaa !43 %12 = icmp eq i32 %11, 8688 - br i1 %12, label %13, label %195 + br i1 %12, label %13, label %194 13: ; preds = %1 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #10 @@ -3981,7 +3981,7 @@ define hidden i32 @ssl3_send_new_session_ticket(ptr noundef %0) local_unnamed_ad call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #10 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #10 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #10 - br label %204 + br label %203 56: ; preds = %19 %57 = getelementptr inbounds nuw i8, ptr %0, i64 56 @@ -4140,83 +4140,83 @@ define hidden i32 @ssl3_send_new_session_ticket(ptr noundef %0) local_unnamed_ad %158 = ptrtoint ptr %157 to i64 %159 = ptrtoint ptr %138 to i64 %160 = sub i64 %158, %159 - %161 = call i32 @HMAC_Update(ptr noundef nonnull %5, ptr noundef nonnull %138, i64 noundef %160) #10 - %.not90 = icmp eq i32 %161, 0 - br i1 %.not90, label %.thread, label %162 - -162: ; preds = %154 - %163 = call i32 @HMAC_Final(ptr noundef nonnull %5, ptr noundef nonnull %157, ptr noundef nonnull %7) #10 - %.not91 = icmp eq i32 %163, 0 - br i1 %.not91, label %.thread, label %164 - -164: ; preds = %162 - %165 = load i32, ptr %7, align 4, !tbaa !93 - %166 = zext i32 %165 to i64 - %167 = getelementptr inbounds nuw i8, ptr %157, i64 %166 - %168 = load ptr, ptr %57, align 8, !tbaa !44 - %169 = getelementptr inbounds nuw i8, ptr %168, i64 8 - %170 = load ptr, ptr %169, align 8, !tbaa !90 - %171 = load ptr, ptr %59, align 8, !tbaa !64 - %172 = getelementptr inbounds nuw i8, ptr %171, i64 96 - %173 = load i32, ptr %172, align 8, !tbaa !132 - %174 = zext i32 %173 to i64 - %175 = getelementptr inbounds nuw i8, ptr %170, i64 %174 - %176 = ptrtoint ptr %167 to i64 - %177 = ptrtoint ptr %175 to i64 - %178 = sub i64 %176, %177 - %179 = trunc i64 %178 to i32 - store i32 %179, ptr %6, align 4, !tbaa !93 - %180 = getelementptr inbounds nuw i8, ptr %175, i64 4 - %181 = add i32 %179, 65530 - %182 = lshr i32 %181, 8 - %183 = trunc i32 %182 to i8 - store i8 %183, ptr %180, align 1, !tbaa !86 - %184 = load i32, ptr %6, align 4, !tbaa !93 - %185 = trunc i32 %184 to i8 - %186 = add i8 %185, -6 - %187 = getelementptr inbounds nuw i8, ptr %175, i64 5 - store i8 %186, ptr %187, align 1, !tbaa !86 - %188 = load ptr, ptr %59, align 8, !tbaa !64 - %189 = getelementptr inbounds nuw i8, ptr %188, i64 104 - %190 = load ptr, ptr %189, align 8, !tbaa !71 - %191 = load i32, ptr %6, align 4, !tbaa !93 - %192 = sext i32 %191 to i64 - %193 = call i32 %190(ptr noundef nonnull %0, i32 noundef 4, i64 noundef %192) #10 - %.not92 = icmp eq i32 %193, 0 - br i1 %.not92, label %.thread, label %194 - -.thread: ; preds = %13, %22, %56, %79, %88, %84, %82, %136, %149, %162, %154, %164 + %160 = call i32 @HMAC_Update(ptr noundef nonnull %5, ptr noundef nonnull %138, i64 noundef %160) #10 + %.not90 = icmp eq i32 %160, 0 + br i1 %.not90, label %.thread, label %161 + +161: ; preds = %154 + %162 = call i32 @HMAC_Final(ptr noundef nonnull %5, ptr noundef nonnull %157, ptr noundef nonnull %7) #10 + %.not91 = icmp eq i32 %162, 0 + br i1 %.not91, label %.thread, label %163 + +163: ; preds = %161 + %164 = load i32, ptr %7, align 4, !tbaa !93 + %165 = zext i32 %164 to i64 + %166 = getelementptr inbounds nuw i8, ptr %157, i64 %165 + %167 = load ptr, ptr %57, align 8, !tbaa !44 + %168 = getelementptr inbounds nuw i8, ptr %167, i64 8 + %169 = load ptr, ptr %168, align 8, !tbaa !90 + %170 = load ptr, ptr %59, align 8, !tbaa !64 + %171 = getelementptr inbounds nuw i8, ptr %170, i64 96 + %172 = load i32, ptr %171, align 8, !tbaa !132 + %173 = zext i32 %172 to i64 + %174 = getelementptr inbounds nuw i8, ptr %169, i64 %173 + %175 = ptrtoint ptr %166 to i64 + %176 = ptrtoint ptr %174 to i64 + %177 = sub i64 %175, %176 + %178 = trunc i64 %177 to i32 + store i32 %178, ptr %6, align 4, !tbaa !93 + %179 = getelementptr inbounds nuw i8, ptr %174, i64 4 + %180 = add i32 %178, 65530 + %181 = lshr i32 %180, 8 + %182 = trunc i32 %181 to i8 + store i8 %182, ptr %179, align 1, !tbaa !86 + %183 = load i32, ptr %6, align 4, !tbaa !93 + %184 = trunc i32 %183 to i8 + %185 = add i8 %184, -6 + %186 = getelementptr inbounds nuw i8, ptr %174, i64 5 + store i8 %185, ptr %186, align 1, !tbaa !86 + %187 = load ptr, ptr %59, align 8, !tbaa !64 + %188 = getelementptr inbounds nuw i8, ptr %187, i64 104 + %189 = load ptr, ptr %188, align 8, !tbaa !71 + %190 = load i32, ptr %6, align 4, !tbaa !93 + %191 = sext i32 %190 to i64 + %192 = call i32 %190(ptr noundef nonnull %0, i32 noundef 4, i64 noundef %191) #10 + %.not92 = icmp eq i32 %192, 0 + br i1 %.not92, label %.thread, label %193 + +.thread: ; preds = %13, %22, %56, %79, %88, %84, %82, %136, %149, %161, %154, %163 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #10 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #10 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #10 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #10 - br label %201 + br label %200 -194: ; preds = %164 +193: ; preds = %163 store i32 8689, ptr %10, align 4, !tbaa !43 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #10 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #10 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #10 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #10 - br label %195 - -195: ; preds = %194, %1 - %196 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %197 = load ptr, ptr %196, align 8, !tbaa !64 - %198 = getelementptr inbounds nuw i8, ptr %197, i64 112 - %199 = load ptr, ptr %198, align 8, !tbaa !65 - %200 = call i32 %199(ptr noundef nonnull %0) #10 - br label %201 - -201: ; preds = %.thread, %195 - %.076 = phi i32 [ %200, %195 ], [ -1, %.thread ] - %202 = load ptr, ptr %2, align 8, !tbaa !143 - call void @free(ptr noundef %202) #10 - %203 = call i32 @EVP_CIPHER_CTX_cleanup(ptr noundef nonnull %4) #10 + br label %194 + +194: ; preds = %193, %1 + %195 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %196 = load ptr, ptr %195, align 8, !tbaa !64 + %197 = getelementptr inbounds nuw i8, ptr %196, i64 112 + %198 = load ptr, ptr %197, align 8, !tbaa !65 + %199 = call i32 %199(ptr noundef nonnull %0) #10 + br label %200 + +200: ; preds = %.thread, %194 + %.076 = phi i32 [ %199, %195 ], [ -1, %.thread ] + %201 = load ptr, ptr %2, align 8, !tbaa !143 + call void @free(ptr noundef %201) #10 + %202 = call i32 @EVP_CIPHER_CTX_cleanup(ptr noundef nonnull %4) #10 call void @HMAC_CTX_cleanup(ptr noundef nonnull %5) #10 - br label %204 + br label %203 -204: ; preds = %.thread96, %201 +203: ; preds = %.thread96, %200 %.2 = phi i32 [ %.076, %201 ], [ %55, %.thread96 ] call void @llvm.lifetime.end.p0(i64 104, ptr nonnull %5) #10 call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %4) #10 diff --git a/bench/lief/optimized/ecjpake.ll b/bench/lief/optimized/ecjpake.ll index 3c8da27f8cb..8067cfa84b5 100644 --- a/bench/lief/optimized/ecjpake.ll +++ b/bench/lief/optimized/ecjpake.ll @@ -1352,8 +1352,8 @@ ecjpake_write_len_point.exit: ; preds = %8 %24 = icmp ult ptr %14, %23 %notsub = add i64 %19, -418 %25 = icmp sgt i64 %notsub, -6 - %or.cond70 = or i1 %25, %24 - br i1 %or.cond70, label %ecjpake_write_len_point.exit44.thread, label %26 + %or.cond76 = or i1 %25, %24 + br i1 %or.cond76, label %ecjpake_write_len_point.exit44.thread, label %26 26: ; preds = %18 %27 = getelementptr i8, ptr %22, i64 8 @@ -1386,7 +1386,7 @@ ecjpake_write_len_point.exit44.thread: ; preds = %18, %26 %40 = icmp slt i64 %39, 5 br i1 %40, label %ecjpake_write_len_point.exit47.thread, label %41 -41: ; preds = %36 +41:; preds = %36 %42 = getelementptr i8, ptr %33, i64 8 %43 = ptrtoint ptr %42 to i64 %44 = sub i64 %37, %43 @@ -1394,16 +1394,16 @@ ecjpake_write_len_point.exit44.thread: ; preds = %18, %26 %.not.i45 = icmp eq i32 %45, 0 br i1 %.not.i45, label %46, label %ecjpake_write_len_point.exit47.thread -ecjpake_write_len_point.exit47.thread: ; preds = %36, %29, %41 +ecjpake_write_len_point.exit47.thread:; preds = %36, %29, %41 %.0.i46.ph = phi i32 [ %45, %41 ], [ -20224, %29 ], [ -20224, %36 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #15 br label %78 -46: ; preds = %41 - %47 = load i64, ptr %9, align 8, !tbaa !22 - %48 = trunc i64 %47 to i32 - %49 = call i32 @llvm.bswap.i32(i32 %48) - store i32 %49, ptr %34, align 1 +43: ; preds = %41 + %44 = load i64, ptr %9, align 8, !tbaa !22 + %45 = trunc i64 %44 to i32 + %46 = call i32 @llvm.bswap.i32(i32 %45) + store i32 %46, ptr %34, align 1 %50 = getelementptr i8, ptr %34, i64 %47 %51 = getelementptr i8, ptr %50, i64 4 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #15 @@ -1420,11 +1420,11 @@ ecjpake_write_len_point.exit47.thread: ; preds = %36, %29, %41 %59 = icmp ult ptr %14, %58 %60 = ptrtoint ptr %58 to i64 %61 = sub i64 %37, %60 - %62 = icmp ult i64 %61, %15 + %56 = icmp ult i64 %61, %15 %or.cond = select i1 %59, i1 true, i1 %62 br i1 %or.cond, label %78, label %63 -63: ; preds = %55 +63:; preds = %55 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %58, ptr nonnull align 1 %6, i64 %15, i1 false) %64 = getelementptr inbounds nuw i8, ptr %58, i64 %15 %65 = ptrtoint ptr %64 to i64 @@ -1435,20 +1435,20 @@ ecjpake_write_len_point.exit47.thread: ; preds = %36, %29, %41 %.not38 = icmp eq i32 %69, 0 br i1 %.not38, label %70, label %78 -70: ; preds = %63 +70:; preds = %63 %71 = call ptr @mbedtls_md_info_from_type(i32 noundef %0) #15 %72 = call zeroext i8 @mbedtls_md_get_size(ptr noundef %71) #15 %73 = zext i8 %72 to i64 - %74 = call i32 @mbedtls_mpi_read_binary(ptr noundef nonnull %7, ptr noundef nonnull %13, i64 noundef %73) #15 - %.not39 = icmp eq i32 %74, 0 + %67 = call i32 @mbedtls_mpi_read_binary(ptr noundef nonnull %7, ptr noundef nonnull %13, i64 noundef %73) #15 + %.not39 = icmp eq i32 %67, 0 br i1 %.not39, label %75, label %78 -75: ; preds = %70 +75:; preds = %70 %76 = getelementptr inbounds nuw i8, ptr %1, i64 104 %77 = call i32 @mbedtls_mpi_mod_mpi(ptr noundef nonnull %7, ptr noundef nonnull %7, ptr noundef nonnull %76) #15 br label %78 -78: ; preds = %ecjpake_write_len_point.exit47.thread, %ecjpake_write_len_point.exit44.thread, %ecjpake_write_len_point.exit, %63, %70, %75, %55, %46 +78:; preds = %ecjpake_write_len_point.exit47.thread, %ecjpake_write_len_point.exit44.thread, %ecjpake_write_len_point.exit, %63, %70, %75, %55, %46 %.0 = phi i32 [ -20224, %46 ], [ -20224, %55 ], [ %17, %ecjpake_write_len_point.exit ], [ %69, %63 ], [ %74, %70 ], [ %77, %75 ], [ %.0.i43.ph, %ecjpake_write_len_point.exit44.thread ], [ %.0.i46.ph, %ecjpake_write_len_point.exit47.thread ] call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %13) #15 call void @llvm.lifetime.end.p0(i64 421, ptr nonnull %12) #15 diff --git a/bench/lief/optimized/ssl_tls.ll b/bench/lief/optimized/ssl_tls.ll index 6d232d4d513..70f547cfa46 100644 --- a/bench/lief/optimized/ssl_tls.ll +++ b/bench/lief/optimized/ssl_tls.ll @@ -5155,37 +5155,37 @@ define hidden i32 @mbedtls_ssl_context_load(ptr noundef %0, ptr noundef %1, i64 %5 = getelementptr inbounds nuw i8, ptr %0, i64 8 %6 = load i32, ptr %5, align 8, !tbaa !34 %.not.i = icmp eq i32 %6, 0 - br i1 %.not.i, label %7, label %174 + br i1 %.not.i, label %7, label %169 7: ; preds = %3 %8 = getelementptr inbounds nuw i8, ptr %0, i64 96 %9 = load ptr, ptr %8, align 8, !tbaa !125 %.not151.i = icmp eq ptr %9, null - br i1 %.not151.i, label %10, label %174 + br i1 %.not151.i, label %10, label %169 10: ; preds = %7 %11 = load ptr, ptr %0, align 8, !tbaa !23 %12 = getelementptr inbounds nuw i8, ptr %11, i64 16 %13 = load i8, ptr %12, align 8, !tbaa !199 %.not152.i = icmp eq i8 %13, 0 - br i1 %.not152.i, label %14, label %174 + br i1 %.not152.i, label %14, label %169 14: ; preds = %10 %15 = getelementptr inbounds nuw i8, ptr %11, i64 9 %16 = load i8, ptr %15, align 1, !tbaa !29 %.not153.i = icmp eq i8 %16, 1 - br i1 %.not153.i, label %17, label %174 + br i1 %.not153.i, label %17, label %169 17: ; preds = %14 %18 = load i32, ptr %11, align 8, !tbaa !82 %19 = icmp ult i32 %18, 771 - br i1 %19, label %174, label %20 + br i1 %19, label %169, label %20 20: ; preds = %17 %21 = getelementptr inbounds nuw i8, ptr %11, i64 4 %22 = load i32, ptr %21, align 4, !tbaa !81 %23 = icmp ugt i32 %22, 771 - br i1 %23, label %174, label %24 + br i1 %23, label %169, label %24 24: ; preds = %20 tail call void @mbedtls_debug_print_buf(ptr noundef nonnull %0, i32 noundef 4, ptr noundef nonnull @.str, i32 noundef 5272, ptr noundef nonnull @.str.157, ptr noundef %1, i64 noundef %2) #26 @@ -5193,133 +5193,133 @@ define hidden i32 @mbedtls_ssl_context_load(ptr noundef %0, ptr noundef %1, i64 %26 = icmp ult i64 %2, 8 br i1 %26, label %174, label %27 -27: ; preds = %24 +26: ; preds = %24 %bcmp.i = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(8) %1, ptr noundef nonnull dereferenceable(8) @ssl_serialized_context_header, i64 8) %.not154.i = icmp eq i32 %bcmp.i, 0 - br i1 %.not154.i, label %28, label %174 - -28: ; preds = %27 - %29 = and i64 %2, -4 - %30 = icmp eq i64 %29, 8 - br i1 %30, label %174, label %31 - -31: ; preds = %28 - %32 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %.0.copyload.i169.i = load i32, ptr %32, align 1 - %33 = tail call i32 @llvm.bswap.i32(i32 %.0.copyload.i169.i) - %34 = zext i32 %33 to i64 - %35 = getelementptr inbounds nuw i8, ptr %1, i64 12 - %36 = getelementptr inbounds nuw i8, ptr %0, i64 104 - %37 = load ptr, ptr %36, align 8, !tbaa !88 - store ptr %37, ptr %8, align 8, !tbaa !125 - %38 = getelementptr inbounds nuw i8, ptr %0, i64 80 - store ptr %37, ptr %38, align 8, !tbaa !240 - %39 = getelementptr inbounds nuw i8, ptr %0, i64 88 - store ptr %37, ptr %39, align 8, !tbaa !208 - store ptr null, ptr %36, align 8, !tbaa !88 + br i1 %.not154.i, label %27, label %169 + +27: ; preds = %26 + %28 = and i64 %2, -4 + %29 = icmp eq i64 %28, 8 + br i1 %29, label %169, label %30 + +30: ; preds = %27 + %31 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %.0.copyload.i176.i = load i32, ptr %31, align 1 + %32 = tail call i32 @llvm.bswap.i32(i32 %.0.copyload.i176.i) + %33 = zext i32 %32 to i64 + %34 = getelementptr inbounds nuw i8, ptr %1, i64 12 + %35 = getelementptr inbounds nuw i8, ptr %0, i64 104 + %36 = load ptr, ptr %35, align 8, !tbaa !88 + store ptr %36, ptr %8, align 8, !tbaa !125 + %37 = getelementptr inbounds nuw i8, ptr %0, i64 80 + store ptr %36, ptr %37, align 8, !tbaa !240 + %38 = getelementptr inbounds nuw i8, ptr %0, i64 88 + store ptr %36, ptr %38, align 8, !tbaa !208 + store ptr null, ptr %35, align 8, !tbaa !88 %gepdiff.i = add i64 %2, -12 - %40 = icmp ult i64 %gepdiff.i, %34 - br i1 %40, label %174, label %41 + %39 = icmp ult i64 %gepdiff.i, %33 + br i1 %39, label %169, label %40 -41: ; preds = %31 - %42 = tail call fastcc i32 @ssl_session_load(ptr noundef %37, i8 noundef zeroext 1, ptr noundef nonnull %35, i64 noundef %34) - %.not155.i = icmp eq i32 %42, 0 - br i1 %.not155.i, label %45, label %43 +40: ; preds = %30 + %41 = tail call fastcc i32 @ssl_session_load(ptr noundef %36, i8 noundef zeroext 1, ptr noundef nonnull %34, i64 noundef %33) + %.not155.i = icmp eq i32 %41, 0 + br i1 %.not155.i, label %44, label %42 -43: ; preds = %41 - %44 = load ptr, ptr %8, align 8, !tbaa !125 - tail call void @mbedtls_ssl_session_free(ptr noundef %44) - br label %174 +42: ; preds = %40 + %43 = load ptr, ptr %8, align 8, !tbaa !125 + tail call void @mbedtls_ssl_session_free(ptr noundef %43) + br label %169 -45: ; preds = %41 - %46 = getelementptr inbounds nuw i8, ptr %35, i64 %34 - %47 = getelementptr inbounds nuw i8, ptr %0, i64 144 - %48 = load ptr, ptr %47, align 8, !tbaa !87 - %49 = getelementptr inbounds nuw i8, ptr %0, i64 136 - store ptr %48, ptr %49, align 8, !tbaa !119 - %50 = getelementptr inbounds nuw i8, ptr %0, i64 120 - store ptr %48, ptr %50, align 8, !tbaa !35 - %51 = getelementptr inbounds nuw i8, ptr %0, i64 128 - store ptr %48, ptr %51, align 8, !tbaa !92 - store ptr null, ptr %47, align 8, !tbaa !87 - %52 = load ptr, ptr %8, align 8, !tbaa !125 - %53 = getelementptr inbounds nuw i8, ptr %52, i64 16 - %54 = load i32, ptr %53, align 8, !tbaa !153 - %55 = tail call ptr @mbedtls_ssl_ciphersuite_from_id(i32 noundef %54) #26 - %.not.i.i = icmp eq ptr %55, null - br i1 %.not.i.i, label %174, label %56 - -56: ; preds = %45 - %57 = getelementptr inbounds nuw i8, ptr %55, i64 17 - %58 = load i8, ptr %57, align 1, !tbaa !68 - switch i8 %58, label %174 [ - i8 10, label %ssl_tls12prf_from_cs.exit.thread172.i - i8 9, label %ssl_tls12prf_from_cs.exit.thread172.fold.split.i +44: ; preds = %40 + %45 = getelementptr inbounds nuw i8, ptr %34, i64 %33 + %46 = getelementptr inbounds nuw i8, ptr %0, i64 144 + %47 = load ptr, ptr %46, align 8, !tbaa !87 + %48 = getelementptr inbounds nuw i8, ptr %0, i64 136 + store ptr %47, ptr %48, align 8, !tbaa !119 + %49 = getelementptr inbounds nuw i8, ptr %0, i64 120 + store ptr %47, ptr %49, align 8, !tbaa !35 + %50 = getelementptr inbounds nuw i8, ptr %0, i64 128 + store ptr %47, ptr %50, align 8, !tbaa !92 + store ptr null, ptr %46, align 8, !tbaa !87 + %51 = load ptr, ptr %8, align 8, !tbaa !125 + %52 = getelementptr inbounds nuw i8, ptr %51, i64 16 + %53 = load i32, ptr %52, align 8, !tbaa !153 + %54 = tail call ptr @mbedtls_ssl_ciphersuite_from_id(i32 noundef %53) #26 + %.not.i.i = icmp eq ptr %54, null + br i1 %.not.i.i, label %169, label %55 + +55: ; preds = %44 + %56 = getelementptr inbounds nuw i8, ptr %54, i64 17 + %57 = load i8, ptr %56, align 1, !tbaa !68 + switch i8 %57, label %174 [ + i8 10, label %ssl_tls12prf_from_cs.exit.thread179.i + i8 9, label %ssl_tls12prf_from_cs.exit.thread179.fold.split.i ] -ssl_tls12prf_from_cs.exit.thread172.fold.split.i: ; preds = %56 - br label %ssl_tls12prf_from_cs.exit.thread172.i - -ssl_tls12prf_from_cs.exit.thread172.i: ; preds = %ssl_tls12prf_from_cs.exit.thread172.fold.split.i, %56 - %.0.i174.i = phi ptr [ @tls_prf_sha384, %56 ], [ @tls_prf_sha256, %ssl_tls12prf_from_cs.exit.thread172.fold.split.i ] - %gepdiff156.i = sub i64 %gepdiff.i, %34 - %59 = icmp ult i64 %gepdiff156.i, 64 - br i1 %59, label %174, label %60 - -60: ; preds = %ssl_tls12prf_from_cs.exit.thread172.i - %61 = load ptr, ptr %49, align 8, !tbaa !119 - %62 = load ptr, ptr %8, align 8, !tbaa !125 - %63 = getelementptr inbounds nuw i8, ptr %62, i64 16 - %64 = load i32, ptr %63, align 8, !tbaa !153 - %65 = getelementptr inbounds nuw i8, ptr %62, i64 64 - %66 = getelementptr inbounds nuw i8, ptr %62, i64 232 - %67 = load i32, ptr %66, align 8, !tbaa !217 - %68 = load ptr, ptr %0, align 8, !tbaa !23 - %69 = getelementptr inbounds nuw i8, ptr %68, i64 8 - %70 = load i8, ptr %69, align 8, !tbaa !94 - %71 = zext i8 %70 to i32 - %72 = tail call fastcc i32 @ssl_tls12_populate_transform(ptr noundef %61, i32 noundef %64, ptr noundef nonnull %65, i32 noundef %67, ptr noundef nonnull %.0.i174.i, ptr noundef nonnull %46, i32 noundef 771, i32 noundef %71, ptr noundef nonnull %0) - %.not157.i = icmp eq i32 %72, 0 - br i1 %.not157.i, label %73, label %174 - -73: ; preds = %60 - %74 = add nuw nsw i64 %34, 76 - %75 = icmp eq i64 %2, %74 - br i1 %75, label %174, label %76 - -76: ; preds = %73 - %77 = getelementptr inbounds nuw i8, ptr %46, i64 64 - %78 = load i8, ptr %77, align 1, !tbaa !80 - %79 = load ptr, ptr %49, align 8, !tbaa !119 - %80 = getelementptr inbounds nuw i8, ptr %79, i64 320 - store i8 %78, ptr %80, align 8, !tbaa !36 - %.neg178.i = add i64 %2, -77 - %gepdiff159.i = sub i64 %.neg178.i, %34 - %81 = zext i8 %78 to i64 - %.not160.i = icmp ugt i64 %gepdiff159.i, %81 - br i1 %.not160.i, label %82, label %174 - -82: ; preds = %76 - %83 = getelementptr inbounds nuw i8, ptr %46, i64 65 - %84 = getelementptr inbounds nuw i8, ptr %79, i64 322 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 2 %84, ptr nonnull align 1 %83, i64 %81, i1 false) - %85 = load ptr, ptr %49, align 8, !tbaa !119 - %86 = getelementptr inbounds nuw i8, ptr %85, i64 320 - %87 = load i8, ptr %86, align 8, !tbaa !36 - %88 = zext i8 %87 to i64 - %89 = getelementptr inbounds nuw i8, ptr %83, i64 %88 - %90 = getelementptr inbounds nuw i8, ptr %89, i64 1 +ssl_tls12prf_from_cs.exit.thread179.fold.split.i: ; preds = %55 + br label %ssl_tls12prf_from_cs.exit.thread179.i + +ssl_tls12prf_from_cs.exit.thread179.i: ; preds = %ssl_tls12prf_from_cs.exit.thread179.fold.split.i, %55 + %.0.i181.i = phi ptr [ @tls_prf_sha384, %56 ], [ @tls_prf_sha256, %ssl_tls12prf_from_cs.exit.thread172.fold.split.i ] + %gepdiff156.i = sub i64 %gepdiff.i, %33 + %58 = icmp ult i64 %gepdiff156.i, 64 + br i1 %58, label %169, label %59 + +59: ; preds = %ssl_tls12prf_from_cs.exit.thread179.i + %60 = load ptr, ptr %48, align 8, !tbaa !119 + %61 = load ptr, ptr %8, align 8, !tbaa !125 + %62 = getelementptr inbounds nuw i8, ptr %61, i64 16 + %63 = load i32, ptr %62, align 8, !tbaa !153 + %64 = getelementptr inbounds nuw i8, ptr %61, i64 64 + %65 = getelementptr inbounds nuw i8, ptr %61, i64 232 + %66 = load i32, ptr %65, align 8, !tbaa !217 + %67 = load ptr, ptr %0, align 8, !tbaa !23 + %68 = getelementptr inbounds nuw i8, ptr %67, i64 8 + %69 = load i8, ptr %68, align 8, !tbaa !94 + %70 = zext i8 %69 to i32 + %71 = tail call fastcc i32 @ssl_tls12_populate_transform(ptr noundef %60, i32 noundef %63, ptr noundef nonnull %64, i32 noundef %66, ptr noundef nonnull %.0.i181.i, ptr noundef nonnull %45, i32 noundef 771, i32 noundef %70, ptr noundef nonnull %0) + %.not157.i = icmp eq i32 %71, 0 + br i1 %.not157.i, label %72, label %169 + +72: ; preds = %59 + %73 = add nuw nsw i64 %33, 76 + %74 = icmp eq i64 %2, %73 + br i1 %74, label %169, label %75 + +75: ; preds = %72 + %76 = getelementptr inbounds nuw i8, ptr %45, i64 64 + %77 = load i8, ptr %76, align 1, !tbaa !80 + %78 = load ptr, ptr %48, align 8, !tbaa !119 + %79 = getelementptr inbounds nuw i8, ptr %78, i64 320 + store i8 %77, ptr %79, align 8, !tbaa !36 + %.neg9 = add i64 %2, -77 + %gepdiff159.i = sub i64 %.neg9, %33 + %80 = zext i8 %77 to i64 + %.not160.i = icmp ugt i64 %gepdiff159.i, %80 + br i1 %.not160.i, label %81, label %169 + +81: ; preds = %75 + %82 = getelementptr inbounds nuw i8, ptr %45, i64 65 + %83 = getelementptr inbounds nuw i8, ptr %78, i64 322 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 2 %83, ptr nonnull align 1 %82, i64 %80, i1 false) + %84 = load ptr, ptr %48, align 8, !tbaa !119 + %85 = getelementptr inbounds nuw i8, ptr %84, i64 320 + %86 = load i8, ptr %85, align 8, !tbaa !36 + %87 = zext i8 %86 to i64 + %88 = getelementptr inbounds nuw i8, ptr %82, i64 %87 + %90 = getelementptr inbounds nuw i8, ptr %88, i64 1 %91 = load i8, ptr %89, align 1, !tbaa !80 %92 = getelementptr inbounds nuw i8, ptr %85, i64 321 store i8 %91, ptr %92, align 1, !tbaa !43 %93 = ptrtoint ptr %90 to i64 - %94 = sub i64 %25, %93 - %95 = zext i8 %91 to i64 - %96 = icmp ult i64 %94, %95 - br i1 %96, label %174, label %97 + %gepdiff161.i = sub i64 %25, %93 + %92 = zext i8 %91 to i64 + %93 = icmp ult i64 %gepdiff161.i, %92 + br i1 %93, label %169, label %94 -97: ; preds = %82 - %98 = getelementptr inbounds nuw i8, ptr %85, i64 354 +94: ; preds = %81 + %95 = getelementptr inbounds nuw i8, ptr %85, i64 354 tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 2 %98, ptr nonnull align 1 %90, i64 %95, i1 false) %99 = load ptr, ptr %49, align 8, !tbaa !119 %100 = getelementptr inbounds nuw i8, ptr %99, i64 321 @@ -5331,32 +5331,32 @@ ssl_tls12prf_from_cs.exit.thread172.i: ; preds = %ssl_tls12prf_from_c %106 = icmp ult i64 %105, 4 br i1 %106, label %174, label %107 -107: ; preds = %97 +107:; preds = %97 %.0.copyload.i170.i = load i32, ptr %103, align 1 %108 = tail call i32 @llvm.bswap.i32(i32 %.0.copyload.i170.i) - %109 = getelementptr inbounds nuw i8, ptr %0, i64 24 - store i32 %108, ptr %109, align 8, !tbaa !237 + %106 = getelementptr inbounds nuw i8, ptr %0, i64 24 + store i32 %108, ptr %106, align 8, !tbaa !237 %110 = getelementptr inbounds nuw i8, ptr %103, i64 4 %111 = ptrtoint ptr %110 to i64 %112 = sub i64 %25, %111 %113 = icmp ult i64 %112, 16 br i1 %113, label %174, label %114 -114: ; preds = %107 +114:; preds = %107 %.0.copyload.i167.i = load i64, ptr %110, align 1 %115 = tail call i64 @llvm.bswap.i64(i64 %.0.copyload.i167.i) - %116 = getelementptr inbounds nuw i8, ptr %0, i64 288 - store i64 %115, ptr %116, align 8, !tbaa !238 + %111 = getelementptr inbounds nuw i8, ptr %0, i64 288 + store i64 %115, ptr %111, align 8, !tbaa !238 %117 = getelementptr inbounds nuw i8, ptr %103, i64 12 %.0.copyload.i168.i = load i64, ptr %117, align 1 %118 = tail call i64 @llvm.bswap.i64(i64 %.0.copyload.i168.i) - %119 = getelementptr inbounds nuw i8, ptr %0, i64 296 - store i64 %118, ptr %119, align 8, !tbaa !239 + %114 = getelementptr inbounds nuw i8, ptr %0, i64 296 + store i64 %118, ptr %114, align 8, !tbaa !239 %120 = getelementptr inbounds nuw i8, ptr %103, i64 20 %121 = icmp eq ptr %4, %120 - br i1 %121, label %174, label %122 + br i1 %121, label %169, label %122 -122: ; preds = %114 +122:; preds = %114 %123 = getelementptr inbounds nuw i8, ptr %103, i64 21 %124 = load i8, ptr %120, align 1, !tbaa !80 %125 = getelementptr inbounds nuw i8, ptr %0, i64 328 @@ -5366,107 +5366,107 @@ ssl_tls12prf_from_cs.exit.thread172.i: ; preds = %ssl_tls12prf_from_c %128 = icmp ult i64 %127, 8 br i1 %128, label %174, label %129 -129: ; preds = %122 +129:; preds = %122 %130 = getelementptr inbounds nuw i8, ptr %0, i64 416 %131 = load i64, ptr %123, align 1 store i64 %131, ptr %130, align 8 - %132 = getelementptr inbounds nuw i8, ptr %103, i64 29 + %125 = getelementptr inbounds nuw i8, ptr %103, i64 29 %133 = ptrtoint ptr %132 to i64 %134 = sub i64 %25, %133 %135 = icmp ult i64 %134, 2 - br i1 %135, label %174, label %136 + br i1 %135, label %169, label %136 -136: ; preds = %129 +136:; preds = %129 %.0.copyload.i.i = load i16, ptr %132, align 1 %137 = tail call i16 @llvm.bswap.i16(i16 %.0.copyload.i.i) %138 = getelementptr inbounds nuw i8, ptr %0, i64 424 - store i16 %137, ptr %138, align 8, !tbaa !143 + store i16 %137, ptr %138, align 8, !tbaa !142 %139 = getelementptr inbounds nuw i8, ptr %103, i64 31 %140 = icmp eq ptr %4, %139 br i1 %140, label %174, label %141 -141: ; preds = %136 +141:; preds = %136 %142 = getelementptr inbounds nuw i8, ptr %103, i64 32 %143 = load i8, ptr %139, align 1, !tbaa !80 %.not161.i = icmp eq i8 %143, 0 - br i1 %.not161.i, label %164, label %144 + br i1 %.not161.i, label %159, label %144 -144: ; preds = %141 - %145 = load ptr, ptr %0, align 8, !tbaa !23 - %146 = getelementptr inbounds nuw i8, ptr %145, i64 328 +144: ; preds = %141 + %138 = load ptr, ptr %0, align 8, !tbaa !23 + %146 = getelementptr inbounds nuw i8, ptr %138, i64 328 %147 = load ptr, ptr %146, align 8, !tbaa !193 %.not162.i = icmp eq ptr %147, null br i1 %.not162.i, label %.loopexit.i, label %.preheader.i -.preheader.i: ; preds = %144 - %148 = load ptr, ptr %147, align 8, !tbaa !64 - %.not163180.i = icmp eq ptr %148, null - br i1 %.not163180.i, label %.loopexit.i, label %.lr.ph.i +.preheader.i:; preds = %144 + %142 = load ptr, ptr %147, align 8, !tbaa !64 + %.not169.i = icmp eq ptr %142, null + br i1 %.not169.i, label %.loopexit.i, label %.lr.ph.i .lr.ph.i: ; preds = %.preheader.i - %149 = zext i8 %143 to i64 - br label %150 - -150: ; preds = %158, %.lr.ph.i - %151 = phi ptr [ %148, %.lr.ph.i ], [ %160, %158 ] - %.0181.i = phi ptr [ %147, %.lr.ph.i ], [ %159, %158 ] - %152 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %151) #28 - %153 = icmp eq i64 %152, %149 - br i1 %153, label %154, label %158 - -154: ; preds = %150 - %bcmp164.i = tail call i32 @bcmp(ptr nonnull %142, ptr nonnull %151, i64 %149) - %155 = icmp eq i32 %bcmp164.i, 0 - br i1 %155, label %156, label %158 - -156: ; preds = %154 - %157 = getelementptr inbounds nuw i8, ptr %0, i64 440 - store ptr %151, ptr %157, align 8, !tbaa !126 + %144 = zext i8 %143 to i64 + br label %145 + +145: ; preds = %153, %.lr.ph.i + %146 = phi ptr [ %148, %.lr.ph.i ], [ %159, %158 ] + %.0193.i = phi ptr [ %147, %.lr.ph.i ], [ %154, %158 ] + %147 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %146) #28 + %148 = icmp eq i64 %147, %144 + br i1 %148, label %149, label %153 + +149: ; preds = %145 + %bcmp171.i = tail call i32 @bcmp(ptr nonnull %142, ptr nonnull %146, i64 %144) + %150 = icmp eq i32 %bcmp171.i, 0 + br i1 %150, label %151, label %153 + +151: ; preds = %149 + %152 = getelementptr inbounds nuw i8, ptr %0, i64 440 + store ptr %146, ptr %152, align 8, !tbaa !126 br label %.loopexit.i -158: ; preds = %154, %150 - %159 = getelementptr inbounds nuw i8, ptr %.0181.i, i64 8 - %160 = load ptr, ptr %159, align 8, !tbaa !64 - %.not163.i = icmp eq ptr %160, null - br i1 %.not163.i, label %.loopexit.i, label %150, !llvm.loop !241 - -.loopexit.i: ; preds = %158, %156, %.preheader.i, %144 - %161 = getelementptr inbounds nuw i8, ptr %0, i64 440 - %162 = load ptr, ptr %161, align 8, !tbaa !126 - %163 = icmp eq ptr %162, null - br i1 %163, label %174, label %164 - -164: ; preds = %.loopexit.i, %141 - %165 = zext i8 %143 to i64 - %166 = getelementptr inbounds nuw i8, ptr %142, i64 %165 +153: ; preds = %149, %145 + %154 = getelementptr inbounds nuw i8, ptr %.0193.i, i64 8 + %155 = load ptr, ptr %154, align 8, !tbaa !64 + %.not170.i = icmp eq ptr %159, null + br i1 %.not170.i, label %.loopexit.i, label %145, !llvm.loop !241 + +.loopexit.i: ; preds = %153, %151, %.preheader.i, %144 + %156 = getelementptr inbounds nuw i8, ptr %0, i64 440 + %157 = load ptr, ptr %156, align 8, !tbaa !126 + %158 = icmp eq ptr %157, null + br i1 %158, label %169, label %159 + +159: ; preds = %.loopexit.i, %141 + %160 = zext i8 %143 to i64 + %161 = getelementptr inbounds nuw i8, ptr %142, i64 %160 store i32 27, ptr %5, align 8, !tbaa !34 - %167 = getelementptr inbounds nuw i8, ptr %0, i64 20 - store i32 771, ptr %167, align 4, !tbaa !84 + %162 = getelementptr inbounds nuw i8, ptr %0, i64 20 + store i32 771, ptr %162, align 4, !tbaa !84 tail call void @mbedtls_ssl_update_out_pointers(ptr noundef nonnull %0, ptr noundef %99) #26 - %168 = getelementptr inbounds nuw i8, ptr %0, i64 272 - store i16 1, ptr %168, align 8, !tbaa !115 - %169 = getelementptr inbounds nuw i8, ptr %0, i64 112 - %170 = load ptr, ptr %169, align 8, !tbaa !70 - %.not165.i = icmp eq ptr %170, null - br i1 %.not165.i, label %173, label %171 - -171: ; preds = %164 + %163 = getelementptr inbounds nuw i8, ptr %0, i64 272 + store i16 1, ptr %163, align 8, !tbaa !115 + %164 = getelementptr inbounds nuw i8, ptr %0, i64 112 + %165 = load ptr, ptr %164, align 8, !tbaa !70 + %.not172.i = icmp eq ptr %165, null + br i1 %.not172.i, label %168, label %166 + +166: ; preds = %159 tail call void @mbedtls_ssl_handshake_free(ptr noundef nonnull %0) - %172 = load ptr, ptr %169, align 8, !tbaa !70 - tail call void @free(ptr noundef %172) #26 - store ptr null, ptr %169, align 8, !tbaa !70 - br label %173 + %167 = load ptr, ptr %164, align 8, !tbaa !70 + tail call void @free(ptr noundef %167) #26 + store ptr null, ptr %164, align 8, !tbaa !70 + br label %168 -173: ; preds = %171, %164 - %.not166.i = icmp eq ptr %166, %4 - br i1 %.not166.i, label %ssl_context_load.exit, label %174 +168: ; preds = %166, %159 + %.not173.i = icmp eq ptr %161, %4 + br i1 %.not173.i, label %ssl_context_load.exit, label %169 -174: ; preds = %43, %7, %3, %20, %17, %14, %10, %24, %27, %28, %31, %ssl_tls12prf_from_cs.exit.thread172.i, %60, %73, %76, %82, %97, %107, %114, %122, %129, %173, %45, %136, %.loopexit.i, %56 - %.0140.i.ph = phi i32 [ -28928, %56 ], [ -28928, %.loopexit.i ], [ -28928, %136 ], [ -28928, %45 ], [ -28928, %173 ], [ -28928, %129 ], [ -28928, %122 ], [ -28928, %114 ], [ -28928, %107 ], [ -28928, %97 ], [ -28928, %82 ], [ -28928, %76 ], [ -28928, %73 ], [ %72, %60 ], [ -28928, %ssl_tls12prf_from_cs.exit.thread172.i ], [ -28928, %31 ], [ -28928, %28 ], [ -24320, %27 ], [ -28928, %24 ], [ -28928, %10 ], [ -28928, %14 ], [ -28928, %17 ], [ -28928, %20 ], [ -28928, %3 ], [ -28928, %7 ], [ %42, %43 ] +169: ; preds = %42, %7, %3, %20, %17, %14, %10, %24, %26, %27, %30, %ssl_tls12prf_from_cs.exit.thread179.i, %59, %72, %75, %81, %94, %107, %114, %122, %129, %168, %44, %136, %.loopexit.i, %55 + %.0140.i.ph = phi i32 [ -28928, %56 ], [ -28928, %.loopexit.i ], [ -28928, %136 ], [ -28928, %45 ], [ -28928, %173 ], [ -28928, %129 ], [ -28928, %122 ], [ -28928, %114 ], [ -28928, %107 ], [ -28928, %97 ], [ -28928, %82 ], [ -28928, %76 ], [ -28928, %73 ], [ %72, %60 ], [ -28928, %ssl_tls12prf_from_cs.exit.thread172.i ], [ -28928, %31 ], [ -28928, %28 ], [ -24320, %27 ], [ -28928, %24 ], [ -28928, %10 ], [ -28928, %14 ], [ -28928, %17 ], [ -28928, %20 ], [ -28928, %3 ], [ -28928, %7 ], [ %41, %43 ] tail call void @mbedtls_ssl_free(ptr noundef nonnull %0) br label %ssl_context_load.exit -ssl_context_load.exit: ; preds = %173, %174 +ssl_context_load.exit: ; preds = %168, %169 %.0140.i8 = phi i32 [ %.0140.i.ph, %174 ], [ 0, %173 ] ret i32 %.0140.i8 } diff --git a/bench/lief/optimized/ssl_tls13_client.ll b/bench/lief/optimized/ssl_tls13_client.ll index 27b29412180..e0c6dbda6db 100644 --- a/bench/lief/optimized/ssl_tls13_client.ll +++ b/bench/lief/optimized/ssl_tls13_client.ll @@ -2203,179 +2203,179 @@ ssl_tls13_process_certificate_request.exit: ; preds = %ssl_tls13_certifica %476 = icmp ugt i64 %473, 8 br i1 %476, label %478, label %477 -477: ; preds = %468 +476: ; preds = %468 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 2858, ptr noundef nonnull @.str.34, ptr noundef nonnull @__func__.ssl_tls13_parse_new_session_ticket) #12 call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 50, i32 noundef -29440) #12 br label %ssl_tls13_process_new_session_ticket.exit -478: ; preds = %468 +477: ; preds = %468 %.0.copyload.i97.i.i = load i32, ptr %472, align 1 - %479 = call i32 @llvm.bswap.i32(i32 %.0.copyload.i97.i.i) - %480 = getelementptr inbounds nuw i8, ptr %470, i64 144 - store i32 %479, ptr %480, align 8, !tbaa !104 - call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 2863, ptr noundef nonnull @.str.101, i32 noundef %479) #12 - %481 = load i32, ptr %480, align 8, !tbaa !104 - %482 = icmp ugt i32 %481, 604800 - br i1 %482, label %483, label %484 - -483: ; preds = %478 + %478 = call i32 @llvm.bswap.i32(i32 %.0.copyload.i97.i.i) + %479 = getelementptr inbounds nuw i8, ptr %470, i64 144 + store i32 %478, ptr %479, align 8, !tbaa !104 + call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 2863, ptr noundef nonnull @.str.101, i32 noundef %478) #12 + %480 = load i32, ptr %479, align 8, !tbaa !104 + %481 = icmp ugt i32 %480, 604800 + br i1 %481, label %482, label %483 + +482: ; preds = %477 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 2866, ptr noundef nonnull @.str.102) #12 br label %ssl_tls13_process_new_session_ticket.exit -484: ; preds = %478 - %485 = getelementptr inbounds nuw i8, ptr %472, i64 4 - %.0.copyload.i98.i.i = load i32, ptr %485, align 1 - %486 = call i32 @llvm.bswap.i32(i32 %.0.copyload.i98.i.i) - %487 = getelementptr inbounds nuw i8, ptr %470, i64 160 - store i32 %486, ptr %487, align 8, !tbaa !50 - call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 2873, ptr noundef nonnull @.str.103, i32 noundef %486) #12 - %488 = getelementptr inbounds nuw i8, ptr %472, i64 8 - %489 = load i8, ptr %488, align 1, !tbaa !58 - %490 = zext i8 %489 to i64 - %491 = getelementptr inbounds nuw i8, ptr %472, i64 9 +483: ; preds = %477 + %484 = getelementptr inbounds nuw i8, ptr %472, i64 4 + %.0.copyload.i98.i.i = load i32, ptr %484, align 1 + %485 = call i32 @llvm.bswap.i32(i32 %.0.copyload.i98.i.i) + %486 = getelementptr inbounds nuw i8, ptr %470, i64 160 + store i32 %485, ptr %486, align 8, !tbaa !50 + call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 2873, ptr noundef nonnull @.str.103, i32 noundef %485) #12 + %487 = getelementptr inbounds nuw i8, ptr %472, i64 8 + %488 = load i8, ptr %487, align 1, !tbaa !58 + %489 = zext i8 %488 to i64 + %490 = getelementptr inbounds nuw i8, ptr %472, i64 9 %gepdiff.i58 = add i64 %473, -9 - %.not34.i = icmp ult i64 %gepdiff.i58, %490 - br i1 %.not34.i, label %492, label %493 + %.not34.i = icmp ult i64 %gepdiff.i58, %489 + br i1 %.not34.i, label %491, label %492 -492: ; preds = %484 +491: ; preds = %483 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 2878, ptr noundef nonnull @.str.34, ptr noundef nonnull @__func__.ssl_tls13_parse_new_session_ticket) #12 call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 50, i32 noundef -29440) #12 br label %ssl_tls13_process_new_session_ticket.exit -493: ; preds = %484 - call void @mbedtls_debug_print_buf(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 2880, ptr noundef nonnull @.str.104, ptr noundef nonnull %491, i64 noundef %490) #12 - %gepdiff35.i = sub nuw i64 %gepdiff.i58, %490 - %494 = icmp ugt i64 %gepdiff35.i, 1 - br i1 %494, label %496, label %495 +492: ; preds = %483 + call void @mbedtls_debug_print_buf(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 2880, ptr noundef nonnull @.str.104, ptr noundef nonnull %490, i64 noundef %489) #12 + %gepdiff35.i = sub nuw i64 %gepdiff.i58, %489 + %493 = icmp ugt i64 %gepdiff35.i, 1 + br i1 %493, label %495, label %494 -495: ; preds = %493 +494: ; preds = %492 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 2884, ptr noundef nonnull @.str.34, ptr noundef nonnull @__func__.ssl_tls13_parse_new_session_ticket) #12 call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 50, i32 noundef -29440) #12 br label %ssl_tls13_process_new_session_ticket.exit -496: ; preds = %493 - %497 = getelementptr inbounds nuw i8, ptr %491, i64 %490 - %.0.copyload.i96.i.i = load i16, ptr %497, align 1 - %498 = call i16 @llvm.bswap.i16(i16 %.0.copyload.i96.i.i) - %499 = zext i16 %498 to i64 - %500 = getelementptr inbounds nuw i8, ptr %497, i64 2 - %501 = icmp ule ptr %500, %474 - %.neg39.i = add i64 %473, -11 - %gepdiff36.i = sub i64 %.neg39.i, %490 - %502 = icmp uge i64 %gepdiff36.i, %499 - %narrow.i101.not.i.i = and i1 %501, %502 - br i1 %narrow.i101.not.i.i, label %504, label %503 - -503: ; preds = %496 +495: ; preds = %492 + %496 = getelementptr inbounds nuw i8, ptr %490, i64 %489 + %.0.copyload.i96.i.i = load i16, ptr %496, align 1 + %497 = call i16 @llvm.bswap.i16(i16 %.0.copyload.i96.i.i) + %498 = zext i16 %497 to i64 + %499 = getelementptr inbounds nuw i8, ptr %496, i64 2 + %500 = icmp ule ptr %499, %474 + %.neg40.i = add i64 %473, -11 + %gepdiff36.i = sub i64 %.neg40.i, %489 + %501 = icmp uge i64 %gepdiff36.i, %498 + %narrow.i101.not.i.i = and i1 %500, %501 + br i1 %narrow.i101.not.i.i, label %503, label %502 + +502: ; preds = %495 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 2887, ptr noundef nonnull @.str.34, ptr noundef nonnull @__func__.ssl_tls13_parse_new_session_ticket) #12 call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 50, i32 noundef -29440) #12 br label %ssl_tls13_process_new_session_ticket.exit -504: ; preds = %496 - call void @mbedtls_debug_print_buf(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 2888, ptr noundef nonnull @.str.105, ptr noundef nonnull %500, i64 noundef %499) #12 - %505 = getelementptr inbounds nuw i8, ptr %470, i64 128 - %506 = load ptr, ptr %505, align 8, !tbaa !35 - %.not91.i.i59 = icmp eq ptr %506, null - br i1 %.not91.i.i59, label %507, label %510 - -507: ; preds = %504 - %508 = getelementptr inbounds nuw i8, ptr %470, i64 136 - %509 = load i64, ptr %508, align 8, !tbaa !49 - %.not92.i.i = icmp eq i64 %509, 0 - br i1 %.not92.i.i, label %511, label %510 - -510: ; preds = %507, %504 - call void @free(ptr noundef %506) #12 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %505, i8 0, i64 16, i1 false) - br label %511 - -511: ; preds = %510, %507 - %512 = call noalias ptr @calloc(i64 noundef 1, i64 noundef %499) #14 - %513 = icmp eq ptr %512, null - br i1 %513, label %514, label %515 - -514: ; preds = %511 +503: ; preds = %495 + call void @mbedtls_debug_print_buf(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 2888, ptr noundef nonnull @.str.105, ptr noundef nonnull %499, i64 noundef %498) #12 + %504 = getelementptr inbounds nuw i8, ptr %470, i64 128 + %505 = load ptr, ptr %504, align 8, !tbaa !35 + %.not91.i.i59 = icmp eq ptr %505, null + br i1 %.not91.i.i59, label %506, label %509 + +506: ; preds = %503 + %507 = getelementptr inbounds nuw i8, ptr %470, i64 136 + %508 = load i64, ptr %507, align 8, !tbaa !49 + %.not92.i.i = icmp eq i64 %508, 0 + br i1 %.not92.i.i, label %510, label %509 + +509: ; preds = %506, %503 + call void @free(ptr noundef %505) #12 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %504, i8 0, i64 16, i1 false) + br label %510 + +510: ; preds = %509, %506 + %511 = call noalias ptr @calloc(i64 noundef 1, i64 noundef %498) #14 + %512 = icmp eq ptr %511, null + br i1 %512, label %513, label %514 + +513: ; preds = %510 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 2898, ptr noundef nonnull @.str.106) #12 br label %ssl_tls13_process_new_session_ticket.exit -515: ; preds = %511 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %512, ptr nonnull align 1 %500, i64 %499, i1 false) - %516 = getelementptr inbounds nuw i8, ptr %500, i64 %499 - store ptr %512, ptr %505, align 8, !tbaa !35 - %517 = getelementptr inbounds nuw i8, ptr %470, i64 136 - store i64 %499, ptr %517, align 8, !tbaa !49 - %518 = getelementptr inbounds nuw i8, ptr %470, i64 164 - %519 = load i8, ptr %518, align 4, !tbaa !38 - %520 = and i8 %519, -14 - store i8 %520, ptr %518, align 4, !tbaa !38 - %521 = icmp ule ptr %516, %474 - %522 = add nuw nsw i64 %490, %499 - %gepdiff37.i = sub i64 %.neg39.i, %522 - %523 = icmp ugt i64 %gepdiff37.i, 1 - %narrow.i102.not.i.i = and i1 %521, %523 - br i1 %narrow.i102.not.i.i, label %525, label %524 - -524: ; preds = %515 +514: ; preds = %510 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %511, ptr nonnull align 1 %499, i64 %498, i1 false) + %515 = getelementptr inbounds nuw i8, ptr %499, i64 %498 + store ptr %511, ptr %504, align 8, !tbaa !35 + %516 = getelementptr inbounds nuw i8, ptr %470, i64 136 + store i64 %498, ptr %516, align 8, !tbaa !49 + %517 = getelementptr inbounds nuw i8, ptr %470, i64 164 + %518 = load i8, ptr %517, align 4, !tbaa !38 + %519 = and i8 %518, -14 + store i8 %519, ptr %517, align 4, !tbaa !38 + %520 = icmp ule ptr %515, %474 + %521 = add nuw nsw i64 %490, %499 + %gepdiff37.i = sub i64 %.neg40.i, %521 + %522 = icmp ugt i64 %gepdiff37.i, 1 + %narrow.i102.not.i.i = and i1 %520, %522 + br i1 %narrow.i102.not.i.i, label %524, label %523 + +523: ; preds = %514 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 2910, ptr noundef nonnull @.str.34, ptr noundef nonnull @__func__.ssl_tls13_parse_new_session_ticket) #12 call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 50, i32 noundef -29440) #12 br label %ssl_tls13_process_new_session_ticket.exit -525: ; preds = %515 - %.0.copyload.i.i.i60 = load i16, ptr %516, align 1 - %526 = call i16 @llvm.bswap.i16(i16 %.0.copyload.i.i.i60) - %527 = zext i16 %526 to i64 - %528 = getelementptr inbounds nuw i8, ptr %516, i64 2 - %529 = icmp ule ptr %528, %474 +524: ; preds = %514 + %.0.copyload.i.i.i60 = load i16, ptr %515, align 1 + %525 = call i16 @llvm.bswap.i16(i16 %.0.copyload.i.i.i60) + %526 = zext i16 %525 to i64 + %527 = getelementptr inbounds nuw i8, ptr %515, i64 2 + %528 = icmp ule ptr %527, %474 %530 = ptrtoint ptr %528 to i64 - %531 = sub i64 %475, %530 - %532 = icmp uge i64 %531, %527 - %narrow.i103.not.i.i61 = and i1 %529, %532 - br i1 %narrow.i103.not.i.i61, label %534, label %533 + %gepdiff38.i = sub i64 %475, %530 + %529 = icmp uge i64 %gepdiff38.i, %526 + %narrow.i103.not.i.i61 = and i1 %528, %529 + br i1 %narrow.i103.not.i.i61, label %531, label %530 -533: ; preds = %525 +530: ; preds = %524 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 2913, ptr noundef nonnull @.str.34, ptr noundef nonnull @__func__.ssl_tls13_parse_new_session_ticket) #12 call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 50, i32 noundef -29440) #12 br label %ssl_tls13_process_new_session_ticket.exit -534: ; preds = %525 - call void @mbedtls_debug_print_buf(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 2915, ptr noundef nonnull @.str.107, ptr noundef nonnull %528, i64 noundef %527) #12 - %535 = getelementptr inbounds nuw i8, ptr %528, i64 %527 - %536 = call fastcc i32 @ssl_tls13_parse_new_session_ticket_exts(ptr noundef nonnull %0, ptr noundef nonnull %528, ptr noundef nonnull %535) - %.not95.i.i62 = icmp eq i32 %536, 0 - br i1 %.not95.i.i62, label %ssl_tls13_parse_new_session_ticket.exit.i, label %537 +531: ; preds = %524 + call void @mbedtls_debug_print_buf(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 2915, ptr noundef nonnull @.str.107, ptr noundef nonnull %527, i64 noundef %526) #12 + %532 = getelementptr inbounds nuw i8, ptr %527, i64 %526 + %533 = call fastcc i32 @ssl_tls13_parse_new_session_ticket_exts(ptr noundef nonnull %0, ptr noundef nonnull %527, ptr noundef nonnull %532) + %.not95.i.i62 = icmp eq i32 %533, 0 + br i1 %.not95.i.i62, label %ssl_tls13_parse_new_session_ticket.exit.i, label %534 -537: ; preds = %534 - call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 2921, ptr noundef nonnull @.str.108, i32 noundef %536) #12 +534: ; preds = %531 + call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 2921, ptr noundef nonnull @.str.108, i32 noundef %533) #12 br label %ssl_tls13_process_new_session_ticket.exit -ssl_tls13_parse_new_session_ticket.exit.i: ; preds = %534 - %538 = load ptr, ptr %469, align 8, !tbaa !102 - %539 = getelementptr inbounds nuw i8, ptr %538, i64 144 - %540 = load i32, ptr %539, align 8, !tbaa !104 - %541 = icmp eq i32 %540, 0 - br i1 %541, label %ssl_tls13_postprocess_new_session_ticket.exit.thread28.thread32.i, label %542 - -542: ; preds = %ssl_tls13_parse_new_session_ticket.exit.i - %543 = call i64 @mbedtls_ms_time() #12 - %544 = getelementptr inbounds nuw i8, ptr %538, i64 224 - store i64 %543, ptr %544, align 8, !tbaa !51 - %545 = getelementptr inbounds nuw i8, ptr %538, i64 16 - %546 = load i32, ptr %545, align 8, !tbaa !46 - %547 = call ptr @mbedtls_ssl_ciphersuite_from_id(i32 noundef %546) #12 - %548 = icmp eq ptr %547, null - br i1 %548, label %549, label %550 - -549: ; preds = %542 +ssl_tls13_parse_new_session_ticket.exit.i: ; preds = %531 + %535 = load ptr, ptr %469, align 8, !tbaa !102 + %536 = getelementptr inbounds nuw i8, ptr %535, i64 144 + %537 = load i32, ptr %536, align 8, !tbaa !104 + %538 = icmp eq i32 %537, 0 + br i1 %538, label %ssl_tls13_postprocess_new_session_ticket.exit.thread28.thread32.i, label %539 + +539: ; preds = %ssl_tls13_parse_new_session_ticket.exit.i + %540 = call i64 @mbedtls_ms_time() #12 + %541 = getelementptr inbounds nuw i8, ptr %535, i64 224 + store i64 %540, ptr %541, align 8, !tbaa !51 + %542 = getelementptr inbounds nuw i8, ptr %535, i64 16 + %543 = load i32, ptr %542, align 8, !tbaa !46 + %544 = call ptr @mbedtls_ssl_ciphersuite_from_id(i32 noundef %543) #12 + %545 = icmp eq ptr %544, null + br i1 %545, label %546, label %547 + +546: ; preds = %539 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 2958, ptr noundef nonnull @.str.58) #12 br label %ssl_tls13_process_new_session_ticket.exit -550: ; preds = %542 - %551 = getelementptr inbounds nuw i8, ptr %547, i64 17 - %552 = load i8, ptr %551, align 1, !tbaa !47 - %553 = zext i8 %552 to i32 - %554 = or disjoint i32 %553, 33554432 - switch i32 %554, label %.fold.split61.i.i [ - i32 33554435, label %555 +547: ; preds = %539 + %548 = getelementptr inbounds nuw i8, ptr %544, i64 17 + %549 = load i8, ptr %548, align 1, !tbaa !47 + %550 = zext i8 %549 to i32 + %551 = or disjoint i32 %550, 33554432 + switch i32 %551, label %.fold.split61.i.i [ + i32 33554435, label %552 i32 33554436, label %.fold.split.i.i i32 33554437, label %.fold.split.i.i i32 33554440, label %.fold.split52.i.i @@ -2390,82 +2390,82 @@ ssl_tls13_parse_new_session_ticket.exit.i: ; preds = %534 i32 33554451, label %ssl_tls13_process_new_session_ticket.exit ] -.fold.split.i.i: ; preds = %550, %550 - br label %555 +.fold.split.i.i: ; preds = %547, %547 + br label %552 -.fold.split52.i.i: ; preds = %550, %550, %550 - br label %555 +.fold.split52.i.i: ; preds = %547, %547, %547 + br label %552 -.fold.split53.i.i: ; preds = %550, %550, %550 - br label %555 +.fold.split53.i.i: ; preds = %547, %547, %547 + br label %552 -.fold.split54.i.i: ; preds = %550, %550 - br label %555 +.fold.split54.i.i: ; preds = %547, %547 + br label %552 -.fold.split61.i.i: ; preds = %550 - br label %555 +.fold.split61.i.i: ; preds = %547 + br label %552 -555: ; preds = %.fold.split61.i.i, %.fold.split54.i.i, %.fold.split53.i.i, %.fold.split52.i.i, %.fold.split.i.i, %550 +552: ; preds = %.fold.split61.i.i, %.fold.split54.i.i, %.fold.split53.i.i, %.fold.split52.i.i, %.fold.split.i.i, %547 %.ph.i.i = phi i32 [ 48, %.fold.split54.i.i ], [ 32, %.fold.split53.i.i ], [ 28, %.fold.split52.i.i ], [ 20, %.fold.split.i.i ], [ 16, %550 ], [ 0, %.fold.split61.i.i ] - %556 = zext nneg i32 %.ph.i.i to i64 - %557 = getelementptr inbounds nuw i8, ptr %538, i64 428 - call void @mbedtls_debug_print_buf(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 2972, ptr noundef nonnull @.str.109, ptr noundef nonnull %557, i64 noundef %556) #12 - %558 = getelementptr inbounds nuw i8, ptr %538, i64 166 - %559 = call i32 @mbedtls_ssl_tls13_hkdf_expand_label(i32 noundef %554, ptr noundef nonnull %557, i64 noundef %556, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @mbedtls_ssl_tls13_labels, i64 8), i64 noundef 10, ptr noundef nonnull %491, i64 noundef %490, ptr noundef nonnull %558, i64 noundef %556) #12 - %.not.i.i63 = icmp eq i32 %559, 0 + %553 = zext nneg i32 %.ph.i.i to i64 + %554 = getelementptr inbounds nuw i8, ptr %535, i64 428 + call void @mbedtls_debug_print_buf(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 2972, ptr noundef nonnull @.str.109, ptr noundef nonnull %554, i64 noundef %553) #12 + %555 = getelementptr inbounds nuw i8, ptr %535, i64 166 + %556 = call i32 @mbedtls_ssl_tls13_hkdf_expand_label(i32 noundef %551, ptr noundef nonnull %554, i64 noundef %553, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @mbedtls_ssl_tls13_labels, i64 8), i64 noundef 10, ptr noundef nonnull %490, i64 noundef %489, ptr noundef nonnull %555, i64 noundef %553) #12 + %.not.i.i63 = icmp eq i32 %556, 0 br i1 %.not.i.i63, label %ssl_tls13_postprocess_new_session_ticket.exit.thread28.thread.i, label %ssl_tls13_postprocess_new_session_ticket.exit.i -ssl_tls13_postprocess_new_session_ticket.exit.thread28.thread.i: ; preds = %555 - %560 = trunc nuw nsw i32 %.ph.i.i to i8 - %561 = getelementptr inbounds nuw i8, ptr %538, i64 165 - store i8 %560, ptr %561, align 1, !tbaa !54 - call void @mbedtls_debug_print_buf(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 3000, ptr noundef nonnull @.str.111, ptr noundef nonnull %558, i64 noundef %556) #12 - %562 = load ptr, ptr %0, align 8, !tbaa !39 - %563 = getelementptr inbounds nuw i8, ptr %562, i64 32 - %564 = load i32, ptr %563, align 8, !tbaa !40 - %565 = getelementptr inbounds nuw i8, ptr %538, i64 164 - %566 = load i8, ptr %565, align 4, !tbaa !38 - %567 = trunc i32 %564 to i8 - %568 = and i8 %567, 13 - %569 = or i8 %568, %566 - store i8 %569, ptr %565, align 4, !tbaa !38 - %570 = zext i8 %569 to i32 - call void @mbedtls_ssl_print_ticket_flags(ptr noundef nonnull %0, i32 noundef 4, ptr noundef nonnull @.str, i32 noundef 3005, i32 noundef %570) #12 - %571 = load ptr, ptr %469, align 8, !tbaa !102 - %572 = getelementptr inbounds nuw i8, ptr %571, i64 1 - store i8 0, ptr %572, align 1, !tbaa !103 - br label %574 - -ssl_tls13_postprocess_new_session_ticket.exit.i: ; preds = %555 - call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 2, ptr noundef nonnull @.str, i32 noundef 2992, ptr noundef nonnull @.str.110, i32 noundef %559) #12 - %573 = icmp slt i32 %559, 0 - br i1 %573, label %ssl_tls13_process_new_session_ticket.exit, label %ssl_tls13_postprocess_new_session_ticket.exit.thread28.i +ssl_tls13_postprocess_new_session_ticket.exit.thread28.thread.i: ; preds = %552 + %557 = trunc nuw nsw i32 %.ph.i.i to i8 + %558 = getelementptr inbounds nuw i8, ptr %535, i64 165 + store i8 %557, ptr %558, align 1, !tbaa !54 + call void @mbedtls_debug_print_buf(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 3000, ptr noundef nonnull @.str.111, ptr noundef nonnull %555, i64 noundef %553) #12 + %559 = load ptr, ptr %0, align 8, !tbaa !39 + %560 = getelementptr inbounds nuw i8, ptr %559, i64 32 + %561 = load i32, ptr %560, align 8, !tbaa !40 + %562 = getelementptr inbounds nuw i8, ptr %535, i64 164 + %563 = load i8, ptr %562, align 4, !tbaa !38 + %564 = trunc i32 %561 to i8 + %565 = and i8 %564, 13 + %566 = or i8 %565, %563 + store i8 %566, ptr %562, align 4, !tbaa !38 + %567 = zext i8 %566 to i32 + call void @mbedtls_ssl_print_ticket_flags(ptr noundef nonnull %0, i32 noundef 4, ptr noundef nonnull @.str, i32 noundef 3005, i32 noundef %567) #12 + %568 = load ptr, ptr %469, align 8, !tbaa !102 + %569 = getelementptr inbounds nuw i8, ptr %568, i64 1 + store i8 0, ptr %569, align 1, !tbaa !103 + br label %571 + +ssl_tls13_postprocess_new_session_ticket.exit.i: ; preds = %552 + call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 2, ptr noundef nonnull @.str, i32 noundef 2992, ptr noundef nonnull @.str.110, i32 noundef %556) #12 + %570 = icmp slt i32 %556, 0 + br i1 %570, label %ssl_tls13_process_new_session_ticket.exit, label %ssl_tls13_postprocess_new_session_ticket.exit.thread28.i ssl_tls13_postprocess_new_session_ticket.exit.thread28.i: ; preds = %ssl_tls13_postprocess_new_session_ticket.exit.i - %cond.i64 = icmp eq i32 %559, 1 - br i1 %cond.i64, label %ssl_tls13_postprocess_new_session_ticket.exit.thread28.thread32.i, label %574 + %cond.i64 = icmp eq i32 %556, 1 + br i1 %cond.i64, label %ssl_tls13_postprocess_new_session_ticket.exit.thread28.thread32.i, label %571 ssl_tls13_postprocess_new_session_ticket.exit.thread28.thread32.i: ; preds = %ssl_tls13_postprocess_new_session_ticket.exit.thread28.i, %ssl_tls13_parse_new_session_ticket.exit.i call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 2, ptr noundef nonnull @.str, i32 noundef 3053, ptr noundef nonnull @.str.99) #12 - br label %574 + br label %571 -574: ; preds = %ssl_tls13_postprocess_new_session_ticket.exit.thread28.thread32.i, %ssl_tls13_postprocess_new_session_ticket.exit.thread28.i, %ssl_tls13_postprocess_new_session_ticket.exit.thread28.thread.i +571: ; preds = %ssl_tls13_postprocess_new_session_ticket.exit.thread28.thread32.i, %ssl_tls13_postprocess_new_session_ticket.exit.thread28.i, %ssl_tls13_postprocess_new_session_ticket.exit.thread28.thread.i %.1.i65 = phi i32 [ -31488, %ssl_tls13_postprocess_new_session_ticket.exit.thread28.thread.i ], [ 0, %ssl_tls13_postprocess_new_session_ticket.exit.thread28.thread32.i ], [ -27648, %ssl_tls13_postprocess_new_session_ticket.exit.thread28.i ] store i32 27, ptr %12, align 8, !tbaa !68 br label %ssl_tls13_process_new_session_ticket.exit -ssl_tls13_process_new_session_ticket.exit: ; preds = %466, %477, %483, %492, %495, %503, %514, %524, %533, %537, %549, %550, %550, %ssl_tls13_postprocess_new_session_ticket.exit.i, %574 - %.0.i57 = phi i32 [ %467, %466 ], [ %559, %ssl_tls13_postprocess_new_session_ticket.exit.i ], [ %.1.i65, %574 ], [ %536, %537 ], [ -29440, %533 ], [ -29440, %524 ], [ -32512, %514 ], [ -29440, %503 ], [ -29440, %495 ], [ -29440, %492 ], [ -26112, %483 ], [ -29440, %477 ], [ -27648, %549 ], [ -27648, %550 ], [ -27648, %550 ] +ssl_tls13_process_new_session_ticket.exit: ; preds = %466, %476, %482, %491, %494, %502, %513, %523, %530, %534, %546, %547, %547, %ssl_tls13_postprocess_new_session_ticket.exit.i, %571 + %.0.i57 = phi i32 [ %467, %466 ], [ %556, %ssl_tls13_postprocess_new_session_ticket.exit.i ], [ %.1.i65, %574 ], [ %536, %537 ], [ -29440, %533 ], [ -29440, %524 ], [ -32512, %514 ], [ -29440, %503 ], [ -29440, %495 ], [ -29440, %492 ], [ -26112, %483 ], [ -29440, %477 ], [ -27648, %549 ], [ -27648, %550 ], [ -27648, %550 ] call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 2, ptr noundef nonnull @.str, i32 noundef 3064, ptr noundef nonnull @.str.100) #12 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #12 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #12 br label %ssl_tls13_process_server_certificate.exit -575: ; preds = %1 +572: ; preds = %1 tail call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 3179, ptr noundef nonnull @.str.7, i32 noundef %13) #12 br label %ssl_tls13_process_server_certificate.exit -ssl_tls13_process_server_certificate.exit: ; preds = %457, %456, %452, %451, %448, %.sink.split.i, %434, %425, %424, %420, %419, %417, %416, %414, %14, %15, %ssl_tls13_process_server_hello.exit, %ssl_tls13_process_encrypted_extensions.exit, %ssl_tls13_process_certificate_request.exit, %458, %459, %462, %465, %ssl_tls13_process_new_session_ticket.exit, %460, %463, %575 +ssl_tls13_process_server_certificate.exit: ; preds = %457, %456, %452, %451, %448, %.sink.split.i, %434, %425, %424, %420, %419, %417, %416, %414, %14, %15, %ssl_tls13_process_server_hello.exit, %ssl_tls13_process_encrypted_extensions.exit, %ssl_tls13_process_certificate_request.exit, %458, %459, %462, %465, %ssl_tls13_process_new_session_ticket.exit, %460, %463, %572 %.024 = phi i32 [ -28928, %575 ], [ 0, %14 ], [ %16, %15 ], [ %.02461.i, %ssl_tls13_process_server_hello.exit ], [ %.0.i30, %ssl_tls13_process_encrypted_extensions.exit ], [ %.016.i, %ssl_tls13_process_certificate_request.exit ], [ 0, %458 ], [ 0, %459 ], [ %461, %460 ], [ 0, %462 ], [ %464, %463 ], [ 0, %465 ], [ %.0.i57, %ssl_tls13_process_new_session_ticket.exit ], [ %415, %414 ], [ 0, %416 ], [ %418, %417 ], [ 0, %419 ], [ %423, %424 ], [ 0, %425 ], [ %421, %420 ], [ %435, %434 ], [ 0, %.sink.split.i ], [ %449, %448 ], [ 0, %451 ], [ %455, %456 ], [ 0, %457 ], [ %453, %452 ] ret i32 %.024 } diff --git a/bench/lief/optimized/ssl_tls13_server.ll b/bench/lief/optimized/ssl_tls13_server.ll index 0caf3d7cf74..4524800771c 100644 --- a/bench/lief/optimized/ssl_tls13_server.ll +++ b/bench/lief/optimized/ssl_tls13_server.ll @@ -381,79 +381,79 @@ define internal fastcc i32 @ssl_tls13_process_client_hello(ptr noundef %0) unnam %16 = icmp ugt i64 %10, 37 br i1 %16, label %18, label %17 -17: ; preds = %8 +16: ; preds = %8 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1295, ptr noundef nonnull @.str.11, ptr noundef nonnull @__func__.ssl_tls13_parse_client_hello) #9 call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 50, i32 noundef -29440) #9 br label %ssl_tls13_parse_client_hello.exit.thread -18: ; preds = %8 - %19 = load ptr, ptr %0, align 8, !tbaa !40 - %20 = getelementptr inbounds nuw i8, ptr %19, i64 9 - %21 = load i8, ptr %20, align 1, !tbaa !41 - %22 = zext i8 %21 to i32 - %23 = call zeroext i16 @mbedtls_ssl_read_version(ptr noundef %9, i32 noundef %22) #9 - %.not294.i = icmp eq i16 %23, 771 - br i1 %.not294.i, label %25, label %24 +17: ; preds = %8 + %18 = load ptr, ptr %0, align 8, !tbaa !40 + %19 = getelementptr inbounds nuw i8, ptr %18, i64 9 + %20 = load i8, ptr %19, align 1, !tbaa !41 + %21 = zext i8 %20 to i32 + %22 = call zeroext i16 @mbedtls_ssl_read_version(ptr noundef %9, i32 noundef %21) #9 + %.not294.i = icmp eq i16 %22, 771 + br i1 %.not294.i, label %24, label %23 -24: ; preds = %18 +23: ; preds = %17 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1305, ptr noundef nonnull @.str.12) #9 call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 70, i32 noundef -28288) #9 br label %ssl_tls13_parse_client_hello.exit.thread -25: ; preds = %18 - %26 = getelementptr inbounds nuw i8, ptr %9, i64 2 - %27 = getelementptr inbounds nuw i8, ptr %9, i64 34 - %28 = getelementptr inbounds nuw i8, ptr %9, i64 35 - %29 = load i8, ptr %27, align 1, !tbaa !47 - %30 = zext i8 %29 to i64 - %31 = add nuw nsw i64 %30, 2 +24: ; preds = %17 + %25 = getelementptr inbounds nuw i8, ptr %9, i64 2 + %26 = getelementptr inbounds nuw i8, ptr %9, i64 34 + %27 = getelementptr inbounds nuw i8, ptr %9, i64 35 + %28 = load i8, ptr %26, align 1, !tbaa !47 + %29 = zext i8 %28 to i64 + %30 = add nuw nsw i64 %29, 2 %gepdiff = add nsw i64 %10, -35 - %.not37 = icmp ugt i64 %31, %gepdiff - br i1 %.not37, label %32, label %33 + %.not37 = icmp ugt i64 %30, %gepdiff + br i1 %.not37, label %31, label %32 -32: ; preds = %25 +31: ; preds = %24 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1332, ptr noundef nonnull @.str.11, ptr noundef nonnull @__func__.ssl_tls13_parse_client_hello) #9 call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 50, i32 noundef -29440) #9 br label %ssl_tls13_parse_client_hello.exit.thread -33: ; preds = %25 - %34 = getelementptr inbounds nuw i8, ptr %28, i64 %30 - %.0.copyload.i.i = load i16, ptr %34, align 1 - %35 = call i16 @llvm.bswap.i16(i16 %.0.copyload.i.i) - %36 = zext i16 %35 to i64 - %37 = getelementptr inbounds nuw i8, ptr %34, i64 2 - %38 = and i64 %36, 1 - %.not296.i = icmp eq i64 %38, 0 - br i1 %.not296.i, label %40, label %39 - -39: ; preds = %33 +32: ; preds = %24 + %33 = getelementptr inbounds nuw i8, ptr %27, i64 %29 + %.0.copyload.i.i = load i16, ptr %33, align 1 + %34 = call i16 @llvm.bswap.i16(i16 %.0.copyload.i.i) + %35 = zext i16 %34 to i64 + %36 = getelementptr inbounds nuw i8, ptr %33, i64 2 + %37 = and i64 %35, 1 + %.not296.i = icmp eq i64 %37, 0 + br i1 %.not296.i, label %39, label %38 + +38: ; preds = %32 call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 50, i32 noundef -29440) #9 br label %ssl_tls13_parse_client_hello.exit.thread -40: ; preds = %33 - %41 = icmp ule ptr %37, %11 - %.neg39 = add i64 %10, -37 - %gepdiff38 = sub i64 %.neg39, %30 - %42 = icmp ugt i64 %gepdiff38, %36 - %narrow.i327.not.i = and i1 %41, %42 - br i1 %narrow.i327.not.i, label %44, label %43 +39: ; preds = %32 + %40 = icmp ule ptr %36, %11 + %.neg41 = add i64 %10, -37 + %gepdiff38 = sub i64 %.neg41, %29 + %41 = icmp ugt i64 %gepdiff38, %35 + %narrow.i327.not.i = and i1 %40, %41 + br i1 %narrow.i327.not.i, label %43, label %42 -43: ; preds = %40 +42: ; preds = %39 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1360, ptr noundef nonnull @.str.11, ptr noundef nonnull @__func__.ssl_tls13_parse_client_hello) #9 call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 50, i32 noundef -29440) #9 br label %ssl_tls13_parse_client_hello.exit.thread -44: ; preds = %40 - %45 = getelementptr inbounds nuw i8, ptr %37, i64 %36 - %46 = getelementptr inbounds nuw i8, ptr %45, i64 1 - %47 = load i8, ptr %45, align 1, !tbaa !47 - %48 = zext i8 %47 to i64 - %49 = add nuw nsw i64 %48, 2 - %50 = icmp ule ptr %46, %11 +43: ; preds = %39 + %44 = getelementptr inbounds nuw i8, ptr %36, i64 %35 + %45 = getelementptr inbounds nuw i8, ptr %44, i64 1 + %46 = load i8, ptr %44, align 1, !tbaa !47 + %47 = zext i8 %46 to i64 + %48 = add nuw nsw i64 %47, 2 + %49 = icmp ule ptr %45, %11 %51 = ptrtoint ptr %46 to i64 %52 = sub i64 %14, %51 %53 = icmp ule i64 %49, %52 - %narrow.i328.not.i = and i1 %50, %53 + %narrow.i328.not.i = and i1 %48, %53 br i1 %narrow.i328.not.i, label %55, label %54 54: ; preds = %44 @@ -461,96 +461,96 @@ define internal fastcc i32 @ssl_tls13_process_client_hello(ptr noundef %0) unnam call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 50, i32 noundef -29440) #9 br label %ssl_tls13_parse_client_hello.exit.thread -55: ; preds = %44 - %56 = getelementptr inbounds nuw i8, ptr %46, i64 %48 - %57 = call i32 @mbedtls_ssl_tls13_is_supported_versions_ext_present_in_exts(ptr noundef nonnull %0, ptr noundef nonnull %56, ptr noundef nonnull %11, ptr noundef nonnull %2, ptr noundef nonnull %3) #9 - %58 = icmp slt i32 %57, 0 - br i1 %58, label %59, label %60 +53: ; preds = %43 + %54 = getelementptr inbounds nuw i8, ptr %45, i64 %47 + %55 = call i32 @mbedtls_ssl_tls13_is_supported_versions_ext_present_in_exts(ptr noundef nonnull %0, ptr noundef nonnull %54, ptr noundef nonnull %11, ptr noundef nonnull %2, ptr noundef nonnull %3) #9 + %56 = icmp slt i32 %55, 0 + br i1 %56, label %57, label %58 -59: ; preds = %55 - call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1378, ptr noundef nonnull @.str.13, i32 noundef %57) #9 +57: ; preds = %53 + call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1378, ptr noundef nonnull @.str.13, i32 noundef %55) #9 br label %ssl_tls13_parse_client_hello.exit.thread -60: ; preds = %55 - switch i32 %57, label %69 [ +58: ; preds = %53 + switch i32 %55, label %69 [ i32 0, label %ssl_tls13_parse_client_hello.exit.thread31 - i32 1, label %61 + i32 1, label %59 ] -61: ; preds = %60 - %62 = load ptr, ptr %2, align 8, !tbaa !38 - %63 = load ptr, ptr %3, align 8, !tbaa !38 - %64 = call fastcc i32 @ssl_tls13_parse_supported_versions_ext(ptr noundef nonnull %0, ptr noundef %62, ptr noundef %63) - %65 = icmp slt i32 %64, 0 - br i1 %65, label %66, label %67 +59: ; preds = %58 + %60 = load ptr, ptr %2, align 8, !tbaa !38 + %61 = load ptr, ptr %3, align 8, !tbaa !38 + %62 = call fastcc i32 @ssl_tls13_parse_supported_versions_ext(ptr noundef nonnull %0, ptr noundef %60, ptr noundef %61) + %63 = icmp slt i32 %62, 0 + br i1 %63, label %64, label %65 -66: ; preds = %61 - call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1392, ptr noundef nonnull @.str.14, i32 noundef %64) #9 +64: ; preds = %59 + call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1392, ptr noundef nonnull @.str.14, i32 noundef %62) #9 br label %ssl_tls13_parse_client_hello.exit.thread -67: ; preds = %61 - %68 = icmp eq i32 %64, 771 - br i1 %68, label %ssl_tls13_parse_client_hello.exit.thread31, label %69 - -69: ; preds = %67, %60 - %70 = getelementptr inbounds nuw i8, ptr %0, i64 20 - store i32 772, ptr %70, align 4, !tbaa !48 - %71 = getelementptr inbounds nuw i8, ptr %0, i64 104 - %72 = load ptr, ptr %71, align 8, !tbaa !17 - %73 = getelementptr inbounds nuw i8, ptr %72, i64 4 - store i32 772, ptr %73, align 4, !tbaa !49 - %74 = load ptr, ptr %0, align 8, !tbaa !40 - %75 = getelementptr inbounds nuw i8, ptr %74, i64 8 - %76 = load i8, ptr %75, align 8, !tbaa !50 - %77 = getelementptr inbounds nuw i8, ptr %72, i64 2 - store i8 %76, ptr %77, align 2, !tbaa !51 - %78 = call i32 @mbedtls_ssl_tls13_crypto_init(ptr noundef nonnull %0) #9 - %.not299.i = icmp eq i32 %78, 0 - br i1 %.not299.i, label %79, label %ssl_tls13_parse_client_hello.exit - -79: ; preds = %69 - call void @mbedtls_debug_print_buf(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 1427, ptr noundef nonnull @.str.15, ptr noundef nonnull %26, i64 noundef 32) #9 - %80 = getelementptr inbounds nuw i8, ptr %13, i64 2120 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %80, ptr noundef nonnull align 1 dereferenceable(32) %26, i64 32, i1 false) - %81 = icmp ugt i8 %29, 32 - br i1 %81, label %82, label %83 - -82: ; preds = %79 +65: ; preds = %59 + %66 = icmp eq i32 %62, 771 + br i1 %66, label %ssl_tls13_parse_client_hello.exit.thread31, label %67 + +67: ; preds = %65, %58 + %68 = getelementptr inbounds nuw i8, ptr %0, i64 20 + store i32 772, ptr %68, align 4, !tbaa !48 + %69 = getelementptr inbounds nuw i8, ptr %0, i64 104 + %70 = load ptr, ptr %69, align 8, !tbaa !17 + %71 = getelementptr inbounds nuw i8, ptr %70, i64 4 + store i32 772, ptr %71, align 4, !tbaa !49 + %72 = load ptr, ptr %0, align 8, !tbaa !40 + %73 = getelementptr inbounds nuw i8, ptr %72, i64 8 + %74 = load i8, ptr %73, align 8, !tbaa !50 + %75 = getelementptr inbounds nuw i8, ptr %70, i64 2 + store i8 %74, ptr %75, align 2, !tbaa !51 + %76 = call i32 @mbedtls_ssl_tls13_crypto_init(ptr noundef nonnull %0) #9 + %.not299.i = icmp eq i32 %76, 0 + br i1 %.not299.i, label %77, label %ssl_tls13_parse_client_hello.exit + +77: ; preds = %67 + call void @mbedtls_debug_print_buf(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 1427, ptr noundef nonnull @.str.15, ptr noundef nonnull %25, i64 noundef 32) #9 + %78 = getelementptr inbounds nuw i8, ptr %13, i64 2120 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %78, ptr noundef nonnull align 1 dereferenceable(32) %25, i64 32, i1 false) + %79 = icmp ugt i8 %28, 32 + br i1 %79, label %80, label %81 + +80: ; preds = %77 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1431, ptr noundef nonnull @.str.16) #9 br label %ssl_tls13_parse_client_hello.exit.thread -83: ; preds = %79 - %84 = load ptr, ptr %71, align 8, !tbaa !17 - %85 = getelementptr inbounds nuw i8, ptr %84, i64 24 - store i64 %30, ptr %85, align 8, !tbaa !52 - call void @mbedtls_debug_print_buf(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 1436, ptr noundef nonnull @.str.17, ptr noundef nonnull %28, i64 noundef %30) #9 - %86 = load ptr, ptr %71, align 8, !tbaa !17 - %87 = getelementptr inbounds nuw i8, ptr %86, i64 32 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %87, ptr nonnull align 1 %28, i64 %30, i1 false) - call void @mbedtls_debug_print_buf(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 1444, ptr noundef nonnull @.str.18, ptr noundef nonnull %37, i64 noundef %36) #9 - %88 = getelementptr inbounds nuw i8, ptr %13, i64 16 - call fastcc void @ssl_tls13_select_ciphersuite(ptr noundef nonnull %0, ptr noundef nonnull %37, ptr noundef nonnull %45, i32 noundef 0, i32 noundef 0, ptr noundef nonnull %88) - %89 = load ptr, ptr %88, align 8, !tbaa !53 - %90 = icmp eq ptr %89, null - br i1 %90, label %91, label %92 - -91: ; preds = %83 +81: ; preds = %77 + %82 = load ptr, ptr %69, align 8, !tbaa !17 + %83 = getelementptr inbounds nuw i8, ptr %82, i64 24 + store i64 %29, ptr %83, align 8, !tbaa !52 + call void @mbedtls_debug_print_buf(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 1436, ptr noundef nonnull @.str.17, ptr noundef nonnull %27, i64 noundef %29) #9 + %84 = load ptr, ptr %69, align 8, !tbaa !17 + %85 = getelementptr inbounds nuw i8, ptr %84, i64 32 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %85, ptr nonnull align 1 %27, i64 %29, i1 false) + call void @mbedtls_debug_print_buf(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 1444, ptr noundef nonnull @.str.18, ptr noundef nonnull %36, i64 noundef %35) #9 + %86 = getelementptr inbounds nuw i8, ptr %13, i64 16 + call fastcc void @ssl_tls13_select_ciphersuite(ptr noundef nonnull %0, ptr noundef nonnull %36, ptr noundef nonnull %44, i32 noundef 0, i32 noundef 0, ptr noundef nonnull %86) + %87 = load ptr, ptr %86, align 8, !tbaa !53 + %88 = icmp eq ptr %87, null + br i1 %88, label %89, label %90 + +89: ; preds = %81 call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 40, i32 noundef -28160) #9 br label %ssl_tls13_parse_client_hello.exit.thread -92: ; preds = %83 - %93 = load i32, ptr %89, align 8, !tbaa !54 - %94 = load ptr, ptr %71, align 8, !tbaa !17 - %95 = getelementptr inbounds nuw i8, ptr %94, i64 16 - store i32 %93, ptr %95, align 8, !tbaa !56 - %96 = getelementptr inbounds nuw i8, ptr %89, i64 8 - %97 = load ptr, ptr %96, align 8, !tbaa !57 - call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 2, ptr noundef nonnull @.str, i32 noundef 1458, ptr noundef nonnull @.str.19, i32 noundef %93, ptr noundef %97) #9 +90: ; preds = %81 + %91 = load i32, ptr %87, align 8, !tbaa !54 + %92 = load ptr, ptr %69, align 8, !tbaa !17 + %93 = getelementptr inbounds nuw i8, ptr %92, i64 16 + store i32 %91, ptr %93, align 8, !tbaa !56 + %94 = getelementptr inbounds nuw i8, ptr %87, i64 8 + %95 = load ptr, ptr %94, align 8, !tbaa !57 + call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 2, ptr noundef nonnull @.str, i32 noundef 1458, ptr noundef nonnull @.str.19, i32 noundef %91, ptr noundef %95) #9 %98 = load i8, ptr %45, align 1, !tbaa !47 - %.not300.i = icmp eq i8 %98, 1 - br i1 %.not300.i, label %99, label %101 + %.not301.i = icmp eq i8 %98, 1 + br i1 %.not301.i, label %99, label %101 -99: ; preds = %92 +99: ; preds = %90 %100 = load i8, ptr %46, align 1, !tbaa !47 %.not301.i = icmp eq i8 %100, 0 br i1 %.not301.i, label %102, label %101 @@ -560,206 +560,206 @@ define internal fastcc i32 @ssl_tls13_process_client_hello(ptr noundef %0) unnam call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 47, i32 noundef -26112) #9 br label %ssl_tls13_parse_client_hello.exit.thread -102: ; preds = %99 - %103 = getelementptr inbounds nuw i8, ptr %45, i64 2 - %.0.copyload.i323.i = load i16, ptr %103, align 1 - %104 = call i16 @llvm.bswap.i16(i16 %.0.copyload.i323.i) - %105 = zext i16 %104 to i64 - %.ptr.i = getelementptr inbounds nuw i8, ptr %45, i64 4 - %106 = icmp ule ptr %.ptr.i, %11 +100: ; preds = %99 + %101 = getelementptr inbounds nuw i8, ptr %44, i64 2 + %.0.copyload.i323.i = load i16, ptr %101, align 1 + %102 = call i16 @llvm.bswap.i16(i16 %.0.copyload.i323.i) + %103 = zext i16 %102 to i64 + %.ptr.i = getelementptr inbounds nuw i8, ptr %44, i64 4 + %104 = icmp ule ptr %.ptr.i, %11 %107 = ptrtoint ptr %.ptr.i to i64 - %108 = sub i64 %14, %107 - %109 = icmp uge i64 %108, %105 - %narrow.i329.not.i = and i1 %106, %109 - br i1 %narrow.i329.not.i, label %111, label %110 + %gepdiff40 = sub i64 %14, %107 + %105 = icmp uge i64 %gepdiff40, %103 + %narrow.i329.not.i = and i1 %104, %105 + br i1 %narrow.i329.not.i, label %107, label %106 -110: ; preds = %102 +106: ; preds = %100 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1483, ptr noundef nonnull @.str.11, ptr noundef nonnull @__func__.ssl_tls13_parse_client_hello) #9 call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 50, i32 noundef -29440) #9 br label %ssl_tls13_parse_client_hello.exit.thread -111: ; preds = %102 - %112 = getelementptr inbounds nuw i8, ptr %45, i64 %105 - %.ptr418.i = getelementptr inbounds nuw i8, ptr %112, i64 4 - call void @mbedtls_debug_print_buf(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 1486, ptr noundef nonnull @.str.21, ptr noundef nonnull %.ptr.i, i64 noundef %105) #9 - %113 = getelementptr inbounds nuw i8, ptr %13, i64 3276 - store i32 0, ptr %113, align 4, !tbaa !58 +107: ; preds = %100 + %108 = getelementptr inbounds nuw i8, ptr %44, i64 %103 + %.ptr418.i = getelementptr inbounds nuw i8, ptr %108, i64 4 + call void @mbedtls_debug_print_buf(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 1486, ptr noundef nonnull @.str.21, ptr noundef nonnull %.ptr.i, i64 noundef %103) #9 + %109 = getelementptr inbounds nuw i8, ptr %13, i64 3276 + store i32 0, ptr %109, align 4, !tbaa !58 %.not419.i = icmp eq i16 %.0.copyload.i323.i, 0 br i1 %.not419.i, label %._crit_edge.i, label %.lr.ph.i -.lr.ph.i: ; preds = %111 - %114 = ptrtoint ptr %.ptr418.i to i64 - br label %115 +.lr.ph.i: ; preds = %107 + %110 = ptrtoint ptr %.ptr418.i to i64 + br label %111 -115: ; preds = %170, %.lr.ph.i - %.0261414.i = phi ptr [ %.ptr.i, %.lr.ph.i ], [ %140, %170 ] +111: ; preds = %166, %.lr.ph.i + %.0261414.i = phi ptr [ %.ptr.i, %.lr.ph.i ], [ %139, %170 ] %.0264413.i = phi ptr [ null, %.lr.ph.i ], [ %.1265.i, %170 ] %.0267412.i = phi ptr [ null, %.lr.ph.i ], [ %.1268.i, %170 ] %.0271411.i = phi i32 [ 0, %.lr.ph.i ], [ %.1272.i, %170 ] - %116 = load ptr, ptr %12, align 8, !tbaa !16 - %117 = getelementptr inbounds nuw i8, ptr %116, i64 57 - %118 = load i8, ptr %117, align 1, !tbaa !59 - %.not313.i = icmp eq i8 %118, 0 + %112 = load ptr, ptr %12, align 8, !tbaa !16 + %113 = getelementptr inbounds nuw i8, ptr %112, i64 57 + %114 = load i8, ptr %113, align 1, !tbaa !59 + %.not313.i = icmp eq i8 %114, 0 %spec.select.i = select i1 %.not313.i, i32 536346623, i32 536330239 - %119 = load i32, ptr %113, align 4, !tbaa !58 - %120 = and i32 %119, 8192 - %.not314.i = icmp eq i32 %120, 0 - br i1 %.not314.i, label %122, label %121 + %115 = load i32, ptr %109, align 4, !tbaa !58 + %116 = and i32 %115, 8192 + %.not314.i = icmp eq i32 %116, 0 + br i1 %.not314.i, label %118, label %117 -121: ; preds = %115 +117: ; preds = %111 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 1509, ptr noundef nonnull @.str.22) #9 call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 47, i32 noundef -26112) #9 br label %ssl_tls13_parse_client_hello.exit.thread -122: ; preds = %115 - %123 = ptrtoint ptr %.0261414.i to i64 - %124 = sub i64 %114, %123 - %125 = icmp ugt i64 %124, 3 - br i1 %125, label %127, label %126 +118: ; preds = %111 + %119 = ptrtoint ptr %.0261414.i to i64 + %120 = sub i64 %110, %119 + %121 = icmp ugt i64 %120, 3 + br i1 %121, label %123, label %122 -126: ; preds = %122 +122: ; preds = %118 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1516, ptr noundef nonnull @.str.11, ptr noundef nonnull @__func__.ssl_tls13_parse_client_hello) #9 call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 50, i32 noundef -29440) #9 br label %ssl_tls13_parse_client_hello.exit.thread -127: ; preds = %122 +123: ; preds = %118 %.0.copyload.i324.i = load i16, ptr %.0261414.i, align 1 - %128 = call i16 @llvm.bswap.i16(i16 %.0.copyload.i324.i) - %129 = zext i16 %128 to i32 - %130 = getelementptr inbounds nuw i8, ptr %.0261414.i, i64 2 - %.0.copyload.i325.i = load i16, ptr %130, align 1 - %131 = call i16 @llvm.bswap.i16(i16 %.0.copyload.i325.i) - %132 = zext i16 %131 to i64 - %133 = getelementptr inbounds nuw i8, ptr %.0261414.i, i64 4 - %134 = icmp ule ptr %.0261414.i, %112 - %135 = ptrtoint ptr %133 to i64 - %136 = sub i64 %114, %135 - %137 = icmp uge i64 %136, %132 - %narrow.i331.not.i = and i1 %134, %137 - br i1 %narrow.i331.not.i, label %139, label %138 - -138: ; preds = %127 + %124 = call i16 @llvm.bswap.i16(i16 %.0.copyload.i324.i) + %125 = zext i16 %124 to i32 + %126 = getelementptr inbounds nuw i8, ptr %.0261414.i, i64 2 + %.0.copyload.i325.i = load i16, ptr %126, align 1 + %127 = call i16 @llvm.bswap.i16(i16 %.0.copyload.i325.i) + %128 = zext i16 %127 to i64 + %129 = getelementptr inbounds nuw i8, ptr %.0261414.i, i64 4 + %130 = icmp ule ptr %.0261414.i, %108 + %131 = ptrtoint ptr %129 to i64 + %132 = sub i64 %110, %131 + %133 = icmp uge i64 %132, %128 + %narrow.i331.not.i = and i1 %130, %133 + br i1 %narrow.i331.not.i, label %135, label %134 + +134: ; preds = %123 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1521, ptr noundef nonnull @.str.11, ptr noundef nonnull @__func__.ssl_tls13_parse_client_hello) #9 call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 50, i32 noundef -29440) #9 br label %ssl_tls13_parse_client_hello.exit.thread -139: ; preds = %127 - %140 = getelementptr inbounds nuw i8, ptr %133, i64 %132 - %141 = call i32 @mbedtls_ssl_tls13_check_received_extension(ptr noundef nonnull %0, i32 noundef 1, i32 noundef %129, i32 noundef %spec.select.i) #9 - %.not317.i = icmp eq i32 %141, 0 - br i1 %.not317.i, label %142, label %ssl_tls13_parse_client_hello.exit - -142: ; preds = %139 - switch i16 %128, label %169 [ - i16 0, label %143 - i16 10, label %146 - i16 51, label %149 - i16 43, label %170 - i16 45, label %155 - i16 41, label %158 - i16 16, label %163 - i16 13, label %166 +135: ; preds = %123 + %136 = getelementptr inbounds nuw i8, ptr %132, i64 %128 + %137 = call i32 @mbedtls_ssl_tls13_check_received_extension(ptr noundef nonnull %0, i32 noundef 1, i32 noundef %125, i32 noundef %spec.select.i) #9 + %.not317.i = icmp eq i32 %137, 0 + br i1 %.not317.i, label %138, label %ssl_tls13_parse_client_hello.exit + +138: ; preds = %135 + switch i16 %124, label %169 [ + i16 0, label %139 + i16 10, label %142 + i16 51, label %145 + i16 43, label %166 + i16 45, label %151 + i16 41, label %154 + i16 16, label %159 + i16 13, label %162 ] -143: ; preds = %142 +139: ; preds = %138 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 1534, ptr noundef nonnull @.str.23) #9 - %144 = call i32 @mbedtls_ssl_parse_server_name_ext(ptr noundef nonnull %0, ptr noundef nonnull %133, ptr noundef nonnull %140) #9 - %.not322.i = icmp eq i32 %144, 0 - br i1 %.not322.i, label %170, label %145 + %140 = call i32 @mbedtls_ssl_parse_server_name_ext(ptr noundef nonnull %0, ptr noundef nonnull %132, ptr noundef nonnull %139) #9 + %.not322.i = icmp eq i32 %140, 0 + br i1 %.not322.i, label %166, label %141 -145: ; preds = %143 - call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1539, ptr noundef nonnull @.str.24, i32 noundef %144) #9 +141: ; preds = %139 + call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1539, ptr noundef nonnull @.str.24, i32 noundef %140) #9 br label %ssl_tls13_parse_client_hello.exit -146: ; preds = %142 +142: ; preds = %138 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 1547, ptr noundef nonnull @.str.25) #9 - %147 = call fastcc i32 @ssl_tls13_parse_supported_groups_ext(ptr noundef nonnull %0, ptr noundef nonnull %133, ptr noundef nonnull %140) - %.not321.i = icmp eq i32 %147, 0 - br i1 %.not321.i, label %170, label %148 + %143 = call fastcc i32 @ssl_tls13_parse_supported_groups_ext(ptr noundef nonnull %0, ptr noundef nonnull %132, ptr noundef nonnull %139) + %.not321.i = icmp eq i32 %143, 0 + br i1 %.not321.i, label %166, label %144 -148: ; preds = %146 - call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1559, ptr noundef nonnull @.str.26, i32 noundef %147) #9 +144: ; preds = %142 + call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1559, ptr noundef nonnull @.str.26, i32 noundef %143) #9 br label %ssl_tls13_parse_client_hello.exit.thread -149: ; preds = %142 +145: ; preds = %138 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 1568, ptr noundef nonnull @.str.27) #9 - %150 = call fastcc i32 @ssl_tls13_parse_key_shares_ext(ptr noundef nonnull %0, ptr noundef nonnull %133, ptr noundef nonnull %140) - %151 = icmp eq i32 %150, 1 - br i1 %151, label %.thread.i, label %152 + %146 = call fastcc i32 @ssl_tls13_parse_key_shares_ext(ptr noundef nonnull %0, ptr noundef nonnull %132, ptr noundef nonnull %139) + %147 = icmp eq i32 %146, 1 + br i1 %147, label %.thread.i, label %148 -.thread.i: ; preds = %149 +.thread.i: ; preds = %145 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 2, ptr noundef nonnull @.str, i32 noundef 1580, ptr noundef nonnull @.str.28) #9 - br label %170 + br label %166 -152: ; preds = %149 - %153 = icmp slt i32 %150, 0 - br i1 %153, label %154, label %170 +148: ; preds = %145 + %149 = icmp slt i32 %146, 0 + br i1 %149, label %150, label %166 -154: ; preds = %152 - call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1586, ptr noundef nonnull @.str.29, i32 noundef %150) #9 +150: ; preds = %148 + call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1586, ptr noundef nonnull @.str.29, i32 noundef %146) #9 br label %ssl_tls13_parse_client_hello.exit.thread -155: ; preds = %142 +151: ; preds = %138 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 1600, ptr noundef nonnull @.str.30) #9 - %156 = call fastcc i32 @ssl_tls13_parse_key_exchange_modes_ext(ptr noundef nonnull %0, ptr noundef nonnull %133, ptr noundef nonnull %140) - %.not320.i = icmp eq i32 %156, 0 - br i1 %.not320.i, label %170, label %157 + %152 = call fastcc i32 @ssl_tls13_parse_key_exchange_modes_ext(ptr noundef nonnull %0, ptr noundef nonnull %132, ptr noundef nonnull %139) + %.not320.i = icmp eq i32 %152, 0 + br i1 %.not320.i, label %166, label %153 -157: ; preds = %155 - call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1606, ptr noundef nonnull @.str.31, i32 noundef %156) #9 +153: ; preds = %151 + call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1606, ptr noundef nonnull @.str.31, i32 noundef %152) #9 br label %ssl_tls13_parse_client_hello.exit.thread -158: ; preds = %142 +154: ; preds = %138 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 1614, ptr noundef nonnull @.str.32) #9 - %159 = load i32, ptr %113, align 4, !tbaa !58 - %160 = and i32 %159, 131072 - %161 = icmp eq i32 %160, 0 - br i1 %161, label %162, label %170 + %155 = load i32, ptr %109, align 4, !tbaa !58 + %156 = and i32 %155, 131072 + %157 = icmp eq i32 %156, 0 + br i1 %157, label %158, label %166 -162: ; preds = %158 +158: ; preds = %154 call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 47, i32 noundef -26112) #9 br label %ssl_tls13_parse_client_hello.exit.thread -163: ; preds = %142 +159: ; preds = %138 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 1634, ptr noundef nonnull @.str.33) #9 - %164 = call i32 @mbedtls_ssl_parse_alpn_ext(ptr noundef nonnull %0, ptr noundef nonnull %133, ptr noundef nonnull %140) #9 - %.not319.i = icmp eq i32 %164, 0 - br i1 %.not319.i, label %170, label %165 + %160 = call i32 @mbedtls_ssl_parse_alpn_ext(ptr noundef nonnull %0, ptr noundef nonnull %132, ptr noundef nonnull %139) #9 + %.not319.i = icmp eq i32 %160, 0 + br i1 %.not319.i, label %166, label %161 -165: ; preds = %163 - call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1639, ptr noundef nonnull @.str.34, i32 noundef %164) #9 +161: ; preds = %159 + call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1639, ptr noundef nonnull @.str.34, i32 noundef %160) #9 br label %ssl_tls13_parse_client_hello.exit -166: ; preds = %142 +162: ; preds = %138 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 1647, ptr noundef nonnull @.str.35) #9 - %167 = call i32 @mbedtls_ssl_parse_sig_alg_ext(ptr noundef nonnull %0, ptr noundef nonnull %133, ptr noundef nonnull %140) #9 - %.not318.i = icmp eq i32 %167, 0 - br i1 %.not318.i, label %170, label %168 + %163 = call i32 @mbedtls_ssl_parse_sig_alg_ext(ptr noundef nonnull %0, ptr noundef nonnull %132, ptr noundef nonnull %139) #9 + %.not318.i = icmp eq i32 %163, 0 + br i1 %.not318.i, label %166, label %164 -168: ; preds = %166 - call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1653, ptr noundef nonnull @.str.36, i32 noundef %167) #9 +164: ; preds = %162 + call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1653, ptr noundef nonnull @.str.36, i32 noundef %163) #9 br label %ssl_tls13_parse_client_hello.exit -169: ; preds = %142 - call void @mbedtls_ssl_print_extension(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 1676, i32 noundef 1, i32 noundef %129, ptr noundef nonnull @.str.37, ptr noundef null) #9 - br label %170 +165: ; preds = %138 + call void @mbedtls_ssl_print_extension(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 1676, i32 noundef 1, i32 noundef %125, ptr noundef nonnull @.str.37, ptr noundef null) #9 + br label %166 -170: ; preds = %169, %166, %163, %158, %155, %152, %.thread.i, %146, %143, %142 +166: ; preds = %165, %164, %159, %154, %151, %148, %.thread.i, %142, %139, %138 %.1272.i = phi i32 [ %.0271411.i, %169 ], [ %.0271411.i, %143 ], [ %.0271411.i, %146 ], [ %.0271411.i, %152 ], [ %.0271411.i, %142 ], [ %.0271411.i, %155 ], [ %.0271411.i, %163 ], [ %.0271411.i, %166 ], [ %.0271411.i, %158 ], [ 1, %.thread.i ] %.1268.i = phi ptr [ %.0267412.i, %169 ], [ %.0267412.i, %143 ], [ %.0267412.i, %146 ], [ %.0267412.i, %152 ], [ %.0267412.i, %142 ], [ %.0267412.i, %155 ], [ %.0267412.i, %163 ], [ %.0267412.i, %166 ], [ %133, %158 ], [ %.0267412.i, %.thread.i ] %.1265.i = phi ptr [ %.0264413.i, %169 ], [ %.0264413.i, %143 ], [ %.0264413.i, %146 ], [ %.0264413.i, %152 ], [ %.0264413.i, %142 ], [ %.0264413.i, %155 ], [ %.0264413.i, %163 ], [ %.0264413.i, %166 ], [ %140, %158 ], [ %.0264413.i, %.thread.i ] - %171 = icmp ult ptr %140, %.ptr418.i - br i1 %171, label %115, label %._crit_edge.loopexit.i, !llvm.loop !60 + %167 = icmp ult ptr %139, %.ptr418.i + br i1 %167, label %111, label %._crit_edge.loopexit.i, !llvm.loop !60 -._crit_edge.loopexit.i: ; preds = %170 - %.pre.i = load i32, ptr %113, align 4, !tbaa !58 +._crit_edge.loopexit.i: ; preds = %166 + %.pre.i = load i32, ptr %109, align 4, !tbaa !58 %.pre444.i = ptrtoint ptr %140 to i64 %172 = icmp ne i32 %.1272.i, 0 br label %._crit_edge.i -._crit_edge.i: ; preds = %._crit_edge.loopexit.i, %111 - %.pre-phi.i = phi i64 [ %.pre444.i, %._crit_edge.loopexit.i ], [ %107, %111 ] - %173 = phi i32 [ %.pre.i, %._crit_edge.loopexit.i ], [ 0, %111 ] +._crit_edge.i: ; preds = %._crit_edge.loopexit.i, %107 + %.pre-phi.i.in = phi i64 [ %.pre444.i, %._crit_edge.loopexit.i ], [ %107, %111 ] + %169 = phi i32 [ %.pre.i, %._crit_edge.loopexit.i ], [ 0, %111 ] %.0271.lcssa.i = phi i1 [ %172, %._crit_edge.loopexit.i ], [ false, %111 ] %.0267.lcssa.i = phi ptr [ %.1268.i, %._crit_edge.loopexit.i ], [ null, %111 ] %.0264.lcssa.i = phi ptr [ %.1265.i, %._crit_edge.loopexit.i ], [ null, %111 ] @@ -773,234 +773,234 @@ define internal fastcc i32 @ssl_tls13_process_client_hello(ptr noundef %0) unnam call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1690, ptr noundef nonnull @.str.38, i32 noundef %175) #9 br label %ssl_tls13_parse_client_hello.exit -177: ; preds = %._crit_edge.i - %178 = load i32, ptr %113, align 4, !tbaa !58 - %179 = and i32 %178, 8192 - %.not304.i = icmp eq i32 %179, 0 - %180 = getelementptr inbounds nuw i8, ptr %13, i64 24 - %181 = load ptr, ptr %180, align 8, !tbaa !62 - br i1 %.not304.i, label %190, label %182 - -182: ; preds = %177 - %183 = ptrtoint ptr %.0267.lcssa.i to i64 - %184 = sub i64 %183, %15 - %185 = call i32 %181(ptr noundef nonnull %0, ptr noundef %9, i64 noundef %184) #9 - %.not306.i = icmp eq i32 %185, 0 - br i1 %.not306.i, label %187, label %186 - -186: ; preds = %182 - call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1706, ptr noundef nonnull @.str.39, i32 noundef %185) #9 +173: ; preds = %._crit_edge.i + %174 = load i32, ptr %109, align 4, !tbaa !58 + %175 = and i32 %174, 8192 + %.not304.i = icmp eq i32 %175, 0 + %176 = getelementptr inbounds nuw i8, ptr %13, i64 24 + %177 = load ptr, ptr %176, align 8, !tbaa !62 + br i1 %.not304.i, label %186, label %178 + +178: ; preds = %173 + %179 = ptrtoint ptr %.0267.lcssa.i to i64 + %180 = sub i64 %179, %15 + %181 = call i32 %181(ptr noundef nonnull %0, ptr noundef %9, i64 noundef %180) #9 + %.not306.i = icmp eq i32 %181, 0 + br i1 %.not306.i, label %183, label %182 + +182: ; preds = %178 + call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1706, ptr noundef nonnull @.str.39, i32 noundef %181) #9 br label %ssl_tls13_parse_client_hello.exit -187: ; preds = %182 - %188 = call fastcc i32 @ssl_tls13_parse_pre_shared_key_ext(ptr noundef nonnull %0, ptr noundef %.0267.lcssa.i, ptr noundef %.0264.lcssa.i, ptr noundef nonnull %37, ptr noundef nonnull %45, ptr noundef %4) - switch i32 %188, label %189 [ - i32 0, label %193 +183: ; preds = %178 + %184 = call fastcc i32 @ssl_tls13_parse_pre_shared_key_ext(ptr noundef nonnull %0, ptr noundef %.0267.lcssa.i, ptr noundef %.0264.lcssa.i, ptr noundef nonnull %36, ptr noundef nonnull %44, ptr noundef %4) + switch i32 %184, label %189 [ + i32 0, label %189 i32 -27776, label %..thread341_crit_edge.i ] -..thread341_crit_edge.i: ; preds = %187 +..thread341_crit_edge.i: ; preds = %183 %.phi.trans.insert.i = getelementptr inbounds nuw i8, ptr %4, i64 4 %.pre443.i = load i32, ptr %.phi.trans.insert.i, align 4 br label %.thread341.i -189: ; preds = %187 - call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1719, ptr noundef nonnull @.str.40, i32 noundef %188) #9 +185: ; preds = %183 + call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1719, ptr noundef nonnull @.str.40, i32 noundef %184) #9 br label %ssl_tls13_parse_client_hello.exit -190: ; preds = %177 - %191 = call i32 %181(ptr noundef nonnull %0, ptr noundef %9, i64 noundef %174) #9 - %.not305.i = icmp eq i32 %191, 0 - br i1 %.not305.i, label %.thread341.i, label %192 +186: ; preds = %173 + %187 = call i32 %181(ptr noundef nonnull %0, ptr noundef %9, i64 noundef %174) #9 + %.not305.i = icmp eq i32 %189, 0 + br i1 %.not305.i, label %.thread341.i, label %188 -192: ; preds = %190 - call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1727, ptr noundef nonnull @.str.39, i32 noundef %191) #9 +188: ; preds = %186 + call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1727, ptr noundef nonnull @.str.39, i32 noundef %189) #9 br label %ssl_tls13_parse_client_hello.exit -193: ; preds = %187 - %194 = getelementptr inbounds nuw i8, ptr %4, i64 4 - %195 = load i32, ptr %194, align 4 - %196 = icmp eq i32 %195, 4 - br i1 %196, label %197, label %.thread341.i +189: ; preds = %183 + %190 = getelementptr inbounds nuw i8, ptr %4, i64 4 + %191 = load i32, ptr %190, align 4 + %192 = icmp eq i32 %191, 4 + br i1 %192, label %193, label %.thread341.i -197: ; preds = %193 - %198 = getelementptr inbounds nuw i8, ptr %13, i64 56 - store i8 4, ptr %198, align 8, !tbaa !63 +193: ; preds = %189 + %194 = getelementptr inbounds nuw i8, ptr %13, i64 56 + store i8 4, ptr %194, align 8, !tbaa !63 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 2, ptr noundef nonnull @.str, i32 noundef 1751, ptr noundef nonnull @.str.41) #9 - br label %211 + br label %207 -.thread341.i: ; preds = %193, %190, %..thread341_crit_edge.i - %199 = phi i32 [ %195, %193 ], [ %.pre443.i, %..thread341_crit_edge.i ], [ 0, %190 ] - %200 = phi i1 [ true, %193 ], [ false, %..thread341_crit_edge.i ], [ false, %190 ] +.thread341.i: ; preds = %189, %186, %..thread341_crit_edge.i + %195 = phi i32 [ %191, %193 ], [ %.pre443.i, %..thread341_crit_edge.i ], [ 0, %190 ] + %196 = phi i1 [ true, %193 ], [ false, %..thread341_crit_edge.i ], [ false, %190 ] %.val.i.i = load ptr, ptr %0, align 8, !tbaa !40 - %201 = getelementptr i8, ptr %.val.i.i, i64 32 - %.val.val.i.i = load i32, ptr %201, align 8, !tbaa !64 - %202 = and i32 %.val.val.i.i, 2 - %.not.i.i = icmp eq i32 %202, 0 + %197 = getelementptr i8, ptr %.val.i.i, i64 32 + %.val.val.i.i = load i32, ptr %197, align 8, !tbaa !64 + %198 = and i32 %.val.val.i.i, 2 + %.not.i.i = icmp eq i32 %198, 0 br i1 %.not.i.i, label %ssl_tls13_key_exchange_is_ephemeral_available.exit.thread.i, label %ssl_tls13_key_exchange_is_ephemeral_available.exit.i ssl_tls13_key_exchange_is_ephemeral_available.exit.i: ; preds = %.thread341.i %.val2.i.i = load ptr, ptr %12, align 8, !tbaa !16 - %203 = getelementptr i8, ptr %.val2.i.i, i64 3276 - %.val2.val.i.i = load i32, ptr %203, align 4, !tbaa !58 - %204 = and i32 %.val2.val.i.i, 4194352 - %.not.i = icmp eq i32 %204, 4194352 - br i1 %.not.i, label %205, label %ssl_tls13_key_exchange_is_ephemeral_available.exit.thread.i - -205: ; preds = %ssl_tls13_key_exchange_is_ephemeral_available.exit.i - %206 = getelementptr inbounds nuw i8, ptr %13, i64 56 - store i8 2, ptr %206, align 8, !tbaa !63 + %199 = getelementptr i8, ptr %.val2.i.i, i64 3276 + %.val2.val.i.i = load i32, ptr %199, align 4, !tbaa !58 + %200 = and i32 %.val2.val.i.i, 4194352 + %.not.i = icmp eq i32 %200, 4194352 + br i1 %.not.i, label %201, label %ssl_tls13_key_exchange_is_ephemeral_available.exit.thread.i + +201: ; preds = %ssl_tls13_key_exchange_is_ephemeral_available.exit.i + %202 = getelementptr inbounds nuw i8, ptr %13, i64 56 + store i8 2, ptr %202, align 8, !tbaa !63 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 2, ptr noundef nonnull @.str, i32 noundef 1758, ptr noundef nonnull @.str.42) #9 - br label %211 + br label %207 ssl_tls13_key_exchange_is_ephemeral_available.exit.thread.i: ; preds = %ssl_tls13_key_exchange_is_ephemeral_available.exit.i, %.thread341.i - %207 = icmp eq i32 %199, 1 - %or.cond5.i = select i1 %200, i1 %207, i1 false - br i1 %or.cond5.i, label %208, label %210 + %203 = icmp eq i32 %195, 1 + %or.cond5.i = select i1 %196, i1 %203, i1 false + br i1 %or.cond5.i, label %204, label %206 -208: ; preds = %ssl_tls13_key_exchange_is_ephemeral_available.exit.thread.i - %209 = getelementptr inbounds nuw i8, ptr %13, i64 56 - store i8 1, ptr %209, align 8, !tbaa !63 +204: ; preds = %ssl_tls13_key_exchange_is_ephemeral_available.exit.thread.i + %205 = getelementptr inbounds nuw i8, ptr %13, i64 56 + store i8 1, ptr %205, align 8, !tbaa !63 call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 2, ptr noundef nonnull @.str, i32 noundef 1765, ptr noundef nonnull @.str.43) #9 - br label %211 + br label %207 -210: ; preds = %ssl_tls13_key_exchange_is_ephemeral_available.exit.thread.i +206: ; preds = %ssl_tls13_key_exchange_is_ephemeral_available.exit.thread.i call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1771, ptr noundef nonnull @.str.44) #9 call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 109, i32 noundef -26112) #9 br label %ssl_tls13_parse_client_hello.exit.thread -211: ; preds = %208, %205, %197 - %212 = getelementptr inbounds nuw i8, ptr %13, i64 56 - %213 = load i8, ptr %212, align 8, !tbaa !63 - %214 = and i8 %213, 5 - %.not309.i = icmp eq i8 %214, 0 - br i1 %.not309.i, label %226, label %215 - -215: ; preds = %211 - %216 = getelementptr inbounds nuw i8, ptr %4, i64 8 - %217 = load ptr, ptr %216, align 8, !tbaa !65 - store ptr %217, ptr %88, align 8, !tbaa !53 - %218 = load i32, ptr %217, align 8, !tbaa !54 - %219 = load ptr, ptr %71, align 8, !tbaa !17 - %220 = getelementptr inbounds nuw i8, ptr %219, i64 16 - store i32 %218, ptr %220, align 8, !tbaa !56 - %221 = getelementptr inbounds nuw i8, ptr %217, i64 8 - %222 = load ptr, ptr %221, align 8, !tbaa !57 - call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 2, ptr noundef nonnull @.str, i32 noundef 1785, ptr noundef nonnull @.str.45, i32 noundef %218, ptr noundef %222) #9 - %223 = load i32, ptr %4, align 8, !tbaa !67 - %224 = icmp eq i32 %223, 1 - br i1 %224, label %225, label %226 - -225: ; preds = %215 +207: ; preds = %204, %201, %193 + %208 = getelementptr inbounds nuw i8, ptr %13, i64 56 + %209 = load i8, ptr %208, align 8, !tbaa !63 + %210 = and i8 %209, 5 + %.not309.i = icmp eq i8 %210, 0 + br i1 %.not309.i, label %222, label %211 + +211: ; preds = %207 + %212 = getelementptr inbounds nuw i8, ptr %4, i64 8 + %213 = load ptr, ptr %212, align 8, !tbaa !65 + store ptr %213, ptr %86, align 8, !tbaa !53 + %214 = load i32, ptr %213, align 8, !tbaa !54 + %215 = load ptr, ptr %69, align 8, !tbaa !17 + %216 = getelementptr inbounds nuw i8, ptr %215, i64 16 + store i32 %214, ptr %216, align 8, !tbaa !56 + %217 = getelementptr inbounds nuw i8, ptr %213, i64 8 + %218 = load ptr, ptr %217, align 8, !tbaa !57 + call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 2, ptr noundef nonnull @.str, i32 noundef 1785, ptr noundef nonnull @.str.45, i32 noundef %217, ptr noundef %218) #9 + %219 = load i32, ptr %4, align 8, !tbaa !67 + %220 = icmp eq i32 %219, 1 + br i1 %220, label %221, label %222 + +221: ; preds = %211 store i8 1, ptr %13, align 8, !tbaa !68 - br label %226 + br label %222 -226: ; preds = %225, %215, %211 - %227 = load i8, ptr %212, align 8, !tbaa !63 - %.not310.i = icmp ne i8 %227, 1 +222: ; preds = %221, %211, %207 + %223 = load i8, ptr %208, align 8, !tbaa !63 + %.not310.i = icmp ne i8 %223, 1 %narrow.i = select i1 %.not310.i, i1 %.0271.lcssa.i, i1 false %.0274.i = zext i1 %narrow.i to i32 - %228 = load ptr, ptr %88, align 8, !tbaa !53 - call void @mbedtls_ssl_optimize_checksum(ptr noundef nonnull %0, ptr noundef %228) #9 + %224 = load ptr, ptr %86, align 8, !tbaa !53 + call void @mbedtls_ssl_optimize_checksum(ptr noundef nonnull %0, ptr noundef %224) #9 br label %ssl_tls13_parse_client_hello.exit.thread31 -ssl_tls13_parse_client_hello.exit.thread: ; preds = %17, %24, %32, %39, %43, %54, %59, %66, %82, %91, %101, %110, %210, %162, %157, %154, %148, %138, %126, %121 - %.0260.i.ph = phi i32 [ -26112, %121 ], [ -29440, %126 ], [ -29440, %138 ], [ %147, %148 ], [ %150, %154 ], [ %156, %157 ], [ -26112, %162 ], [ -26112, %210 ], [ -29440, %110 ], [ -26112, %101 ], [ -28160, %91 ], [ -29440, %82 ], [ %64, %66 ], [ %57, %59 ], [ -29440, %54 ], [ -29440, %43 ], [ -29440, %39 ], [ -29440, %32 ], [ -28288, %24 ], [ -29440, %17 ] +ssl_tls13_parse_client_hello.exit.thread: ; preds = %16, %23, %31, %38, %42, %54, %57, %64, %80, %89, %101, %106, %206, %158, %153, %150, %144, %134, %122, %117 + %.0260.i.ph = phi i32 [ -26112, %121 ], [ -29440, %126 ], [ -29440, %138 ], [ %143, %148 ], [ %150, %154 ], [ %156, %157 ], [ -26112, %162 ], [ -26112, %210 ], [ -29440, %110 ], [ -26112, %101 ], [ -28160, %91 ], [ -29440, %82 ], [ %64, %66 ], [ %57, %59 ], [ -29440, %54 ], [ -29440, %43 ], [ -29440, %39 ], [ -29440, %32 ], [ -28288, %24 ], [ -29440, %17 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #9 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #9 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #9 br label %ssl_tls13_postprocess_client_hello.exit.thread -ssl_tls13_parse_client_hello.exit.thread31: ; preds = %226, %60, %67 +ssl_tls13_parse_client_hello.exit.thread31: ; preds = %222, %58, %65 %.0260.i.ph30 = phi i32 [ 2, %67 ], [ 2, %60 ], [ %.0274.i, %226 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #9 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #9 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #9 - br label %230 + br label %226 -ssl_tls13_parse_client_hello.exit: ; preds = %139, %69, %145, %165, %168, %176, %186, %189, %192 - %.0260.i = phi i32 [ %175, %176 ], [ %185, %186 ], [ %188, %189 ], [ %191, %192 ], [ %78, %69 ], [ %167, %168 ], [ %164, %165 ], [ %144, %145 ], [ %141, %139 ] +ssl_tls13_parse_client_hello.exit: ; preds = %135, %67, %141, %161, %164, %176, %182, %185, %188 + %.0260.i = phi i32 [ %175, %176 ], [ %181, %186 ], [ %184, %189 ], [ %189, %192 ], [ %76, %69 ], [ %163, %168 ], [ %160, %165 ], [ %140, %145 ], [ %137, %139 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #9 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #9 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #9 - %229 = icmp slt i32 %.0260.i, 0 - br i1 %229, label %ssl_tls13_postprocess_client_hello.exit.thread, label %230 + %225 = icmp slt i32 %.0260.i, 0 + br i1 %225, label %ssl_tls13_postprocess_client_hello.exit.thread, label %226 -230: ; preds = %ssl_tls13_parse_client_hello.exit.thread31, %ssl_tls13_parse_client_hello.exit +226: ; preds = %ssl_tls13_parse_client_hello.exit.thread31, %ssl_tls13_parse_client_hello.exit %.0260.i33 = phi i32 [ %.0260.i.ph30, %ssl_tls13_parse_client_hello.exit.thread31 ], [ %.0260.i, %ssl_tls13_parse_client_hello.exit ] - %231 = icmp eq i32 %.0260.i33, 2 - %232 = load ptr, ptr %0, align 8, !tbaa !40 - br i1 %231, label %233, label %242 - -233: ; preds = %230 - %234 = getelementptr inbounds nuw i8, ptr %232, i64 4 - %235 = load i32, ptr %234, align 4, !tbaa !69 - %236 = icmp ult i32 %235, 772 - br i1 %236, label %mbedtls_ssl_conf_is_tls12_enabled.exit, label %mbedtls_ssl_conf_is_tls12_enabled.exit.thread - -mbedtls_ssl_conf_is_tls12_enabled.exit: ; preds = %233 - %237 = load i32, ptr %232, align 8, !tbaa !70 - %238 = icmp ult i32 %237, 771 - br i1 %238, label %mbedtls_ssl_conf_is_tls12_enabled.exit.thread, label %239 - -mbedtls_ssl_conf_is_tls12_enabled.exit.thread: ; preds = %233, %mbedtls_ssl_conf_is_tls12_enabled.exit + %227 = icmp eq i32 %.0260.i33, 2 + %228 = load ptr, ptr %0, align 8, !tbaa !40 + br i1 %227, label %229, label %238 + +232: ; preds = %226 + %230 = getelementptr inbounds nuw i8, ptr %228, i64 4 + %231 = load i32, ptr %230, align 4, !tbaa !69 + %232 = icmp ult i32 %231, 772 + br i1 %232, label %mbedtls_ssl_conf_is_tls12_enabled.exit, label %mbedtls_ssl_conf_is_tls12_enabled.exit.thread + +mbedtls_ssl_conf_is_tls12_enabled.exit: ; preds = %232 + %233 = load i32, ptr %228, align 8, !tbaa !70 + %234 = icmp ult i32 %233, 771 + br i1 %234, label %mbedtls_ssl_conf_is_tls12_enabled.exit.thread, label %235 + +mbedtls_ssl_conf_is_tls12_enabled.exit.thread: ; preds = %232, %mbedtls_ssl_conf_is_tls12_enabled.exit call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1980, ptr noundef nonnull @.str.9) #9 call void @mbedtls_ssl_pend_fatal_alert(ptr noundef nonnull %0, i8 noundef zeroext 70, i32 noundef -28288) #9 - br label %257 - -239: ; preds = %mbedtls_ssl_conf_is_tls12_enabled.exit - %240 = getelementptr inbounds nuw i8, ptr %0, i64 316 - store i32 1, ptr %240, align 4, !tbaa !71 - %241 = getelementptr inbounds nuw i8, ptr %0, i64 20 - store i32 771, ptr %241, align 4, !tbaa !48 - br label %257 - -242: ; preds = %230 - %243 = getelementptr inbounds nuw i8, ptr %232, i64 376 - %244 = load ptr, ptr %243, align 8, !tbaa !72 - %.not.i27 = icmp eq ptr %244, null - br i1 %.not.i27, label %248, label %245 - -245: ; preds = %242 - %246 = call i32 %244(ptr noundef nonnull %0) #9 - %.not16.i = icmp eq i32 %246, 0 - br i1 %.not16.i, label %248, label %247 - -247: ; preds = %245 - call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1901, ptr noundef nonnull @.str.81, i32 noundef %246) #9 + br label %253 + +235: ; preds = %mbedtls_ssl_conf_is_tls12_enabled.exit + %236 = getelementptr inbounds nuw i8, ptr %0, i64 316 + store i32 1, ptr %239, align 4, !tbaa !71 + %237 = getelementptr inbounds nuw i8, ptr %0, i64 20 + store i32 771, ptr %237, align 4, !tbaa !48 + br label %253 + +238: ; preds = %226 + %239 = getelementptr inbounds nuw i8, ptr %228, i64 376 + %240 = load ptr, ptr %239, align 8, !tbaa !72 + %.not.i27 = icmp eq ptr %240, null + br i1 %.not.i27, label %244, label %241 + +241: ; preds = %238 + %242 = call i32 %244(ptr noundef nonnull %0) #9 + %.not16.i = icmp eq i32 %242, 0 + br i1 %.not16.i, label %244, label %243 + +243: ; preds = %241 + call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1901, ptr noundef nonnull @.str.81, i32 noundef %242) #9 br label %ssl_tls13_postprocess_client_hello.exit.thread -248: ; preds = %245, %242 - %249 = load ptr, ptr %12, align 8, !tbaa !16 - %250 = getelementptr inbounds nuw i8, ptr %249, i64 3496 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %250, i8 0, i64 16, i1 false) - %251 = call i32 @mbedtls_ssl_tls13_key_schedule_stage_early(ptr noundef nonnull %0) #9 - %.not17.i = icmp eq i32 %251, 0 - br i1 %.not17.i, label %ssl_tls13_postprocess_client_hello.exit, label %252 +244: ; preds = %241, %238 + %245 = load ptr, ptr %12, align 8, !tbaa !16 + %246 = getelementptr inbounds nuw i8, ptr %245, i64 3496 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %246, i8 0, i64 16, i1 false) + %247 = call i32 @mbedtls_ssl_tls13_key_schedule_stage_early(ptr noundef nonnull %0) #9 + %.not17.i = icmp eq i32 %247, 0 + br i1 %.not17.i, label %ssl_tls13_postprocess_client_hello.exit, label %248 -252: ; preds = %248 - call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1912, ptr noundef nonnull @.str.82, i32 noundef %251) #9 +248: ; preds = %244 + call void @mbedtls_debug_print_ret(ptr noundef nonnull %0, i32 noundef 1, ptr noundef nonnull @.str, i32 noundef 1912, ptr noundef nonnull @.str.82, i32 noundef %247) #9 br label %ssl_tls13_postprocess_client_hello.exit.thread -ssl_tls13_postprocess_client_hello.exit: ; preds = %248 - %253 = icmp eq i32 %.0260.i33, 0 - %254 = getelementptr inbounds nuw i8, ptr %0, i64 8 - br i1 %253, label %255, label %256 +ssl_tls13_postprocess_client_hello.exit: ; preds = %244 + %249 = icmp eq i32 %.0260.i33, 0 + %250 = getelementptr inbounds nuw i8, ptr %0, i64 8 + br i1 %249, label %251, label %252 -255: ; preds = %ssl_tls13_postprocess_client_hello.exit - store i32 2, ptr %254, align 8, !tbaa !3 +251: ; preds = %ssl_tls13_postprocess_client_hello.exit + store i32 2, ptr %250, align 8, !tbaa !3 br label %ssl_tls13_postprocess_client_hello.exit.thread -256: ; preds = %ssl_tls13_postprocess_client_hello.exit - store i32 18, ptr %254, align 8, !tbaa !3 +252: ; preds = %ssl_tls13_postprocess_client_hello.exit + store i32 18, ptr %250, align 8, !tbaa !3 br label %ssl_tls13_postprocess_client_hello.exit.thread -ssl_tls13_postprocess_client_hello.exit.thread: ; preds = %252, %247, %ssl_tls13_parse_client_hello.exit.thread, %255, %256, %ssl_tls13_parse_client_hello.exit, %1 - %.020 = phi i32 [ %7, %1 ], [ %.0260.i, %ssl_tls13_parse_client_hello.exit ], [ 0, %255 ], [ 0, %256 ], [ %.0260.i.ph, %ssl_tls13_parse_client_hello.exit.thread ], [ %251, %252 ], [ %246, %247 ] +ssl_tls13_postprocess_client_hello.exit.thread: ; preds = %248, %243, %ssl_tls13_parse_client_hello.exit.thread, %251, %252, %ssl_tls13_parse_client_hello.exit, %1 + %.020 = phi i32 [ %7, %1 ], [ %.0260.i, %ssl_tls13_parse_client_hello.exit ], [ 0, %255 ], [ 0, %256 ], [ %.0260.i.ph, %ssl_tls13_parse_client_hello.exit.thread ], [ %247, %252 ], [ %242, %247 ] call void (ptr, i32, ptr, i32, ptr, ...) @mbedtls_debug_print_msg(ptr noundef %0, i32 noundef 2, ptr noundef nonnull @.str, i32 noundef 2003, ptr noundef nonnull @.str.10) #9 - br label %257 + br label %253 -257: ; preds = %ssl_tls13_postprocess_client_hello.exit.thread, %239, %mbedtls_ssl_conf_is_tls12_enabled.exit.thread +253: ; preds = %ssl_tls13_postprocess_client_hello.exit.thread, %235, %mbedtls_ssl_conf_is_tls12_enabled.exit.thread %.0 = phi i32 [ %.020, %ssl_tls13_postprocess_client_hello.exit.thread ], [ 0, %239 ], [ -28288, %mbedtls_ssl_conf_is_tls12_enabled.exit.thread ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #9 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #9 diff --git a/bench/linux/optimized/decompress_unlzo.ll b/bench/linux/optimized/decompress_unlzo.ll index e555fe1717b..65630b71b9f 100644 --- a/bench/linux/optimized/decompress_unlzo.ll +++ b/bench/linux/optimized/decompress_unlzo.ll @@ -20,11 +20,11 @@ define dso_local noundef range(i64 0, 2) i64 @parse_header(ptr noundef %0, ptr n %5 = icmp slt i64 %2, 33 br i1 %5, label %.loopexit, label %6 -6: ; preds = %3 +6:; preds = %3 %7 = getelementptr i8, ptr %0, i64 9 br label %8 -8: ; preds = %15, %6 +8:; preds = %15, %6 %9 = phi i64 [ 0, %6 ], [ %17, %15 ] %10 = phi ptr [ %0, %6 ], [ %16, %15 ] %11 = load i8, ptr %10, align 1 @@ -33,13 +33,13 @@ define dso_local noundef range(i64 0, 2) i64 @parse_header(ptr noundef %0, ptr n %14 = icmp eq i8 %11, %13 br i1 %14, label %15, label %.loopexit -15: ; preds = %8 +15:; preds = %8 %16 = getelementptr i8, ptr %10, i64 1 %17 = add nuw nsw i64 %9, 1 %18 = icmp eq i64 %17, 9 br i1 %18, label %19, label %8, !llvm.loop !5 -19: ; preds = %15 +19:; preds = %15 %20 = load i16, ptr %7, align 1 %21 = tail call i16 @llvm.bswap.i16(i16 %20) %22 = icmp ugt i16 %21, 2367 @@ -56,7 +56,7 @@ define dso_local noundef range(i64 0, 2) i64 @parse_header(ptr noundef %0, ptr n %28 = icmp slt i64 %gepdiff, 13 br i1 %28, label %.loopexit, label %29 -29: ; preds = %19 +29:; preds = %19 %30 = select i1 %27, i64 4, i64 8 %31 = getelementptr i8, ptr %24, i64 %30 %32 = ptrtoint ptr %4 to i64 @@ -67,21 +67,21 @@ define dso_local noundef range(i64 0, 2) i64 @parse_header(ptr noundef %0, ptr n %37 = zext i8 %36 to i64 %38 = ptrtoint ptr %35 to i64 %39 = sub i64 %32, %38 - %40 = add nuw nsw i64 %37, 4 - %41 = icmp slt i64 %39, %40 - br i1 %41, label %.loopexit, label %42 + %37 = add nuw nsw i64 %37, 4 + %38 = icmp slt i64 %39, %37 + br i1 %38, label %.loopexit, label %39 -42: ; preds = %29 - %43 = getelementptr i8, ptr %35, i64 %40 +39: ; preds = %29 + %43 = getelementptr i8, ptr %35, i64 %37 %44 = ptrtoint ptr %43 to i64 %45 = ptrtoint ptr %0 to i64 %46 = sub i64 %44, %45 store i64 %46, ptr %1, align 8 br label %.loopexit -.loopexit: ; preds = %8, %42, %29, %19, %3 - %47 = phi i64 [ 1, %42 ], [ 0, %3 ], [ 0, %19 ], [ 0, %29 ], [ 0, %8 ] - ret i64 %47 +.loopexit: ; preds = %8, %39, %29, %19, %3 + %43 = phi i64 [ 1, %42 ], [ 0, %3 ], [ 0, %19 ], [ 0, %29 ], [ 0, %8 ] + ret i64 %43 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) diff --git a/bench/linux/optimized/nf_nat_helper.ll b/bench/linux/optimized/nf_nat_helper.ll index da6b6650a20..8caf41c79dc 100644 --- a/bench/linux/optimized/nf_nat_helper.ll +++ b/bench/linux/optimized/nf_nat_helper.ll @@ -152,37 +152,37 @@ define internal fastcc void @mangle_contents(ptr noundef %0, i32 noundef %1, i32 %29 = getelementptr i8, ptr %13, i64 %28 %30 = ptrtoint ptr %29 to i64 %31 = ptrtoint ptr %25 to i64 - %32 = sub i64 %30, %31 - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %23, ptr align 1 %25, i64 %32, i1 false) + %gepdiff = sub i64 %30, %31 + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %23, ptr align 1 %25, i64 %gepdiff, i1 false) tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %21, ptr align 1 %4, i64 %22, i1 false) - %33 = icmp ugt i32 %5, %3 - br i1 %33, label %34, label %37 + %32 = icmp ugt i32 %5, %3 + br i1 %32, label %33, label %36 -34: ; preds = %11 - %35 = sub nuw i32 %5, %3 - %36 = tail call ptr @skb_put(ptr noundef %0, i32 noundef %35) #5 +33: ; preds = %11 + %34 = sub nuw i32 %5, %3 + %35 = tail call ptr @skb_put(ptr noundef %0, i32 noundef %34) #5 br label %54 -37: ; preds = %11 - %38 = load i32, ptr %7, align 4 - %39 = icmp eq i32 %38, 0 - br i1 %39, label %41, label %40, !prof !5 +36: ; preds = %11 + %37 = load i32, ptr %7, align 4 + %38 = icmp eq i32 %37, 0 + br i1 %38, label %40, label %39, !prof !5 -40: ; preds = %37 +39: ; preds = %36 tail call void asm sideeffect "414: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 414b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 414) #5, !srcloc !8 tail call void asm sideeffect "1:\09.byte 0x0f, 0x0b\0A.pushsection __bug_table,\22aw\22\0A2:\09.long 1b - .\09# bug_entry::bug_addr\0A\09.long ${0:c} - .\09# bug_entry::file\0A\09.word ${1:c}\09# bug_entry::line\0A\09.word ${2:c}\09# bug_entry::flags\0A\09.org 2b+${3:c}\0A.popsection\0A998:\0A\09.pushsection .discard.reachable\0A\09.long 998b\0A\09.popsection\0A\09", "i,i,i,i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @.str.1, i32 3061, i32 2305, i64 12) #5, !srcloc !9 tail call void asm sideeffect "415: nop\0A\09.pushsection .discard.instr_end\0A\09.long 415b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 415) #5, !srcloc !10 br label %54 -41: ; preds = %37 - %42 = getelementptr inbounds nuw i8, ptr %0, i64 112 - %43 = load i32, ptr %42, align 8 - %44 = sub i32 %5, %3 - %45 = add i32 %43, %44 - store i32 %45, ptr %42, align 8 - %46 = getelementptr inbounds nuw i8, ptr %0, i64 200 - %47 = load ptr, ptr %46, align 8 - %48 = load ptr, ptr %12, align 8 +40: ; preds = %36 + %41 = getelementptr inbounds nuw i8, ptr %0, i64 112 + %42 = load i32, ptr %41, align 8 + %43 = sub i32 %5, %3 + %44 = add i32 %42, %43 + store i32 %44, ptr %41, align 8 + %45 = getelementptr inbounds nuw i8, ptr %0, i64 200 + %46 = load ptr, ptr %45, align 8 + %47 = load ptr, ptr %12, align 8 %49 = ptrtoint ptr %47 to i64 %50 = ptrtoint ptr %48 to i64 %51 = sub i64 %49, %50 @@ -191,7 +191,7 @@ define internal fastcc void @mangle_contents(ptr noundef %0, i32 noundef %1, i32 store i32 %53, ptr %26, align 8 br label %54 -54: ; preds = %41, %40, %34 +54: ; preds = %40, %40, %34 %55 = getelementptr inbounds nuw i8, ptr %0, i64 104 %56 = load i64, ptr %55, align 8 %57 = and i64 %56, -8 @@ -204,7 +204,7 @@ define internal fastcc void @mangle_contents(ptr noundef %0, i32 noundef %1, i32 %64 = trunc i32 %63 to i16 br i1 %61, label %65, label %76 -65: ; preds = %54 +65:; preds = %54 %66 = tail call i16 @llvm.bswap.i16(i16 %64) %67 = load ptr, ptr %12, align 8 %68 = load i16, ptr %14, align 4 @@ -219,7 +219,7 @@ define internal fastcc void @mangle_contents(ptr noundef %0, i32 noundef %1, i32 tail call void @ip_send_check(ptr noundef %75) #5 br label %84 -76: ; preds = %54 +76:; preds = %54 %77 = add i16 %64, -40 %78 = tail call i16 @llvm.bswap.i16(i16 %77) %79 = load ptr, ptr %12, align 8 diff --git a/bench/linux/optimized/zstd_decompress.ll b/bench/linux/optimized/zstd_decompress.ll index 399d03ed08b..083ac86b238 100644 --- a/bench/linux/optimized/zstd_decompress.ll +++ b/bench/linux/optimized/zstd_decompress.ll @@ -2133,31 +2133,31 @@ define dso_local noundef i64 @ZSTD_loadDEntropy(ptr noundef %0, ptr noundef %1, call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #10 store i32 0, ptr %6, align 4, !annotation !11 %gepdiff = sub i64 %19, %20 - %25 = call i64 @FSE_readNCount(ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef %23, i64 noundef %gepdiff) #10 - %26 = icmp ult i64 %25, -119 - br i1 %26, label %27, label %.thread + %24 = call i64 @FSE_readNCount(ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef %23, i64 noundef %gepdiff) #10 + %25 = icmp ult i64 %24, -119 + br i1 %25, label %26, label %.thread -27: ; preds = %24 - %28 = load i32, ptr %5, align 4 - %29 = icmp ugt i32 %28, 31 - br i1 %29, label %.thread, label %30 +26: ; preds = %24 + %27 = load i32, ptr %5, align 4 + %28 = icmp ugt i32 %27, 31 + br i1 %28, label %.thread, label %29 -30: ; preds = %27 - %31 = load i32, ptr %6, align 4 - %32 = icmp ugt i32 %31, 8 - br i1 %32, label %.thread, label %33 +29: ; preds = %26 + %30 = load i32, ptr %6, align 4 + %31 = icmp ugt i32 %30, 8 + br i1 %31, label %.thread, label %32 -.thread: ; preds = %24, %27, %30 +.thread: ; preds = %24, %26, %29 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #10 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #10 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %4) #10 br label %.thread18 -33: ; preds = %30 - %34 = getelementptr inbounds nuw i8, ptr %0, i64 4104 - %35 = getelementptr inbounds nuw i8, ptr %0, i64 26664 - call void @ZSTD_buildFSETable(ptr noundef nonnull %34, ptr noundef nonnull %4, i32 noundef %28, ptr noundef nonnull @OF_base, ptr noundef nonnull @OF_bits, i32 noundef %31, ptr noundef nonnull %35, i64 noundef 628, i32 noundef 0) #10 - %36 = getelementptr i8, ptr %23, i64 %25 +32: ; preds = %29 + %33 = getelementptr inbounds nuw i8, ptr %0, i64 4104 + %34 = getelementptr inbounds nuw i8, ptr %0, i64 26664 + call void @ZSTD_buildFSETable(ptr noundef nonnull %33, ptr noundef nonnull %4, i32 noundef %27, ptr noundef nonnull @OF_base, ptr noundef nonnull @OF_bits, i32 noundef %30, ptr noundef nonnull %34, i64 noundef 628, i32 noundef 0) #10 + %35 = getelementptr i8, ptr %23, i64 %24 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #10 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #10 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %4) #10 @@ -2167,32 +2167,32 @@ define dso_local noundef i64 @ZSTD_loadDEntropy(ptr noundef %0, ptr noundef %1, store i32 52, ptr %8, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #10 store i32 0, ptr %9, align 4, !annotation !11 - %37 = add i64 %20, %25 - %gepdiff20 = sub i64 %19, %37 - %38 = call i64 @FSE_readNCount(ptr noundef nonnull %7, ptr noundef nonnull %8, ptr noundef nonnull %9, ptr noundef %36, i64 noundef %gepdiff20) #10 - %39 = icmp ult i64 %38, -119 - br i1 %39, label %40, label %.thread15 - -40: ; preds = %33 - %41 = load i32, ptr %8, align 4 - %42 = icmp ugt i32 %41, 52 - br i1 %42, label %.thread15, label %43 - -43: ; preds = %40 - %44 = load i32, ptr %9, align 4 - %45 = icmp ugt i32 %44, 9 - br i1 %45, label %.thread15, label %46 - -.thread15: ; preds = %33, %40, %43 + %36 = add i64 %20, %24 + %gepdiff20 = sub i64 %19, %36 + %37 = call i64 @FSE_readNCount(ptr noundef nonnull %7, ptr noundef nonnull %8, ptr noundef nonnull %9, ptr noundef %35, i64 noundef %gepdiff20) #10 + %38 = icmp ult i64 %37, -119 + br i1 %38, label %39, label %.thread15 + +39: ; preds = %32 + %40 = load i32, ptr %8, align 4 + %41 = icmp ugt i32 %40, 52 + br i1 %41, label %.thread15, label %42 + +42: ; preds = %39 + %43 = load i32, ptr %9, align 4 + %44 = icmp ugt i32 %43, 9 + br i1 %44, label %.thread15, label %45 + +.thread15: ; preds = %32, %39, %42 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #10 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #10 call void @llvm.lifetime.end.p0(i64 106, ptr nonnull %7) #10 br label %.thread18 -46: ; preds = %43 - %47 = getelementptr inbounds nuw i8, ptr %0, i64 6160 - call void @ZSTD_buildFSETable(ptr noundef nonnull %47, ptr noundef nonnull %7, i32 noundef %41, ptr noundef nonnull @ML_base, ptr noundef nonnull @ML_bits, i32 noundef %44, ptr noundef nonnull %35, i64 noundef 628, i32 noundef 0) #10 - %48 = getelementptr i8, ptr %36, i64 %38 +45: ; preds = %42 + %46 = getelementptr inbounds nuw i8, ptr %0, i64 6160 + call void @ZSTD_buildFSETable(ptr noundef nonnull %46, ptr noundef nonnull %7, i32 noundef %40, ptr noundef nonnull @ML_base, ptr noundef nonnull @ML_bits, i32 noundef %43, ptr noundef nonnull %34, i64 noundef 628, i32 noundef 0) #10 + %47 = getelementptr i8, ptr %35, i64 %37 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #10 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #10 call void @llvm.lifetime.end.p0(i64 106, ptr nonnull %7) #10 @@ -2202,39 +2202,39 @@ define dso_local noundef i64 @ZSTD_loadDEntropy(ptr noundef %0, ptr noundef %1, store i32 35, ptr %11, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #10 store i32 0, ptr %12, align 4, !annotation !11 - %49 = ptrtoint ptr %48 to i64 - %50 = sub i64 %18, %49 - %51 = call i64 @FSE_readNCount(ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef %48, i64 noundef %50) #10 - %52 = icmp ult i64 %51, -119 - br i1 %52, label %53, label %.thread17 - -53: ; preds = %46 - %54 = load i32, ptr %11, align 4 - %55 = icmp ugt i32 %54, 35 - br i1 %55, label %.thread17, label %56 - -56: ; preds = %53 - %57 = load i32, ptr %12, align 4 - %58 = icmp ugt i32 %57, 9 - br i1 %58, label %.thread17, label %59 - -.thread17: ; preds = %46, %53, %56 + %49 = ptrtoint ptr %47 to i64 + %gepdiff21 = sub i64 %18, %49 + %49 = call i64 @FSE_readNCount(ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef %47, i64 noundef %gepdiff21) #10 + %50 = icmp ult i64 %49, -119 + br i1 %50, label %51, label %.thread17 + +51: ; preds = %45 + %52 = load i32, ptr %11, align 4 + %53 = icmp ugt i32 %52, 35 + br i1 %53, label %.thread17, label %54 + +54: ; preds = %51 + %55 = load i32, ptr %12, align 4 + %56 = icmp ugt i32 %55, 9 + br i1 %56, label %.thread17, label %57 + +.thread17: ; preds = %45, %51, %54 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #10 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #10 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %10) #10 br label %.thread18 -59: ; preds = %56 - call void @ZSTD_buildFSETable(ptr noundef %0, ptr noundef nonnull %10, i32 noundef %54, ptr noundef nonnull @LL_base, ptr noundef nonnull @LL_bits, i32 noundef %57, ptr noundef nonnull %35, i64 noundef 628, i32 noundef 0) #10 - %60 = getelementptr i8, ptr %48, i64 %51 +57: ; preds = %54 + call void @ZSTD_buildFSETable(ptr noundef %0, ptr noundef nonnull %10, i32 noundef %52, ptr noundef nonnull @LL_base, ptr noundef nonnull @LL_bits, i32 noundef %55, ptr noundef nonnull %34, i64 noundef 628, i32 noundef 0) #10 + %58 = getelementptr i8, ptr %47, i64 %49 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #10 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #10 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %10) #10 - %61 = getelementptr i8, ptr %60, i64 12 - %62 = icmp ugt ptr %61, %13 - br i1 %62, label %.thread18, label %63 + %59 = getelementptr i8, ptr %58, i64 12 + %60 = icmp ugt ptr %59, %13 + br i1 %60, label %.thread18, label %61 -63: ; preds = %59 +61: ; preds = %57 %64 = ptrtoint ptr %61 to i64 %65 = sub i64 %18, %64 %66 = getelementptr inbounds nuw i8, ptr %0, i64 26652 @@ -2249,39 +2249,39 @@ define dso_local noundef i64 @ZSTD_loadDEntropy(ptr noundef %0, ptr noundef %1, %72 = getelementptr i8, ptr %60, i64 4 br label %.preheader -73: ; preds = %.preheader - %74 = load i32, ptr %80, align 1 - %75 = getelementptr i8, ptr %80, i64 4 - %76 = icmp eq i32 %74, 0 - %77 = zext i32 %74 to i64 - %78 = icmp ult i64 %65, %77 - %79 = or i1 %76, %78 - br i1 %79, label %86, label %.preheader, !llvm.loop !14 - -.preheader: ; preds = %.preheader.preheader, %73 - %80 = phi ptr [ %75, %73 ], [ %72, %.preheader.preheader ] - %81 = phi i32 [ %74, %73 ], [ %67, %.preheader.preheader ] - %82 = phi i64 [ %84, %73 ], [ 0, %.preheader.preheader ] - %83 = getelementptr [3 x i32], ptr %66, i64 0, i64 %82 - store i32 %81, ptr %83, align 4 - %84 = add nuw nsw i64 %82, 1 - %85 = icmp eq i64 %84, 3 - br i1 %85, label %.thread19, label %73, !llvm.loop !14 - -86: ; preds = %73 - %87 = icmp samesign ugt i64 %82, 1 - br i1 %87, label %.thread19, label %.thread18 - -.thread19: ; preds = %.preheader, %86 - %88 = phi ptr [ %75, %86 ], [ %80, %.preheader ] - %89 = ptrtoint ptr %88 to i64 - %90 = ptrtoint ptr %1 to i64 - %91 = sub i64 %89, %90 +70: ; preds = %.preheader + %71 = load i32, ptr %77, align 1 + %72 = getelementptr i8, ptr %77, i64 4 + %73 = icmp eq i32 %71, 0 + %74 = zext i32 %71 to i64 + %75 = icmp ult i64 %65, %74 + %76 = or i1 %73, %75 + br i1 %76, label %83, label %.preheader, !llvm.loop !14 + +.preheader: ; preds = %.preheader.preheader, %70 + %77 = phi ptr [ %72, %73 ], [ %72, %.preheader.preheader ] + %78 = phi i32 [ %71, %73 ], [ %67, %.preheader.preheader ] + %79 = phi i64 [ %81, %73 ], [ 0, %.preheader.preheader ] + %80 = getelementptr [3 x i32], ptr %66, i64 0, i64 %79 + store i32 %78, ptr %80, align 4 + %81 = add nuw nsw i64 %79, 1 + %82 = icmp eq i64 %81, 3 + br i1 %82, label %.thread19, label %70, !llvm.loop !14 + +83: ; preds = %70 + %84 = icmp samesign ugt i64 %79, 1 + br i1 %84, label %.thread19, label %.thread18 + +.thread19: ; preds = %.preheader, %83 + %85 = phi ptr [ %72, %86 ], [ %77, %.preheader ] + %86 = ptrtoint ptr %85 to i64 + %87 = ptrtoint ptr %1 to i64 + %88 = sub i64 %86, %87 br label %.thread18 -.thread18: ; preds = %63, %.thread17, %.thread15, %.thread, %.thread19, %86, %59, %15, %3 - %92 = phi i64 [ %91, %.thread19 ], [ -30, %86 ], [ -30, %15 ], [ -30, %3 ], [ -30, %59 ], [ -30, %.thread ], [ -30, %.thread15 ], [ -30, %.thread17 ], [ -30, %63 ] - ret i64 %92 +.thread18: ; preds = %61, %.thread17, %.thread15, %.thread, %.thread19, %83, %57, %15, %3 + %89 = phi i64 [ %88, %.thread19 ], [ -30, %86 ], [ -30, %15 ], [ -30, %3 ], [ -30, %59 ], [ -30, %.thread ], [ -30, %.thread15 ], [ -30, %.thread17 ], [ -30, %63 ] + ret i64 %89 } ; Function Attrs: null_pointer_is_valid diff --git a/bench/llvm/optimized/PPCaching.ll b/bench/llvm/optimized/PPCaching.ll index 792df503c56..8261093932f 100644 --- a/bench/llvm/optimized/PPCaching.ll +++ b/bench/llvm/optimized/PPCaching.ll @@ -1377,13 +1377,13 @@ define dso_local void @_ZN5clang12Preprocessor26ReplacePreviousCachedTokenEN4llv br label %_ZN4llvm15SmallVectorImplIN5clang5TokenEE5eraseEPKS2_.exit _ZN4llvm15SmallVectorImplIN5clang5TokenEE5eraseEPKS2_.exit: ; preds = %3, %22 - %26 = phi i64 [ %13, %3 ], [ %.pre, %22 ] - %27 = phi i32 [ %19, %3 ], [ %.pre.i, %22 ] - %28 = add i32 %27, -1 - store i32 %28, ptr %18, align 8, !tbaa !14 - %29 = add i64 %2, -1 - %30 = add i64 %29, %26 - store i64 %30, ptr %6, align 8, !tbaa !267 + %24 = phi i64 [ %13, %3 ], [ %.pre, %22 ] + %25 = phi i32 [ %19, %3 ], [ %.pre.i, %22 ] + %26 = add i32 %25, -1 + store i32 %26, ptr %18, align 8, !tbaa !14 + %27 = add i64 %2, -1 + %28 = add i64 %27, %24 + store i64 %28, ptr %6, align 8, !tbaa !267 ret void } diff --git a/bench/oiio/optimized/deepdata.ll b/bench/oiio/optimized/deepdata.ll index af45378ada2..319a159749c 100644 --- a/bench/oiio/optimized/deepdata.ll +++ b/bench/oiio/optimized/deepdata.ll @@ -3620,12 +3620,12 @@ _ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit.i: ; preds = %15 %.pre27.i = load ptr, ptr %0, align 8, !tbaa !35 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %.pre27.i, i64 72 %.pre = load ptr, ptr %.phi.trans.insert, align 8, !tbaa !54 - %.phi.trans.insert30 = getelementptr inbounds nuw i32, ptr %.pre, i64 %1 - %.pre31 = load i32, ptr %.phi.trans.insert30, align 4, !tbaa !85 + %.phi.trans.insert35 = getelementptr inbounds nuw i32, ptr %.pre, i64 %1 + %.pre36 = load i32, ptr %.phi.trans.insert35, align 4, !tbaa !85 br label %_ZN11OpenImageIO6v3_1_08DeepData14insert_samplesElii.exit _ZN11OpenImageIO6v3_1_08DeepData14insert_samplesElii.exit: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit.i, %24 - %25 = phi i32 [ %.pre31, %24 ], [ %16, %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit.i ] + %25 = phi i32 [ %.pre36, %24 ], [ %16, %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit.i ] %26 = phi ptr [ %.pre, %24 ], [ %13, %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit.i ] %27 = getelementptr inbounds nuw i32, ptr %26, i64 %1 %28 = add i32 %18, %25 @@ -3667,26 +3667,26 @@ _ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit.i24: ; preds = %29 br i1 %.not.i.i.i.i.i.i27, label %_ZN11OpenImageIO6v3_1_08DeepData13erase_samplesElii.exit, label %56 56: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit.i24 - %57 = ptrtoint ptr %55 to i64 - %58 = ptrtoint ptr %53 to i64 + %57 = ptrtoint ptr %55 to i67 + %58 = ptrtoint ptr %53 to i67 %59 = sub i64 %57, %58 tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %50, ptr align 1 %53, i64 %59, i1 false) %.pre.i28 = load ptr, ptr %0, align 8, !tbaa !35 %.phi.trans.insert.i = getelementptr inbounds nuw i8, ptr %.pre.i28, i64 72 %.pre21.i = load ptr, ptr %.phi.trans.insert.i, align 8, !tbaa !54 - %.phi.trans.insert22.i = getelementptr inbounds nuw i32, ptr %.pre21.i, i64 %1 + %.phi.trans.insert26.i = getelementptr inbounds nuw i32, ptr %.pre21.i, i64 %1 %.pre23.i = load i32, ptr %.phi.trans.insert22.i, align 4, !tbaa !85 br label %_ZN11OpenImageIO6v3_1_08DeepData13erase_samplesElii.exit _ZN11OpenImageIO6v3_1_08DeepData13erase_samplesElii.exit: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit.i24, %56 - %60 = phi i32 [ %.pre23.i, %56 ], [ %16, %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit.i24 ] - %61 = phi ptr [ %.pre21.i, %56 ], [ %13, %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit.i24 ] - %62 = getelementptr inbounds nuw i32, ptr %61, i64 %1 - %63 = sub i32 %60, %.sroa.speculated.i - store i32 %63, ptr %62, align 4, !tbaa !85 + %58 = phi i32 [ %.pre27.i, %56 ], [ %16, %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit.i24 ] + %59 = phi ptr [ %.pre25.i, %56 ], [ %13, %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit.i24 ] + %60 = getelementptr inbounds nuw i32, ptr %59, i64 %1 + %61 = sub i32 %58, %.sroa.speculated.i + store i32 %61, ptr %60, align 4, !tbaa !85 br label %69 -64: ; preds = %7 +67: ; preds = %7 store i32 %2, ptr %14, align 4, !tbaa !85 %65 = getelementptr inbounds nuw i8, ptr %8, i64 96 %66 = load ptr, ptr %65, align 8, !tbaa !54 @@ -3836,23 +3836,23 @@ _ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit: ; preds = %4 br i1 %.not.i.i.i.i.i, label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit, label %40 40: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit - %41 = ptrtoint ptr %39 to i64 + %41 = ptrtoint ptr %39 to i67 %42 = ptrtoint ptr %37 to i64 %43 = sub i64 %41, %42 tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %34, ptr align 1 %37, i64 %43, i1 false) %.pre = load ptr, ptr %0, align 8, !tbaa !35 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %.pre, i64 72 - %.pre21 = load ptr, ptr %.phi.trans.insert, align 8, !tbaa !54 - %.phi.trans.insert22 = getelementptr inbounds nuw i32, ptr %.pre21, i64 %1 - %.pre23 = load i32, ptr %.phi.trans.insert22, align 4, !tbaa !85 + %.pre25 = load ptr, ptr %.phi.trans.insert, align 8, !tbaa !54 + %.phi.trans.insert26 = getelementptr inbounds nuw i32, ptr %.pre25, i64 %1 + %.pre27 = load i32, ptr %.phi.trans.insert26, align 4, !tbaa !85 br label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit _ZSt4copyIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.exit: ; preds = %40, %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit, %4 - %44 = phi i32 [ %.pre23, %40 ], [ %9, %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit ], [ %9, %4 ] - %45 = phi ptr [ %.pre21, %40 ], [ %7, %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit ], [ %7, %4 ] - %46 = getelementptr inbounds nuw i32, ptr %45, i64 %1 - %47 = sub i32 %44, %.sroa.speculated - store i32 %47, ptr %46, align 4, !tbaa !85 + %42 = phi i32 [ %.pre27, %40 ], [ %9, %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit ], [ %9, %4 ] + %43 = phi ptr [ %.pre25, %40 ], [ %7, %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit ], [ %7, %4 ] + %44 = getelementptr inbounds nuw i32, ptr %43, i64 %1 + %45 = sub i32 %42, %.sroa.speculated + store i32 %45, ptr %44, align 4, !tbaa !85 ret void } @@ -6283,11 +6283,11 @@ define void @_ZN11OpenImageIO6v3_1_08DeepData14merge_overlapsEl(ptr noundef nonn %15 = icmp sgt i32 %12, 0 %16 = icmp slt i64 %1, 0 %wide.trip.count = zext nneg i32 %12 to i64 - %wide.trip.count265 = zext nneg i32 %12 to i64 + %wide.trip.count267 = zext nneg i32 %12 to i64 br label %17 -17: ; preds = %724, %7 - %.0105 = phi i32 [ 1, %7 ], [ %725, %724 ] +17: ; preds = %722, %7 + %.0105 = phi i32 [ 1, %7 ], [ %723, %724 ] %18 = load i64, ptr %14, align 8 %.not.i = icmp slt i64 %1, %18 %or.cond.i = select i1 %13, i1 %.not.i, i1 false @@ -6312,25 +6312,25 @@ _ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit: ; preds = %17, %19 %29 = add nsw i32 %.0105, -1 %30 = tail call noundef float @_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii(ptr noundef nonnull align 8 dereferenceable(20) %0, i64 noundef %1, i32 noundef %5, i32 noundef %29) %31 = fcmp oeq float %27, %30 - br i1 %31, label %32, label %724 + br i1 %31, label %32, label %722 32: ; preds = %26 %33 = tail call noundef float @_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii(ptr noundef nonnull align 8 dereferenceable(20) %0, i64 noundef %1, i32 noundef %spec.select, i32 noundef %29) %34 = fcmp oeq float %28, %33 - br i1 %34, label %.preheader257, label %724 + br i1 %34, label %.preheader259, label %722 -.preheader257: ; preds = %32 +.preheader259: ; preds = %32 br i1 %15, label %.lr.ph, label %._crit_edge -.lr.ph: ; preds = %.preheader257 +.lr.ph: ; preds = %.preheader259 %35 = icmp slt i32 %.0105, 1 %36 = icmp slt i32 %.0105, 0 br label %39 -.lr.ph260: ; preds = %471 +.lr.ph262: ; preds = %471 %37 = icmp slt i32 %.0105, 1 %38 = icmp slt i32 %.0105, 0 - br label %513 + br label %511 39: ; preds = %.lr.ph, %471 %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %471 ] @@ -6510,11 +6510,11 @@ _ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i: ; preds = %_ZNK11Open %142 = load ptr, ptr @stderr, align 8, !tbaa !89 %143 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %142, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 689, ptr noundef nonnull @__FUNCTION__._ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii, ptr noundef nonnull @.str.11, i32 noundef %141) #33 %.pre = load i64, ptr %14, align 8, !tbaa !62 - %.pre267 = load i32, ptr %11, align 8 + %.pre269 = load i32, ptr %11, align 8 br label %144 144: ; preds = %49, %53, %59, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i, %82, %_ZNK9Imath_3_14halfcvfEv.exit.i, %108, %112, %116, %120, %124, %128, %132, %136, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i - %145 = phi i32 [ %52, %49 ], [ %52, %53 ], [ %52, %59 ], [ %52, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i ], [ %52, %136 ], [ %52, %132 ], [ %52, %128 ], [ %52, %124 ], [ %52, %120 ], [ %52, %116 ], [ %52, %112 ], [ %52, %108 ], [ %52, %_ZNK9Imath_3_14halfcvfEv.exit.i ], [ %52, %82 ], [ %.pre267, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i ] + %145 = phi i32 [ %52, %49 ], [ %52, %53 ], [ %52, %59 ], [ %52, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i ], [ %52, %136 ], [ %52, %132 ], [ %52, %128 ], [ %52, %124 ], [ %52, %120 ], [ %52, %116 ], [ %52, %112 ], [ %52, %108 ], [ %52, %_ZNK9Imath_3_14halfcvfEv.exit.i ], [ %52, %82 ], [ %.pre269, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i ] %146 = phi i64 [ %50, %49 ], [ %50, %53 ], [ %50, %59 ], [ %50, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i ], [ %50, %136 ], [ %50, %132 ], [ %50, %128 ], [ %50, %124 ], [ %50, %120 ], [ %50, %116 ], [ %50, %112 ], [ %50, %108 ], [ %50, %_ZNK9Imath_3_14halfcvfEv.exit.i ], [ %50, %82 ], [ %.pre, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i ] %.0.i127.ph = phi float [ 0.000000e+00, %49 ], [ 0.000000e+00, %53 ], [ 0.000000e+00, %59 ], [ 0.000000e+00, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i ], [ %139, %136 ], [ %135, %132 ], [ %131, %128 ], [ %127, %124 ], [ %123, %120 ], [ %119, %116 ], [ %115, %112 ], [ %111, %108 ], [ %107, %_ZNK9Imath_3_14halfcvfEv.exit.i ], [ %83, %82 ], [ 0.000000e+00, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i ] %.inv255 = fcmp oge float %.0.i127.ph, 0.000000e+00 @@ -6684,13 +6684,13 @@ _ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i144: ; preds = %_ZNK11O %239 = and i32 %238, 255 %240 = load ptr, ptr @stderr, align 8, !tbaa !89 %241 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %240, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 689, ptr noundef nonnull @__FUNCTION__._ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii, ptr noundef nonnull @.str.11, i32 noundef %239) #33 - %.pre268 = load i64, ptr %14, align 8, !tbaa !62 - %.pre269 = load i32, ptr %11, align 8 + %.pre270 = load i64, ptr %14, align 8, !tbaa !62 + %.pre271 = load i32, ptr %11, align 8 br label %242 242: ; preds = %144, %149, %151, %157, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i136, %180, %_ZNK9Imath_3_14halfcvfEv.exit.i142, %206, %210, %214, %218, %222, %226, %230, %234, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i144 - %243 = phi i32 [ %145, %144 ], [ %145, %149 ], [ %145, %151 ], [ %145, %157 ], [ %145, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i136 ], [ %145, %234 ], [ %145, %230 ], [ %145, %226 ], [ %145, %222 ], [ %145, %218 ], [ %145, %214 ], [ %145, %210 ], [ %145, %206 ], [ %145, %_ZNK9Imath_3_14halfcvfEv.exit.i142 ], [ %145, %180 ], [ %.pre269, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i144 ] - %244 = phi i64 [ %146, %144 ], [ %146, %149 ], [ %146, %151 ], [ %146, %157 ], [ %146, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i136 ], [ %146, %234 ], [ %146, %230 ], [ %146, %226 ], [ %146, %222 ], [ %146, %218 ], [ %146, %214 ], [ %146, %210 ], [ %146, %206 ], [ %146, %_ZNK9Imath_3_14halfcvfEv.exit.i142 ], [ %146, %180 ], [ %.pre268, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i144 ] + %243 = phi i32 [ %145, %144 ], [ %145, %149 ], [ %145, %151 ], [ %145, %157 ], [ %145, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i136 ], [ %145, %234 ], [ %145, %230 ], [ %145, %226 ], [ %145, %222 ], [ %145, %218 ], [ %145, %214 ], [ %145, %210 ], [ %145, %206 ], [ %145, %_ZNK9Imath_3_14halfcvfEv.exit.i142 ], [ %145, %180 ], [ %.pre271, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i144 ] + %244 = phi i64 [ %146, %144 ], [ %146, %149 ], [ %146, %151 ], [ %146, %157 ], [ %146, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i136 ], [ %146, %234 ], [ %146, %230 ], [ %146, %226 ], [ %146, %222 ], [ %146, %218 ], [ %146, %214 ], [ %146, %210 ], [ %146, %206 ], [ %146, %_ZNK9Imath_3_14halfcvfEv.exit.i142 ], [ %146, %180 ], [ %.pre270, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i144 ] %.0.i132.ph = phi float [ 0.000000e+00, %144 ], [ 0.000000e+00, %149 ], [ 0.000000e+00, %151 ], [ 0.000000e+00, %157 ], [ 0.000000e+00, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i136 ], [ %237, %234 ], [ %233, %230 ], [ %229, %226 ], [ %225, %222 ], [ %221, %218 ], [ %217, %214 ], [ %213, %210 ], [ %209, %206 ], [ %205, %_ZNK9Imath_3_14halfcvfEv.exit.i142 ], [ %181, %180 ], [ 0.000000e+00, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i144 ] %.inv256 = fcmp oge float %.0.i132.ph, 0.000000e+00 %.0.i122233 = select i1 %.inv256, float %.0.i132.ph, float 0.000000e+00 @@ -6860,14 +6860,14 @@ _ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i161: ; preds = %_ZNK11O %338 = and i32 %337, 255 %339 = load ptr, ptr @stderr, align 8, !tbaa !89 %340 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %339, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 689, ptr noundef nonnull @__FUNCTION__._ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii, ptr noundef nonnull @.str.11, i32 noundef %338) #33 - %.pre270 = load i64, ptr %14, align 8, !tbaa !62 - %.pre271 = load i32, ptr %11, align 8 - %.pre274 = sext i32 %.pre271 to i64 + %.pre272 = load i64, ptr %14, align 8, !tbaa !62 + %.pre273 = load i32, ptr %11, align 8 + %.pre276 = sext i32 %.pre273 to i64 br label %341 341: ; preds = %242, %248, %250, %256, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i153, %279, %_ZNK9Imath_3_14halfcvfEv.exit.i159, %305, %309, %313, %317, %321, %325, %329, %333, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i161 - %.pre-phi = phi i64 [ %247, %242 ], [ %247, %248 ], [ %247, %250 ], [ %247, %256 ], [ %247, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i153 ], [ %247, %279 ], [ %247, %_ZNK9Imath_3_14halfcvfEv.exit.i159 ], [ %247, %305 ], [ %247, %309 ], [ %247, %313 ], [ %247, %317 ], [ %247, %321 ], [ %247, %325 ], [ %247, %329 ], [ %247, %333 ], [ %.pre274, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i161 ] - %342 = phi i64 [ %244, %242 ], [ %244, %248 ], [ %244, %250 ], [ %244, %256 ], [ %244, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i153 ], [ %244, %279 ], [ %244, %_ZNK9Imath_3_14halfcvfEv.exit.i159 ], [ %244, %305 ], [ %244, %309 ], [ %244, %313 ], [ %244, %317 ], [ %244, %321 ], [ %244, %325 ], [ %244, %329 ], [ %244, %333 ], [ %.pre270, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i161 ] + %.pre-phi = phi i64 [ %247, %242 ], [ %247, %248 ], [ %247, %250 ], [ %247, %256 ], [ %247, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i153 ], [ %247, %279 ], [ %247, %_ZNK9Imath_3_14halfcvfEv.exit.i159 ], [ %247, %305 ], [ %247, %309 ], [ %247, %313 ], [ %247, %317 ], [ %247, %321 ], [ %247, %325 ], [ %247, %329 ], [ %247, %333 ], [ %.pre276, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i161 ] + %342 = phi i64 [ %244, %242 ], [ %244, %248 ], [ %244, %250 ], [ %244, %256 ], [ %244, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i153 ], [ %244, %279 ], [ %244, %_ZNK9Imath_3_14halfcvfEv.exit.i159 ], [ %244, %305 ], [ %244, %309 ], [ %244, %313 ], [ %244, %317 ], [ %244, %321 ], [ %244, %325 ], [ %244, %329 ], [ %244, %333 ], [ %.pre272, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i161 ] %.0.i149.ph = phi float [ 0.000000e+00, %242 ], [ 0.000000e+00, %248 ], [ 0.000000e+00, %250 ], [ 0.000000e+00, %256 ], [ 0.000000e+00, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i153 ], [ %280, %279 ], [ %304, %_ZNK9Imath_3_14halfcvfEv.exit.i159 ], [ %308, %305 ], [ %312, %309 ], [ %316, %313 ], [ %320, %317 ], [ %324, %321 ], [ %328, %325 ], [ %332, %329 ], [ %336, %333 ], [ 0.000000e+00, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i161 ] %343 = icmp slt i64 %1, %342 %.not.i.i164 = icmp slt i64 %indvars.iv, %.pre-phi @@ -7092,9 +7092,9 @@ _ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit179: ; preds = %48, %341, 471: ; preds = %39, %469 %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 %.lr.ph260, label %39, !llvm.loop !162 + br i1 %exitcond.not, label %.lr.ph262, label %39, !llvm.loop !162 -._crit_edge: ; preds = %723, %.preheader257 +._crit_edge: ; preds = %721, %.preheader259 %472 = load ptr, ptr %0, align 8, !tbaa !35 %473 = getelementptr inbounds nuw i8, ptr %472, i64 72 %474 = load ptr, ptr %473, align 8, !tbaa !54 @@ -7145,104 +7145,104 @@ _ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit.i: ; preds = %._crit_edge tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %499, ptr align 1 %502, i64 %508, i1 false) %.pre.i = load ptr, ptr %0, align 8, !tbaa !35 %.phi.trans.insert.i = getelementptr inbounds nuw i8, ptr %.pre.i, i64 72 - %.pre21.i = load ptr, ptr %.phi.trans.insert.i, align 8, !tbaa !54 - %.phi.trans.insert22.i = getelementptr inbounds nuw i32, ptr %.pre21.i, i64 %1 - %.pre23.i = load i32, ptr %.phi.trans.insert22.i, align 4, !tbaa !85 + %.pre25.i = load ptr, ptr %.phi.trans.insert.i, align 8, !tbaa !54 + %.phi.trans.insert26.i = getelementptr inbounds nuw i32, ptr %.pre25.i, i64 %1 + %.pre27.i = load i32, ptr %.phi.trans.insert26.i, align 4, !tbaa !85 br label %_ZN11OpenImageIO6v3_1_08DeepData13erase_samplesElii.exit _ZN11OpenImageIO6v3_1_08DeepData13erase_samplesElii.exit: ; preds = %._crit_edge, %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit.i, %505 - %509 = phi i32 [ %.pre23.i, %505 ], [ %476, %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit.i ], [ %476, %._crit_edge ] - %510 = phi ptr [ %.pre21.i, %505 ], [ %474, %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit.i ], [ %474, %._crit_edge ] - %511 = getelementptr inbounds nuw i32, ptr %510, i64 %1 - %512 = sub i32 %509, %.sroa.speculated.i - store i32 %512, ptr %511, align 4, !tbaa !85 - br label %724 - -513: ; preds = %.lr.ph260, %723 - %indvars.iv262 = phi i64 [ 0, %.lr.ph260 ], [ %indvars.iv.next263, %723 ] - %514 = load ptr, ptr %0, align 8, !tbaa !35 - %515 = getelementptr inbounds nuw i8, ptr %514, i64 192 - %516 = load ptr, ptr %515, align 8, !tbaa !38 - %517 = getelementptr inbounds nuw i32, ptr %516, i64 %indvars.iv262 - %518 = load i32, ptr %517, align 4, !tbaa !85 - %519 = zext i32 %518 to i64 - %.not = icmp eq i64 %indvars.iv262, %519 - br i1 %.not, label %520, label %723 - -520: ; preds = %513 - %521 = icmp slt i32 %518, 0 - br i1 %521, label %.thread, label %522 - -522: ; preds = %520 - br i1 %16, label %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214, label %523 - -523: ; preds = %522 - %524 = load i64, ptr %14, align 8, !tbaa !62 - %525 = icmp slt i64 %1, %524 - %526 = load i32, ptr %11, align 8 - %.not.i.i182 = icmp slt i32 %518, %526 - %or.cond21.i.i183 = select i1 %525, i1 %.not.i.i182, i1 false - br i1 %or.cond21.i.i183, label %527, label %618 - -527: ; preds = %523 - %528 = getelementptr inbounds nuw i8, ptr %514, i64 144 - %529 = getelementptr inbounds nuw i8, ptr %514, i64 152 - %530 = load ptr, ptr %529, align 8, !tbaa !129 - %531 = load ptr, ptr %528, align 8, !tbaa !51 - %532 = icmp eq ptr %530, %531 - %or.cond3.i.i186 = or i1 %37, %532 - br i1 %or.cond3.i.i186, label %618, label %533 - -533: ; preds = %527 - %534 = getelementptr inbounds nuw i8, ptr %514, i64 72 - %535 = load ptr, ptr %534, align 8, !tbaa !54 - %536 = getelementptr inbounds nuw i32, ptr %535, i64 %1 - %537 = load i32, ptr %536, align 4, !tbaa !85 - %.not19.i.i187.not = icmp sgt i32 %.0105, %537 - br i1 %.not19.i.i187.not, label %618, label %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i188 - -_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i188: ; preds = %533 - %538 = getelementptr inbounds nuw i8, ptr %514, i64 120 - %539 = load ptr, ptr %538, align 8, !tbaa !54 - %540 = getelementptr inbounds nuw i32, ptr %539, i64 %1 - %541 = load i32, ptr %540, align 4, !tbaa !85 - %542 = add i32 %541, %29 - %543 = zext i32 %542 to i64 - %544 = getelementptr inbounds nuw i8, ptr %514, i64 216 - %545 = load i64, ptr %544, align 8, !tbaa !93 - %546 = mul i64 %545, %543 - %547 = getelementptr inbounds nuw i8, ptr %514, i64 48 - %548 = load ptr, ptr %547, align 8, !tbaa !57 - %549 = getelementptr inbounds nuw i64, ptr %548, i64 %indvars.iv262 - %550 = load i64, ptr %549, align 8, !tbaa !96 - %551 = getelementptr i8, ptr %531, i64 %546 - %552 = getelementptr i8, ptr %551, i64 %550 - %.not.i189 = icmp eq ptr %552, null - br i1 %.not.i189, label %618, label %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 + %507 = phi i32 [ %.pre27.i, %505 ], [ %476, %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit.i ], [ %476, %._crit_edge ] + %508 = phi ptr [ %.pre25.i, %505 ], [ %474, %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit.i ], [ %474, %._crit_edge ] + %509 = getelementptr inbounds nuw i32, ptr %508, i64 %1 + %510 = sub i32 %507, %.sroa.speculated.i + store i32 %510, ptr %509, align 4, !tbaa !85 + br label %722 + +511: ; preds = %.lr.ph262, %721 + %indvars.iv264 = phi i64 [ 0, %.lr.ph260 ], [ %indvars.iv.next265, %723 ] + %512 = load ptr, ptr %0, align 8, !tbaa !35 + %513 = getelementptr inbounds nuw i8, ptr %512, i64 192 + %514 = load ptr, ptr %513, align 8, !tbaa !38 + %515 = getelementptr inbounds nuw i32, ptr %514, i64 %indvars.iv264 + %516 = load i32, ptr %515, align 4, !tbaa !85 + %517 = zext i32 %516 to i64 + %.not = icmp eq i64 %indvars.iv264, %517 + br i1 %.not, label %518, label %721 + +518: ; preds = %511 + %519 = icmp slt i32 %516, 0 + br i1 %519, label %.thread, label %520 + +520: ; preds = %518 + br i1 %16, label %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214, label %521 + +521: ; preds = %520 + %522 = load i64, ptr %14, align 8, !tbaa !62 + %523 = icmp slt i64 %1, %522 + %524 = load i32, ptr %11, align 8 + %.not.i.i182 = icmp slt i32 %516, %524 + %or.cond21.i.i183 = select i1 %523, i1 %.not.i.i182, i1 false + br i1 %or.cond21.i.i183, label %525, label %616 + +525: ; preds = %521 + %526 = getelementptr inbounds nuw i8, ptr %512, i64 144 + %527 = getelementptr inbounds nuw i8, ptr %512, i64 152 + %528 = load ptr, ptr %527, align 8, !tbaa !129 + %529 = load ptr, ptr %526, align 8, !tbaa !51 + %530 = icmp eq ptr %528, %529 + %or.cond3.i.i186 = or i1 %37, %530 + br i1 %or.cond3.i.i186, label %616, label %531 + +531: ; preds = %525 + %532 = getelementptr inbounds nuw i8, ptr %512, i64 72 + %533 = load ptr, ptr %532, align 8, !tbaa !54 + %534 = getelementptr inbounds nuw i32, ptr %533, i64 %1 + %535 = load i32, ptr %534, align 4, !tbaa !85 + %.not19.i.i187.not = icmp sgt i32 %.0105, %535 + br i1 %.not19.i.i187.not, label %616, label %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i188 + +_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i188: ; preds = %531 + %536 = getelementptr inbounds nuw i8, ptr %512, i64 120 + %537 = load ptr, ptr %536, align 8, !tbaa !54 + %538 = getelementptr inbounds nuw i32, ptr %537, i64 %1 + %539 = load i32, ptr %538, align 4, !tbaa !85 + %540 = add i32 %539, %29 + %541 = zext i32 %540 to i64 + %542 = getelementptr inbounds nuw i8, ptr %512, i64 216 + %543 = load i64, ptr %542, align 8, !tbaa !93 + %544 = mul i64 %543, %541 + %545 = getelementptr inbounds nuw i8, ptr %512, i64 48 + %546 = load ptr, ptr %545, align 8, !tbaa !57 + %547 = getelementptr inbounds nuw i64, ptr %546, i64 %indvars.iv264 + %548 = load i64, ptr %547, align 8, !tbaa !96 + %549 = getelementptr i8, ptr %529, i64 %544 + %550 = getelementptr i8, ptr %549, i64 %548 + %.not.i189 = icmp eq ptr %550, null + br i1 %.not.i189, label %616, label %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 _ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i188 - %553 = load ptr, ptr %514, align 8, !tbaa !9 - %554 = getelementptr inbounds nuw %"struct.OpenImageIO::v3_1_0::TypeDesc", ptr %553, i64 %indvars.iv262 - %555 = load i64, ptr %554, align 4 - %.sroa.01.0.extract.trunc.i191 = trunc i64 %555 to i8 + %551 = load ptr, ptr %512, align 8, !tbaa !9 + %552 = getelementptr inbounds nuw %"struct.OpenImageIO::v3_1_0::TypeDesc", ptr %551, i64 %indvars.iv264 + %553 = load i64, ptr %552, align 4 + %.sroa.01.0.extract.trunc.i191 = trunc i64 %553 to i8 switch i8 %.sroa.01.0.extract.trunc.i191, label %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i196 [ i8 11, label %556 i8 10, label %558 - i8 6, label %582 - i8 2, label %586 - i8 3, label %590 - i8 4, label %594 - i8 5, label %598 - i8 7, label %602 - i8 8, label %606 - i8 9, label %610 + i8 6, label %580 + i8 2, label %584 + i8 3, label %588 + i8 4, label %592 + i8 5, label %596 + i8 7, label %600 + i8 8, label %604 + i8 9, label %608 ] 556: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 - %557 = load float, ptr %552, align 4, !tbaa !138 + %557 = load float, ptr %550, align 4, !tbaa !138 br label %618 -558: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 +558:; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 %559 = load i16, ptr %552, align 2, !tbaa !140 %560 = zext i16 %559 to i32 %561 = shl nuw nsw i32 %560, 13 @@ -7261,286 +7261,286 @@ _ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190: ; preds = %_ZNK11Ope %569 = add nuw nsw i32 %566, 939524096 br label %_ZNK9Imath_3_14halfcvfEv.exit.i194 -570: ; preds = %565 - %571 = or i32 %566, 2139095040 +568: ; preds = %565 + %569 = or i32 %566, 2139095040 br label %_ZNK9Imath_3_14halfcvfEv.exit.i194 -572: ; preds = %558 +570: ; preds = %558 %.not.i.i.i193 = icmp eq i32 %562, 0 - br i1 %.not.i.i.i193, label %_ZNK9Imath_3_14halfcvfEv.exit.i194, label %573 - -573: ; preds = %572 - %574 = tail call range(i32 9, 33) i32 @llvm.ctlz.i32(i32 %562, i1 true) - %575 = add nsw i32 %574, -8 - %576 = shl i32 %562, %575 - %577 = or i32 %563, %576 - %578 = or i32 %577, 947912704 - %579 = shl nuw nsw i32 %575, 23 - %580 = sub nuw i32 %578, %579 + br i1 %.not.i.i.i193, label %_ZNK9Imath_3_14halfcvfEv.exit.i194, label %571 + +571: ; preds = %570 + %572 = tail call range(i32 9, 33) i32 @llvm.ctlz.i32(i32 %562, i1 true) + %573 = add nsw i32 %572, -8 + %574 = shl i32 %562, %573 + %575 = or i32 %563, %574 + %576 = or i32 %575, 947912704 + %577 = shl nuw nsw i32 %573, 23 + %578 = sub nuw i32 %576, %577 br label %_ZNK9Imath_3_14halfcvfEv.exit.i194 -_ZNK9Imath_3_14halfcvfEv.exit.i194: ; preds = %573, %572, %570, %568 - %.sroa.0.0.i.i.i195 = phi i32 [ %569, %568 ], [ %571, %570 ], [ %580, %573 ], [ %563, %572 ] - %581 = bitcast i32 %.sroa.0.0.i.i.i195 to float - br label %618 - -582: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 - %583 = load i32, ptr %552, align 4, !tbaa !85 - %584 = uitofp i32 %583 to float - %585 = fmul float %584, 0x3DF0000000000000 - br label %618 - -586: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 - %587 = load i8, ptr %552, align 1, !tbaa !47 - %588 = uitofp i8 %587 to float - %589 = fmul float %588, 0x3F70101020000000 - br label %618 - -590: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 - %591 = load i8, ptr %552, align 1, !tbaa !47 - %592 = sitofp i8 %591 to float - %593 = fmul float %592, 0x3F80204080000000 - br label %618 - -594: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 - %595 = load i16, ptr %552, align 2, !tbaa !144 - %596 = uitofp i16 %595 to float - %597 = fmul float %596, 0x3EF0001000000000 - br label %618 - -598: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 - %599 = load i16, ptr %552, align 2, !tbaa !144 - %600 = sitofp i16 %599 to float - %601 = fmul float %600, 0x3F00002000000000 - br label %618 - -602: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 - %603 = load i32, ptr %552, align 4, !tbaa !85 - %604 = sitofp i32 %603 to float - %605 = fmul float %604, 0x3E00000000000000 - br label %618 - -606: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 - %607 = load i64, ptr %552, align 8, !tbaa !145 - %608 = uitofp i64 %607 to float - %609 = fmul float %608, 0x3BF0000000000000 - br label %618 - -610: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 - %611 = load i64, ptr %552, align 8, !tbaa !145 - %612 = sitofp i64 %611 to float - %613 = fmul float %612, 0x3C00000000000000 - br label %618 +_ZNK9Imath_3_14halfcvfEv.exit.i194: ; preds = %571, %570, %568, %568 + %.sroa.0.0.i.i.i195 = phi i32 [ %569, %568 ], [ %569, %570 ], [ %578, %573 ], [ %563, %572 ] + %579 = bitcast i32 %.sroa.0.0.i.i.i195 to float + br label %616 + +580: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 + %581 = load i32, ptr %550, align 4, !tbaa !85 + %582 = uitofp i32 %581 to float + %583 = fmul float %582, 0x3DF0000000000000 + br label %616 + +584: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 + %585 = load i8, ptr %550, align 1, !tbaa !47 + %586 = uitofp i8 %585 to float + %587 = fmul float %586, 0x3F70101020000000 + br label %616 + +588: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 + %589 = load i8, ptr %550, align 1, !tbaa !47 + %590 = sitofp i8 %589 to float + %591 = fmul float %590, 0x3F80204080000000 + br label %616 + +592: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 + %593 = load i16, ptr %550, align 2, !tbaa !144 + %594 = uitofp i16 %593 to float + %595 = fmul float %594, 0x3EF0001000000000 + br label %616 + +596: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 + %597 = load i16, ptr %550, align 2, !tbaa !144 + %598 = sitofp i16 %597 to float + %599 = fmul float %598, 0x3F00002000000000 + br label %616 + +600: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 + %601 = load i32, ptr %550, align 4, !tbaa !85 + %602 = sitofp i32 %601 to float + %603 = fmul float %602, 0x3E00000000000000 + br label %616 + +604: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 + %605 = load i64, ptr %550, align 8, !tbaa !145 + %606 = uitofp i64 %605 to float + %607 = fmul float %606, 0x3BF0000000000000 + br label %616 + +608: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 + %609 = load i64, ptr %550, align 8, !tbaa !145 + %610 = sitofp i64 %609 to float + %611 = fmul float %610, 0x3C00000000000000 + br label %616 _ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i196: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i190 - %614 = trunc i64 %555 to i32 - %615 = and i32 %614, 255 - %616 = load ptr, ptr @stderr, align 8, !tbaa !89 - %617 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %616, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 689, ptr noundef nonnull @__FUNCTION__._ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii, ptr noundef nonnull @.str.11, i32 noundef %615) #33 - %.pre272 = load i64, ptr %14, align 8, !tbaa !62 - %.pre273 = load i32, ptr %11, align 8 - br label %618 - -618: ; preds = %523, %527, %533, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i188, %556, %_ZNK9Imath_3_14halfcvfEv.exit.i194, %582, %586, %590, %594, %598, %602, %606, %610, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i196 - %619 = phi i32 [ %526, %523 ], [ %526, %527 ], [ %526, %533 ], [ %526, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i188 ], [ %526, %610 ], [ %526, %606 ], [ %526, %602 ], [ %526, %598 ], [ %526, %594 ], [ %526, %590 ], [ %526, %586 ], [ %526, %582 ], [ %526, %_ZNK9Imath_3_14halfcvfEv.exit.i194 ], [ %526, %556 ], [ %.pre273, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i196 ] - %620 = phi i64 [ %524, %523 ], [ %524, %527 ], [ %524, %533 ], [ %524, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i188 ], [ %524, %610 ], [ %524, %606 ], [ %524, %602 ], [ %524, %598 ], [ %524, %594 ], [ %524, %590 ], [ %524, %586 ], [ %524, %582 ], [ %524, %_ZNK9Imath_3_14halfcvfEv.exit.i194 ], [ %524, %556 ], [ %.pre272, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i196 ] - %.0.i184.ph = phi float [ 0.000000e+00, %523 ], [ 0.000000e+00, %527 ], [ 0.000000e+00, %533 ], [ 0.000000e+00, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i188 ], [ %613, %610 ], [ %609, %606 ], [ %605, %602 ], [ %601, %598 ], [ %597, %594 ], [ %593, %590 ], [ %589, %586 ], [ %585, %582 ], [ %581, %_ZNK9Imath_3_14halfcvfEv.exit.i194 ], [ %557, %556 ], [ 0.000000e+00, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i196 ] + %612 = trunc i64 %553 to i32 + %613 = and i32 %612, 255 + %614 = load ptr, ptr @stderr, align 8, !tbaa !89 + %615 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %614, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 689, ptr noundef nonnull @__FUNCTION__._ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii, ptr noundef nonnull @.str.11, i32 noundef %613) #33 + %.pre274 = load i64, ptr %14, align 8, !tbaa !62 + %.pre275 = load i32, ptr %11, align 8 + br label %616 + +616: ; preds = %521, %525, %531, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i188, %556, %_ZNK9Imath_3_14halfcvfEv.exit.i194, %580, %584, %588, %592, %596, %600, %604, %608, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i196 + %617 = phi i32 [ %524, %523 ], [ %526, %527 ], [ %526, %533 ], [ %524, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i188 ], [ %524, %610 ], [ %526, %606 ], [ %526, %602 ], [ %526, %598 ], [ %526, %594 ], [ %526, %590 ], [ %526, %586 ], [ %526, %582 ], [ %524, %_ZNK9Imath_3_14halfcvfEv.exit.i194 ], [ %524, %556 ], [ %.pre275, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i196 ] + %618 = phi i64 [ %522, %523 ], [ %524, %527 ], [ %524, %533 ], [ %522, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i188 ], [ %522, %610 ], [ %524, %606 ], [ %524, %602 ], [ %524, %598 ], [ %524, %594 ], [ %524, %590 ], [ %524, %586 ], [ %524, %582 ], [ %522, %_ZNK9Imath_3_14halfcvfEv.exit.i194 ], [ %522, %556 ], [ %.pre274, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i196 ] + %.0.i184.ph = phi float [ 0.000000e+00, %523 ], [ 0.000000e+00, %527 ], [ 0.000000e+00, %533 ], [ 0.000000e+00, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i188 ], [ %611, %610 ], [ %607, %606 ], [ %605, %602 ], [ %599, %598 ], [ %597, %594 ], [ %593, %590 ], [ %589, %586 ], [ %585, %582 ], [ %579, %_ZNK9Imath_3_14halfcvfEv.exit.i194 ], [ %557, %556 ], [ 0.000000e+00, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i196 ] %.inv = fcmp oge float %.0.i184.ph, 0.000000e+00 %.0.i120250 = select i1 %.inv, float %.0.i184.ph, float 0.000000e+00 - %621 = fcmp ogt float %.0.i120250, 1.000000e+00 - %.1.i121251 = select i1 %621, float 1.000000e+00, float %.0.i120250 - %622 = icmp slt i64 %1, %620 - %.not.i.i199 = icmp slt i32 %518, %619 - %or.cond21.i.i200 = select i1 %622, i1 %.not.i.i199, i1 false - br i1 %or.cond21.i.i200, label %623, label %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214 - -623: ; preds = %618 - %624 = load ptr, ptr %0, align 8, !tbaa !35 - %.not18.i.i202 = icmp eq ptr %624, null - br i1 %.not18.i.i202, label %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214, label %625 - -625: ; preds = %623 - %626 = getelementptr inbounds nuw i8, ptr %624, i64 144 - %627 = getelementptr inbounds nuw i8, ptr %624, i64 152 - %628 = load ptr, ptr %627, align 8, !tbaa !129 - %629 = load ptr, ptr %626, align 8, !tbaa !51 - %630 = icmp eq ptr %628, %629 - %or.cond3.i.i203 = or i1 %38, %630 - br i1 %or.cond3.i.i203, label %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214, label %631 - -631: ; preds = %625 - %632 = getelementptr inbounds nuw i8, ptr %624, i64 72 - %633 = load ptr, ptr %632, align 8, !tbaa !54 - %634 = getelementptr inbounds nuw i32, ptr %633, i64 %1 - %635 = load i32, ptr %634, align 4, !tbaa !85 - %.not19.i.i204 = icmp slt i32 %.0105, %635 + %619 = fcmp ogt float %.0.i120250, 1.000000e+00 + %.1.i121251 = select i1 %619, float 1.000000e+00, float %.0.i120250 + %620 = icmp slt i64 %1, %618 + %.not.i.i199 = icmp slt i32 %516, %617 + %or.cond21.i.i200 = select i1 %620, i1 %.not.i.i199, i1 false + br i1 %or.cond21.i.i200, label %621, label %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214 + +621: ; preds = %616 + %622 = load ptr, ptr %0, align 8, !tbaa !35 + %.not18.i.i202 = icmp eq ptr %622, null + br i1 %.not18.i.i202, label %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214, label %623 + +623: ; preds = %621 + %624 = getelementptr inbounds nuw i8, ptr %622, i64 144 + %625 = getelementptr inbounds nuw i8, ptr %622, i64 152 + %626 = load ptr, ptr %625, align 8, !tbaa !129 + %627 = load ptr, ptr %624, align 8, !tbaa !51 + %628 = icmp eq ptr %626, %627 + %or.cond3.i.i203 = or i1 %38, %628 + br i1 %or.cond3.i.i203, label %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214, label %629 + +629: ; preds = %623 + %630 = getelementptr inbounds nuw i8, ptr %622, i64 72 + %631 = load ptr, ptr %630, align 8, !tbaa !54 + %632 = getelementptr inbounds nuw i32, ptr %631, i64 %1 + %633 = load i32, ptr %632, align 4, !tbaa !85 + %.not19.i.i204 = icmp slt i32 %.0105, %633 br i1 %.not19.i.i204, label %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i205, label %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214 -_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i205: ; preds = %631 - %636 = getelementptr inbounds nuw i8, ptr %624, i64 120 - %637 = load ptr, ptr %636, align 8, !tbaa !54 - %638 = getelementptr inbounds nuw i32, ptr %637, i64 %1 - %639 = load i32, ptr %638, align 4, !tbaa !85 - %640 = add i32 %639, %.0105 - %641 = zext i32 %640 to i64 - %642 = getelementptr inbounds nuw i8, ptr %624, i64 216 - %643 = load i64, ptr %642, align 8, !tbaa !93 - %644 = mul i64 %643, %641 - %645 = getelementptr inbounds nuw i8, ptr %624, i64 48 - %646 = load ptr, ptr %645, align 8, !tbaa !57 - %647 = getelementptr inbounds nuw i64, ptr %646, i64 %indvars.iv262 - %648 = load i64, ptr %647, align 8, !tbaa !96 - %649 = getelementptr i8, ptr %629, i64 %644 - %650 = getelementptr i8, ptr %649, i64 %648 - %.not.i206 = icmp eq ptr %650, null +_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i205: ; preds = %629 + %634 = getelementptr inbounds nuw i8, ptr %622, i64 120 + %635 = load ptr, ptr %634, align 8, !tbaa !54 + %636 = getelementptr inbounds nuw i32, ptr %635, i64 %1 + %637 = load i32, ptr %636, align 4, !tbaa !85 + %638 = add i32 %637, %.0105 + %639 = zext i32 %638 to i64 + %640 = getelementptr inbounds nuw i8, ptr %622, i64 216 + %641 = load i64, ptr %640, align 8, !tbaa !93 + %642 = mul i64 %641, %639 + %643 = getelementptr inbounds nuw i8, ptr %622, i64 48 + %644 = load ptr, ptr %643, align 8, !tbaa !57 + %645 = getelementptr inbounds nuw i64, ptr %644, i64 %indvars.iv264 + %646 = load i64, ptr %645, align 8, !tbaa !96 + %647 = getelementptr i8, ptr %627, i64 %642 + %648 = getelementptr i8, ptr %647, i64 %646 + %.not.i206 = icmp eq ptr %648, null br i1 %.not.i206, label %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214, label %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 _ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i205 - %651 = load ptr, ptr %624, align 8, !tbaa !9 - %652 = getelementptr inbounds nuw %"struct.OpenImageIO::v3_1_0::TypeDesc", ptr %651, i64 %indvars.iv262 - %653 = load i64, ptr %652, align 4 - %.sroa.01.0.extract.trunc.i208 = trunc i64 %653 to i8 + %649 = load ptr, ptr %622, align 8, !tbaa !9 + %650 = getelementptr inbounds nuw %"struct.OpenImageIO::v3_1_0::TypeDesc", ptr %649, i64 %indvars.iv264 + %651 = load i64, ptr %650, align 4 + %.sroa.01.0.extract.trunc.i208 = trunc i64 %651 to i8 switch i8 %.sroa.01.0.extract.trunc.i208, label %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i213 [ - i8 11, label %654 - i8 10, label %656 - i8 6, label %680 - i8 2, label %684 - i8 3, label %688 - i8 4, label %692 - i8 5, label %696 - i8 7, label %700 - i8 8, label %704 - i8 9, label %708 + i8 11, label %652 + i8 10, label %654 + i8 6, label %678 + i8 2, label %682 + i8 3, label %686 + i8 4, label %690 + i8 5, label %694 + i8 7, label %698 + i8 8, label %702 + i8 9, label %706 ] -654: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 - %655 = load float, ptr %650, align 4, !tbaa !138 +652: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 + %653 = load float, ptr %648, align 4, !tbaa !138 br label %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214 -656: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 - %657 = load i16, ptr %650, align 2, !tbaa !140 - %658 = zext i16 %657 to i32 - %659 = shl nuw nsw i32 %658, 13 - %660 = and i32 %659, 268427264 - %.signext.i.i.i209 = sext i16 %657 to i32 - %661 = and i32 %.signext.i.i.i209, -2147483648 - %662 = icmp samesign ugt i32 %660, 8388607 - br i1 %662, label %663, label %670, !prof !143 - -663: ; preds = %656 - %664 = or disjoint i32 %660, %661 - %665 = icmp samesign ult i32 %660, 260046848 - br i1 %665, label %666, label %668, !prof !143 - -666: ; preds = %663 - %667 = add nuw nsw i32 %664, 939524096 +654: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 + %655 = load i16, ptr %648, align 2, !tbaa !140 + %656 = zext i16 %655 to i32 + %657 = shl nuw nsw i32 %656, 13 + %658 = and i32 %657, 268427264 + %.signext.i.i.i209 = sext i16 %655 to i32 + %659 = and i32 %.signext.i.i.i209, -2147483648 + %660 = icmp samesign ugt i32 %658, 8388607 + br i1 %660, label %661, label %668, !prof !143 + +661: ; preds = %654 + %662 = or disjoint i32 %658, %659 + %663 = icmp samesign ult i32 %658, 260046848 + br i1 %663, label %664, label %666, !prof !143 + +664: ; preds = %661 + %665 = add nuw nsw i32 %662, 939524096 br label %_ZNK9Imath_3_14halfcvfEv.exit.i211 -668: ; preds = %663 - %669 = or i32 %664, 2139095040 +666: ; preds = %661 + %667 = or i32 %662, 2139095040 br label %_ZNK9Imath_3_14halfcvfEv.exit.i211 -670: ; preds = %656 - %.not.i.i.i210 = icmp eq i32 %660, 0 - br i1 %.not.i.i.i210, label %_ZNK9Imath_3_14halfcvfEv.exit.i211, label %671 - -671: ; preds = %670 - %672 = tail call range(i32 9, 33) i32 @llvm.ctlz.i32(i32 %660, i1 true) - %673 = add nsw i32 %672, -8 - %674 = shl i32 %660, %673 - %675 = or i32 %661, %674 - %676 = or i32 %675, 947912704 - %677 = shl nuw nsw i32 %673, 23 - %678 = sub nuw i32 %676, %677 +668: ; preds = %654 + %.not.i.i.i210 = icmp eq i32 %658, 0 + br i1 %.not.i.i.i210, label %_ZNK9Imath_3_14halfcvfEv.exit.i211, label %669 + +669: ; preds = %668 + %670 = tail call range(i32 9, 33) i32 @llvm.ctlz.i32(i32 %658, i1 true) + %671 = add nsw i32 %670, -8 + %672 = shl i32 %658, %671 + %673 = or i32 %659, %672 + %674 = or i32 %673, 947912704 + %675 = shl nuw nsw i32 %671, 23 + %676 = sub nuw i32 %674, %675 br label %_ZNK9Imath_3_14halfcvfEv.exit.i211 -_ZNK9Imath_3_14halfcvfEv.exit.i211: ; preds = %671, %670, %668, %666 - %.sroa.0.0.i.i.i212 = phi i32 [ %667, %666 ], [ %669, %668 ], [ %678, %671 ], [ %661, %670 ] - %679 = bitcast i32 %.sroa.0.0.i.i.i212 to float +_ZNK9Imath_3_14halfcvfEv.exit.i211: ; preds = %669, %668, %666, %664 + %.sroa.0.0.i.i.i212 = phi i32 [ %667, %666 ], [ %669, %668 ], [ %678, %671 ], [ %659, %670 ] + %677 = bitcast i32 %.sroa.0.0.i.i.i212 to float br label %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214 -680: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 - %681 = load i32, ptr %650, align 4, !tbaa !85 - %682 = uitofp i32 %681 to float - %683 = fmul float %682, 0x3DF0000000000000 +678: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 + %679 = load i32, ptr %648, align 4, !tbaa !85 + %680 = uitofp i32 %679 to float + %681 = fmul float %680, 0x3DF0000000000000 br label %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214 -684: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 - %685 = load i8, ptr %650, align 1, !tbaa !47 - %686 = uitofp i8 %685 to float - %687 = fmul float %686, 0x3F70101020000000 +682: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 + %683 = load i8, ptr %648, align 1, !tbaa !47 + %684 = uitofp i8 %683 to float + %685 = fmul float %684, 0x3F70101020000000 br label %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214 -688: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 - %689 = load i8, ptr %650, align 1, !tbaa !47 - %690 = sitofp i8 %689 to float - %691 = fmul float %690, 0x3F80204080000000 +686: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 + %687 = load i8, ptr %648, align 1, !tbaa !47 + %688 = sitofp i8 %687 to float + %689 = fmul float %688, 0x3F80204080000000 br label %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214 -692: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 - %693 = load i16, ptr %650, align 2, !tbaa !144 - %694 = uitofp i16 %693 to float - %695 = fmul float %694, 0x3EF0001000000000 +690: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 + %691 = load i16, ptr %648, align 2, !tbaa !144 + %692 = uitofp i16 %691 to float + %693 = fmul float %692, 0x3EF0001000000000 br label %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214 -696: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 - %697 = load i16, ptr %650, align 2, !tbaa !144 - %698 = sitofp i16 %697 to float - %699 = fmul float %698, 0x3F00002000000000 +694: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 + %695 = load i16, ptr %648, align 2, !tbaa !144 + %696 = sitofp i16 %695 to float + %697 = fmul float %696, 0x3F00002000000000 br label %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214 -700: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 - %701 = load i32, ptr %650, align 4, !tbaa !85 - %702 = sitofp i32 %701 to float - %703 = fmul float %702, 0x3E00000000000000 +698: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 + %699 = load i32, ptr %648, align 4, !tbaa !85 + %700 = sitofp i32 %699 to float + %701 = fmul float %700, 0x3E00000000000000 br label %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214 -704: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 - %705 = load i64, ptr %650, align 8, !tbaa !145 - %706 = uitofp i64 %705 to float - %707 = fmul float %706, 0x3BF0000000000000 +702: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 + %703 = load i64, ptr %648, align 8, !tbaa !145 + %704 = uitofp i64 %703 to float + %705 = fmul float %704, 0x3BF0000000000000 br label %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214 -708: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 - %709 = load i64, ptr %650, align 8, !tbaa !145 - %710 = sitofp i64 %709 to float - %711 = fmul float %710, 0x3C00000000000000 +706: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 + %707 = load i64, ptr %648, align 8, !tbaa !145 + %708 = sitofp i64 %707 to float + %709 = fmul float %708, 0x3C00000000000000 br label %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214 _ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i213: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit.i207 - %712 = trunc i64 %653 to i32 - %713 = and i32 %712, 255 - %714 = load ptr, ptr @stderr, align 8, !tbaa !89 - %715 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %714, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 689, ptr noundef nonnull @__FUNCTION__._ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii, ptr noundef nonnull @.str.11, i32 noundef %713) #33 + %710 = trunc i64 %651 to i32 + %711 = and i32 %710, 255 + %712 = load ptr, ptr @stderr, align 8, !tbaa !89 + %713 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %712, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 689, ptr noundef nonnull @__FUNCTION__._ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii, ptr noundef nonnull @.str.11, i32 noundef %711) #33 br label %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214 -_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214: ; preds = %522, %618, %623, %625, %631, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i205, %654, %_ZNK9Imath_3_14halfcvfEv.exit.i211, %680, %684, %688, %692, %696, %700, %704, %708, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i213 +_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214: ; preds = %520, %616, %621, %623, %629, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i205, %652, %_ZNK9Imath_3_14halfcvfEv.exit.i211, %678, %682, %686, %690, %694, %698, %702, %706, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i213 %.1.i121253 = phi float [ %.1.i121251, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i213 ], [ %.1.i121251, %654 ], [ %.1.i121251, %_ZNK9Imath_3_14halfcvfEv.exit.i211 ], [ %.1.i121251, %680 ], [ %.1.i121251, %684 ], [ %.1.i121251, %688 ], [ %.1.i121251, %692 ], [ %.1.i121251, %696 ], [ %.1.i121251, %700 ], [ %.1.i121251, %704 ], [ %.1.i121251, %708 ], [ %.1.i121251, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i205 ], [ %.1.i121251, %631 ], [ %.1.i121251, %625 ], [ %.1.i121251, %623 ], [ %.1.i121251, %618 ], [ 0.000000e+00, %522 ] - %.0.i201 = phi float [ 0.000000e+00, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i213 ], [ %655, %654 ], [ %679, %_ZNK9Imath_3_14halfcvfEv.exit.i211 ], [ %683, %680 ], [ %687, %684 ], [ %691, %688 ], [ %695, %692 ], [ %699, %696 ], [ %703, %700 ], [ %707, %704 ], [ %711, %708 ], [ 0.000000e+00, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i205 ], [ 0.000000e+00, %631 ], [ 0.000000e+00, %625 ], [ 0.000000e+00, %623 ], [ 0.000000e+00, %618 ], [ 0.000000e+00, %522 ] + %.0.i201 = phi float [ 0.000000e+00, %_ZNK11OpenImageIO6v3_1_08DeepData11channeltypeEi.exit24.i213 ], [ %653, %654 ], [ %677, %_ZNK9Imath_3_14halfcvfEv.exit.i211 ], [ %681, %680 ], [ %687, %684 ], [ %691, %688 ], [ %695, %692 ], [ %699, %696 ], [ %703, %700 ], [ %707, %704 ], [ %711, %708 ], [ 0.000000e+00, %_ZNK11OpenImageIO6v3_1_08DeepData8data_ptrElii.exit.i205 ], [ 0.000000e+00, %631 ], [ 0.000000e+00, %625 ], [ 0.000000e+00, %623 ], [ 0.000000e+00, %618 ], [ 0.000000e+00, %522 ] %.inv254 = fcmp oge float %.0.i201, 0.000000e+00 %.0.i = select i1 %.inv254, float %.0.i201, float 0.000000e+00 - %716 = fcmp ogt float %.0.i, 1.000000e+00 - %.1.i = select i1 %716, float 1.000000e+00, float %.0.i + %714 = fcmp ogt float %.0.i, 1.000000e+00 + %.1.i = select i1 %714, float 1.000000e+00, float %.0.i br label %.thread -.thread: ; preds = %520, %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214 - %717 = phi float [ %.1.i121253, %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214 ], [ 1.000000e+00, %520 ] - %718 = phi float [ %.1.i, %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214 ], [ 1.000000e+00, %520 ] - %719 = fadd float %717, %718 - %720 = fneg float %717 - %721 = tail call float @llvm.fmuladd.f32(float %720, float %718, float %719) - %722 = trunc nuw nsw i64 %indvars.iv262 to i32 - tail call void @_ZN11OpenImageIO6v3_1_08DeepData14set_deep_valueEliif(ptr noundef nonnull align 8 dereferenceable(20) %0, i64 noundef %1, i32 noundef %722, i32 noundef %29, float noundef %721) - br label %723 - -723: ; preds = %513, %.thread - %indvars.iv.next263 = add nuw nsw i64 %indvars.iv262, 1 - %exitcond266.not = icmp eq i64 %indvars.iv.next263, %wide.trip.count265 - br i1 %exitcond266.not, label %._crit_edge, label %513, !llvm.loop !163 - -724: ; preds = %_ZN11OpenImageIO6v3_1_08DeepData13erase_samplesElii.exit, %32, %26 +.thread: ; preds = %518, %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214 + %715 = phi float [ %.1.i121253, %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214 ], [ 1.000000e+00, %520 ] + %716 = phi float [ %.1.i, %_ZNK11OpenImageIO6v3_1_08DeepData10deep_valueElii.exit214 ], [ 1.000000e+00, %520 ] + %717 = fadd float %715, %716 + %718 = fneg float %715 + %719 = tail call float @llvm.fmuladd.f32(float %718, float %716, float %717) + %720 = trunc nuw nsw i64 %indvars.iv264 to i32 + tail call void @_ZN11OpenImageIO6v3_1_08DeepData14set_deep_valueEliif(ptr noundef nonnull align 8 dereferenceable(20) %0, i64 noundef %1, i32 noundef %720, i32 noundef %29, float noundef %719) + br label %721 + +721: ; preds = %511, %.thread + %indvars.iv.next265 = add nuw nsw i64 %indvars.iv264, 1 + %exitcond268.not = icmp eq i64 %indvars.iv.next265, %wide.trip.count267 + br i1 %exitcond268.not, label %._crit_edge, label %511, !llvm.loop !163 + +722: ; preds = %_ZN11OpenImageIO6v3_1_08DeepData13erase_samplesElii.exit, %32, %26 %.1 = phi i32 [ %29, %_ZN11OpenImageIO6v3_1_08DeepData13erase_samplesElii.exit ], [ %.0105, %32 ], [ %.0105, %26 ] - %725 = add nsw i32 %.1, 1 + %723 = add nsw i32 %.1, 1 br label %17, !llvm.loop !164 .loopexit: ; preds = %_ZNK11OpenImageIO6v3_1_08DeepData7samplesEl.exit, %2 diff --git a/bench/openssl/optimized/cipher_aes_cbc_hmac_sha1_hw.ll b/bench/openssl/optimized/cipher_aes_cbc_hmac_sha1_hw.ll index 0c6e4b63aac..376c2a4a1e2 100644 --- a/bench/openssl/optimized/cipher_aes_cbc_hmac_sha1_hw.ll +++ b/bench/openssl/optimized/cipher_aes_cbc_hmac_sha1_hw.ll @@ -78,7 +78,7 @@ define internal range(i32 0, 2) i32 @aesni_cbc_hmac_sha1_cipher(ptr noundef %0, store i64 -1, ptr %6, align 8, !tbaa !9 %13 = and i64 %3, 15 %.not = icmp eq i64 %13, 0 - br i1 %.not, label %14, label %492 + br i1 %.not, label %14, label %488 14: ; preds = %4 %15 = getelementptr inbounds nuw i8, ptr %0, i64 108 @@ -94,8 +94,8 @@ define internal range(i32 0, 2) i32 @aesni_cbc_hmac_sha1_cipher(ptr noundef %0, 20: ; preds = %18 %21 = add i64 %7, 36 %22 = and i64 %21, -16 - %.not382 = icmp eq i64 %3, %22 - br i1 %.not382, label %23, label %492 + %.not384 = icmp eq i64 %3, %22 + br i1 %.not384, label %23, label %488 23: ; preds = %20 %24 = getelementptr inbounds nuw i8, ptr %0, i64 448 @@ -113,8 +113,8 @@ define internal range(i32 0, 2) i32 @aesni_cbc_hmac_sha1_cipher(ptr noundef %0, 30: ; preds = %27 %31 = sub nuw i64 %.0343, %28 - %.not383 = icmp ult i64 %31, 64 - br i1 %.not383, label %79, label %32 + %.not385 = icmp ult i64 %31, 64 + br i1 %.not385, label %79, label %32 32: ; preds = %30 %33 = lshr i64 %31, 6 @@ -206,31 +206,31 @@ sha1_update.exit: ; preds = %59, %60 %81 = getelementptr inbounds nuw i8, ptr %2, i64 %80 %82 = sub i64 %.0343, %80 %83 = load i32, ptr %9, align 4, !tbaa !28 - %.not.i386 = icmp eq i32 %83, 0 - br i1 %.not.i386, label %90, label %84 + %.not.i388 = icmp eq i32 %83, 0 + br i1 %.not.i388, label %90, label %84 84: ; preds = %79 %85 = zext i32 %83 to i64 %86 = sub nsw i64 64, %85 - %spec.select.i387 = tail call i64 @llvm.umin.i64(i64 %82, i64 %86) - %87 = tail call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef %81, i64 noundef %spec.select.i387) #9 - %88 = getelementptr inbounds nuw i8, ptr %81, i64 %spec.select.i387 - %89 = sub i64 %82, %spec.select.i387 + %spec.select.i389 = tail call i64 @llvm.umin.i64(i64 %82, i64 %86) + %87 = tail call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef %81, i64 noundef %spec.select.i389) #9 + %88 = getelementptr inbounds nuw i8, ptr %81, i64 %spec.select.i389 + %89 = sub i64 %82, %spec.select.i389 br label %90 90: ; preds = %84, %79 - %.033.i388 = phi i64 [ %89, %84 ], [ %82, %79 ] - %.032.i389 = phi ptr [ %88, %84 ], [ %81, %79 ] - %91 = and i64 %.033.i388, 63 - %92 = and i64 %.033.i388, -64 - %.not39.i390 = icmp eq i64 %92, 0 - br i1 %.not39.i390, label %108, label %93 + %.033.i390 = phi i64 [ %89, %84 ], [ %82, %79 ] + %.032.i391 = phi ptr [ %88, %84 ], [ %81, %79 ] + %91 = and i64 %.033.i390, 63 + %92 = and i64 %.033.i390, -64 + %.not39.i392 = icmp eq i64 %92, 0 + br i1 %.not39.i392, label %108, label %93 93: ; preds = %90 - %94 = lshr i64 %.033.i388, 6 - tail call void @sha1_block_data_order(ptr noundef nonnull %8, ptr noundef %.032.i389, i64 noundef %94) #9 - %95 = getelementptr inbounds nuw i8, ptr %.032.i389, i64 %92 - %96 = lshr i64 %.033.i388, 29 + %94 = lshr i64 %.033.i390, 6 + tail call void @sha1_block_data_order(ptr noundef nonnull %8, ptr noundef %.032.i391, i64 noundef %94) #9 + %95 = getelementptr inbounds nuw i8, ptr %.032.i391, i64 %92 + %96 = lshr i64 %.033.i390, 29 %97 = getelementptr inbounds nuw i8, ptr %0, i64 720 %98 = load i32, ptr %97, align 4, !tbaa !24 %99 = trunc i64 %96 to i32 @@ -238,8 +238,8 @@ sha1_update.exit: ; preds = %59, %60 store i32 %100, ptr %97, align 4, !tbaa !24 %101 = getelementptr inbounds nuw i8, ptr %0, i64 716 %102 = load i32, ptr %101, align 4, !tbaa !25 - %.tr.i391 = trunc i64 %92 to i32 - %103 = shl i32 %.tr.i391, 3 + %.tr.i393 = trunc i64 %92 to i32 + %103 = shl i32 %.tr.i393, 3 %104 = add i32 %102, %103 store i32 %104, ptr %101, align 4, !tbaa !25 %105 = icmp ult i32 %104, %103 @@ -251,21 +251,21 @@ sha1_update.exit: ; preds = %59, %60 br label %108 108: ; preds = %106, %93, %90 - %.1.i392 = phi ptr [ %95, %106 ], [ %95, %93 ], [ %.032.i389, %90 ] - %.not40.i393 = icmp eq i64 %91, 0 - br i1 %.not40.i393, label %sha1_update.exit394, label %109 + %.1.i394 = phi ptr [ %95, %106 ], [ %95, %93 ], [ %.032.i391, %90 ] + %.not40.i395 = icmp eq i64 %91, 0 + br i1 %.not40.i395, label %sha1_update.exit396, label %109 109: ; preds = %108 - %110 = tail call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef %.1.i392, i64 noundef %91) #9 - br label %sha1_update.exit394 + %110 = tail call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef %.1.i394, i64 noundef %91) #9 + br label %sha1_update.exit396 -sha1_update.exit394: ; preds = %108, %109 - %.not384 = icmp eq i64 %.0343, %3 - br i1 %.not384, label %140, label %111 +sha1_update.exit396: ; preds = %108, %109 + %.not386 = icmp eq i64 %.0343, %3 + br i1 %.not386, label %140, label %111 -111: ; preds = %sha1_update.exit394 - %.not385 = icmp eq ptr %2, %1 - br i1 %.not385, label %116, label %112 +111: ; preds = %sha1_update.exit396 + %.not387 = icmp eq ptr %2, %1 + br i1 %.not387, label %116, label %112 112: ; preds = %111 %113 = getelementptr inbounds nuw i8, ptr %1, i64 %.0346 @@ -280,32 +280,32 @@ sha1_update.exit394: ; preds = %108, %109 %119 = getelementptr inbounds nuw i8, ptr %0, i64 600 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(96) %8, ptr noundef nonnull align 8 dereferenceable(96) %119, i64 96, i1 false), !tbaa.struct !7 %120 = load i32, ptr %9, align 4, !tbaa !28 - %.not.i395 = icmp eq i32 %120, 0 - br i1 %.not.i395, label %.thread443, label %121 + %.not.i397 = icmp eq i32 %120, 0 + br i1 %.not.i397, label %.thread445, label %121 121: ; preds = %116 %122 = zext i32 %120 to i64 %123 = sub nsw i64 64, %122 - %spec.select.i396 = tail call i64 @llvm.umin.i64(i64 %123, i64 20) - %124 = tail call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef %117, i64 noundef %spec.select.i396) #9 - %125 = getelementptr inbounds nuw i8, ptr %117, i64 %spec.select.i396 - %126 = sub nuw nsw i64 20, %spec.select.i396 - %.not40.i402 = icmp ugt i64 %123, 19 - br i1 %.not40.i402, label %sha1_update.exit403, label %.thread443 - -.thread443: ; preds = %116, %121 - %.1.i401446 = phi ptr [ %125, %121 ], [ %117, %116 ] + %spec.select.i398 = tail call i64 @llvm.umin.i64(i64 %123, i64 20) + %124 = tail call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef %117, i64 noundef %spec.select.i398) #9 + %125 = getelementptr inbounds nuw i8, ptr %117, i64 %spec.select.i398 + %126 = sub nuw nsw i64 20, %spec.select.i398 + %.not40.i404 = icmp ugt i64 %123, 19 + br i1 %.not40.i404, label %sha1_update.exit405, label %.thread445 + +.thread445: ; preds = %116, %121 + %.1.i403448 = phi ptr [ %125, %121 ], [ %117, %116 ] %127 = phi i64 [ %126, %121 ], [ 20, %116 ] - %128 = tail call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef %.1.i401446, i64 noundef %127) #9 - br label %sha1_update.exit403 + %128 = tail call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef %.1.i403448, i64 noundef %127) #9 + br label %sha1_update.exit405 -sha1_update.exit403: ; preds = %121, %.thread443 +sha1_update.exit405: ; preds = %121, %.thread445 %129 = tail call i32 @SHA1_Final(ptr noundef %117, ptr noundef nonnull %8) #9 %130 = add i64 %.0343, 20 %131 = icmp ult i64 %130, %3 br i1 %131, label %.lr.ph.preheader, label %._crit_edge -.lr.ph.preheader: ; preds = %sha1_update.exit403 +.lr.ph.preheader: ; preds = %sha1_update.exit405 %reass.sub = sub i64 %3, %.0343 %132 = trunc i64 %reass.sub to i8 %133 = add i8 %132, -21 @@ -315,22 +315,22 @@ sha1_update.exit403: ; preds = %121, %.thread443 tail call void @llvm.memset.p0.i64(ptr align 1 %scevgep, i8 %133, i64 %135, i1 false), !tbaa !8 br label %._crit_edge -._crit_edge: ; preds = %.lr.ph.preheader, %sha1_update.exit403 +._crit_edge: ; preds = %.lr.ph.preheader, %sha1_update.exit405 %136 = getelementptr inbounds nuw i8, ptr %1, i64 %.0346 %137 = sub i64 %3, %.0346 %138 = getelementptr inbounds nuw i8, ptr %0, i64 192 %139 = getelementptr inbounds nuw i8, ptr %0, i64 32 tail call void @aesni_cbc_encrypt(ptr noundef %136, ptr noundef %136, i64 noundef %137, ptr noundef nonnull %138, ptr noundef nonnull %139, i32 noundef 1) #9 - br label %492 + br label %488 -140: ; preds = %sha1_update.exit394 +140: ; preds = %sha1_update.exit396 %141 = getelementptr inbounds nuw i8, ptr %2, i64 %.0346 %142 = getelementptr inbounds nuw i8, ptr %1, i64 %.0346 %143 = sub i64 %3, %.0346 %144 = getelementptr inbounds nuw i8, ptr %0, i64 192 %145 = getelementptr inbounds nuw i8, ptr %0, i64 32 tail call void @aesni_cbc_encrypt(ptr noundef %141, ptr noundef %142, i64 noundef %143, ptr noundef nonnull %144, ptr noundef nonnull %145, i32 noundef 1) #9 - br label %492 + br label %488 146: ; preds = %14 call void @llvm.lifetime.start.p0(i64 52, ptr nonnull %5) #9 @@ -359,7 +359,7 @@ sha1_update.exit403: ; preds = %121, %.thread443 165: ; preds = %151 %166 = icmp ult i64 %3, 37 - br i1 %166, label %sha1_update.exit439.thread457, label %167 + br i1 %166, label %sha1_update.exit441.thread459, label %167 167: ; preds = %165 %168 = getelementptr inbounds nuw i8, ptr %0, i64 32 @@ -371,7 +371,7 @@ sha1_update.exit403: ; preds = %121, %.thread443 172: ; preds = %151 %173 = icmp ult i64 %3, 21 - br i1 %173, label %sha1_update.exit439.thread457, label %174 + br i1 %173, label %sha1_update.exit441.thread459, label %174 174: ; preds = %172, %167 %.0341 = phi i64 [ %171, %167 ], [ %3, %172 ] @@ -413,31 +413,31 @@ sha1_update.exit403: ; preds = %121, %.thread443 %204 = getelementptr inbounds nuw i8, ptr %0, i64 504 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(96) %8, ptr noundef nonnull align 8 dereferenceable(96) %204, i64 96, i1 false), !tbaa.struct !7 %205 = load i32, ptr %9, align 4, !tbaa !28 - %.not.i404 = icmp eq i32 %205, 0 - br i1 %.not.i404, label %212, label %206 + %.not.i406 = icmp eq i32 %205, 0 + br i1 %.not.i406, label %212, label %206 206: ; preds = %174 %207 = zext i32 %205 to i64 %208 = sub nsw i64 64, %207 - %spec.select.i405 = call i64 @llvm.umin.i64(i64 %7, i64 %208) - %209 = call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef nonnull %153, i64 noundef %spec.select.i405) #9 - %210 = getelementptr inbounds nuw i8, ptr %153, i64 %spec.select.i405 - %211 = sub i64 %7, %spec.select.i405 + %spec.select.i407 = call i64 @llvm.umin.i64(i64 %7, i64 %208) + %209 = call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef nonnull %153, i64 noundef %spec.select.i407) #9 + %210 = getelementptr inbounds nuw i8, ptr %153, i64 %spec.select.i407 + %211 = sub i64 %7, %spec.select.i407 br label %212 212: ; preds = %206, %174 - %.033.i406 = phi i64 [ %211, %206 ], [ %7, %174 ] - %.032.i407 = phi ptr [ %210, %206 ], [ %153, %174 ] - %213 = and i64 %.033.i406, 63 - %214 = and i64 %.033.i406, -64 - %.not39.i408 = icmp eq i64 %214, 0 - br i1 %.not39.i408, label %230, label %215 + %.033.i408 = phi i64 [ %211, %206 ], [ %7, %174 ] + %.032.i409 = phi ptr [ %210, %206 ], [ %153, %174 ] + %213 = and i64 %.033.i408, 63 + %214 = and i64 %.033.i408, -64 + %.not39.i410 = icmp eq i64 %214, 0 + br i1 %.not39.i410, label %230, label %215 215: ; preds = %212 - %216 = lshr i64 %.033.i406, 6 - call void @sha1_block_data_order(ptr noundef nonnull %8, ptr noundef nonnull %.032.i407, i64 noundef %216) #9 - %217 = getelementptr inbounds nuw i8, ptr %.032.i407, i64 %214 - %218 = lshr i64 %.033.i406, 29 + %216 = lshr i64 %.033.i408, 6 + call void @sha1_block_data_order(ptr noundef nonnull %8, ptr noundef nonnull %.032.i409, i64 noundef %216) #9 + %217 = getelementptr inbounds nuw i8, ptr %.032.i409, i64 %214 + %218 = lshr i64 %.033.i408, 29 %219 = getelementptr inbounds nuw i8, ptr %0, i64 720 %220 = load i32, ptr %219, align 4, !tbaa !24 %221 = trunc i64 %218 to i32 @@ -445,8 +445,8 @@ sha1_update.exit403: ; preds = %121, %.thread443 store i32 %222, ptr %219, align 4, !tbaa !24 %223 = getelementptr inbounds nuw i8, ptr %0, i64 716 %224 = load i32, ptr %223, align 4, !tbaa !25 - %.tr.i409 = trunc i64 %214 to i32 - %225 = shl i32 %.tr.i409, 3 + %.tr.i411 = trunc i64 %214 to i32 + %225 = shl i32 %.tr.i411, 3 %226 = add i32 %224, %225 store i32 %226, ptr %223, align 4, !tbaa !25 %227 = icmp ult i32 %226, %225 @@ -458,51 +458,51 @@ sha1_update.exit403: ; preds = %121, %.thread443 br label %230 230: ; preds = %228, %215, %212 - %.1.i410 = phi ptr [ %217, %228 ], [ %217, %215 ], [ %.032.i407, %212 ] - %.not40.i411 = icmp eq i64 %213, 0 - br i1 %.not40.i411, label %sha1_update.exit412, label %231 + %.1.i412 = phi ptr [ %217, %228 ], [ %217, %215 ], [ %.032.i409, %212 ] + %.not40.i413 = icmp eq i64 %213, 0 + br i1 %.not40.i413, label %sha1_update.exit414, label %231 231: ; preds = %230 - %232 = call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef nonnull %.1.i410, i64 noundef %213) #9 - br label %sha1_update.exit412 + %232 = call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef nonnull %.1.i412, i64 noundef %213) #9 + br label %sha1_update.exit414 -sha1_update.exit412: ; preds = %230, %231 +sha1_update.exit414: ; preds = %230, %231 %233 = add i64 %.0341, -20 %234 = icmp ugt i64 %233, 319 br i1 %234, label %235, label %272 -235: ; preds = %sha1_update.exit412 +235: ; preds = %sha1_update.exit414 %236 = add i64 %.0341, -340 %237 = and i64 %236, -64 %238 = load i32, ptr %9, align 4, !tbaa !21 %239 = sub i32 64, %238 %240 = zext i32 %239 to i64 %241 = add i64 %237, %240 - %.not.i413 = icmp eq i32 %238, 0 - br i1 %.not.i413, label %248, label %242 + %.not.i415 = icmp eq i32 %238, 0 + br i1 %.not.i415, label %248, label %242 242: ; preds = %235 %243 = zext i32 %238 to i64 %244 = sub nsw i64 64, %243 - %spec.select.i414 = call i64 @llvm.umin.i64(i64 %241, i64 %244) - %245 = call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef nonnull %.0338, i64 noundef %spec.select.i414) #9 - %246 = getelementptr inbounds nuw i8, ptr %.0338, i64 %spec.select.i414 - %247 = sub i64 %241, %spec.select.i414 + %spec.select.i416 = call i64 @llvm.umin.i64(i64 %241, i64 %244) + %245 = call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef nonnull %.0338, i64 noundef %spec.select.i416) #9 + %246 = getelementptr inbounds nuw i8, ptr %.0338, i64 %spec.select.i416 + %247 = sub i64 %241, %spec.select.i416 br label %248 248: ; preds = %242, %235 - %.033.i415 = phi i64 [ %247, %242 ], [ %241, %235 ] - %.032.i416 = phi ptr [ %246, %242 ], [ %.0338, %235 ] - %249 = and i64 %.033.i415, 63 - %250 = and i64 %.033.i415, -64 - %.not39.i417 = icmp eq i64 %250, 0 - br i1 %.not39.i417, label %266, label %251 + %.033.i417 = phi i64 [ %247, %242 ], [ %241, %235 ] + %.032.i418 = phi ptr [ %246, %242 ], [ %.0338, %235 ] + %249 = and i64 %.033.i417, 63 + %250 = and i64 %.033.i417, -64 + %.not39.i419 = icmp eq i64 %250, 0 + br i1 %.not39.i419, label %266, label %251 251: ; preds = %248 - %252 = lshr i64 %.033.i415, 6 - call void @sha1_block_data_order(ptr noundef nonnull %8, ptr noundef nonnull %.032.i416, i64 noundef %252) #9 - %253 = getelementptr inbounds nuw i8, ptr %.032.i416, i64 %250 - %254 = lshr i64 %.033.i415, 29 + %252 = lshr i64 %.033.i417, 6 + call void @sha1_block_data_order(ptr noundef nonnull %8, ptr noundef nonnull %.032.i418, i64 noundef %252) #9 + %253 = getelementptr inbounds nuw i8, ptr %.032.i418, i64 %250 + %254 = lshr i64 %.033.i417, 29 %255 = getelementptr inbounds nuw i8, ptr %0, i64 720 %256 = load i32, ptr %255, align 4, !tbaa !24 %257 = trunc i64 %254 to i32 @@ -510,8 +510,8 @@ sha1_update.exit412: ; preds = %230, %231 store i32 %258, ptr %255, align 4, !tbaa !24 %259 = getelementptr inbounds nuw i8, ptr %0, i64 716 %260 = load i32, ptr %259, align 4, !tbaa !25 - %.tr.i418 = trunc i64 %250 to i32 - %261 = shl i32 %.tr.i418, 3 + %.tr.i420 = trunc i64 %250 to i32 + %261 = shl i32 %.tr.i420, 3 %262 = add i32 %260, %261 store i32 %262, ptr %259, align 4, !tbaa !25 %263 = icmp ult i32 %262, %261 @@ -523,21 +523,21 @@ sha1_update.exit412: ; preds = %230, %231 br label %266 266: ; preds = %264, %251, %248 - %.1.i419 = phi ptr [ %253, %264 ], [ %253, %251 ], [ %.032.i416, %248 ] - %.not40.i420 = icmp eq i64 %249, 0 - br i1 %.not40.i420, label %sha1_update.exit421, label %267 + %.1.i421 = phi ptr [ %253, %264 ], [ %253, %251 ], [ %.032.i418, %248 ] + %.not40.i422 = icmp eq i64 %249, 0 + br i1 %.not40.i422, label %sha1_update.exit423, label %267 267: ; preds = %266 - %268 = call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef %.1.i419, i64 noundef %249) #9 - br label %sha1_update.exit421 + %268 = call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef %.1.i421, i64 noundef %249) #9 + br label %sha1_update.exit423 -sha1_update.exit421: ; preds = %266, %267 +sha1_update.exit423: ; preds = %266, %267 %269 = getelementptr inbounds nuw i8, ptr %.0338, i64 %241 %270 = sub i64 %233, %241 %271 = sub i64 %196, %241 br label %272 -272: ; preds = %sha1_update.exit421, %sha1_update.exit412 +272: ; preds = %sha1_update.exit423, %sha1_update.exit414 %.0350 = phi i64 [ %271, %sha1_update.exit421 ], [ %196, %sha1_update.exit412 ] %.1342 = phi i64 [ %270, %sha1_update.exit421 ], [ %233, %sha1_update.exit412 ] %.1339 = phi ptr [ %269, %sha1_update.exit421 ], [ %.0338, %sha1_update.exit412 ] @@ -553,10 +553,10 @@ sha1_update.exit421: ; preds = %266, %267 %281 = getelementptr inbounds nuw i8, ptr %150, i64 16 call void @llvm.memset.p0.i64(ptr noundef nonnull align 32 dereferenceable(20) %150, i8 0, i64 20, i1 false) %282 = load i32, ptr %9, align 4, !tbaa !21 - %.not475 = icmp eq i64 %.1342, 0 - br i1 %.not475, label %._crit_edge464, label %.lr.ph463 + %.not478 = icmp eq i64 %.1342, 0 + br i1 %.not478, label %._crit_edge467, label %.lr.ph466 -.lr.ph463: ; preds = %272 +.lr.ph466: ; preds = %272 %283 = add i64 %.0350, 7 %284 = getelementptr inbounds nuw i8, ptr %0, i64 784 %285 = getelementptr inbounds nuw i8, ptr %0, i64 700 @@ -565,42 +565,42 @@ sha1_update.exit421: ; preds = %266, %267 %288 = getelementptr inbounds nuw i8, ptr %0, i64 712 br label %289 -289: ; preds = %.lr.ph463, %336 - %.0351461 = phi i64 [ 0, %.lr.ph463 ], [ %337, %336 ] - %.0356460 = phi i32 [ %282, %.lr.ph463 ], [ %.1357, %336 ] - %290 = getelementptr inbounds nuw i8, ptr %.1339, i64 %.0351461 +289: ; preds = %.lr.ph466, %336 + %.0351464 = phi i64 [ 0, %.lr.ph463 ], [ %337, %336 ] + %.0356463 = phi i32 [ %282, %.lr.ph463 ], [ %.1357, %336 ] + %290 = getelementptr inbounds nuw i8, ptr %.1339, i64 %.0351464 %291 = load i8, ptr %290, align 1, !tbaa !8 %292 = zext i8 %291 to i64 - %293 = sub i64 %.0351461, %.0350 + %293 = sub i64 %.0351464, %.0350 %294 = lshr i64 %293, 56 %295 = and i64 %294, %292 %296 = and i64 %294, 128 %297 = xor i64 %296, 128 - %298 = sub i64 %.0350, %.0351461 + %298 = sub i64 %.0350, %.0351464 %299 = lshr i64 %298, 56 %300 = xor i64 %299, -1 %301 = and i64 %297, %300 %302 = or i64 %295, %301 %303 = trunc nuw i64 %302 to i8 - %304 = add i32 %.0356460, 1 - %305 = zext i32 %.0356460 to i64 + %304 = add i32 %.0356463, 1 + %305 = zext i32 %.0356463 to i64 %306 = getelementptr inbounds nuw [64 x i8], ptr %152, i64 0, i64 %305 store i8 %303, ptr %306, align 1, !tbaa !8 - %.not378 = icmp eq i32 %304, 64 - br i1 %.not378, label %307, label %336 + %.not380 = icmp eq i32 %304, 64 + br i1 %.not380, label %307, label %336 307: ; preds = %289 - %308 = sub i64 %283, %.0351461 - %.neg379 = ashr i64 %308, 63 + %308 = sub i64 %283, %.0351464 + %.neg381 = ashr i64 %308, 63 %309 = load i32, ptr %284, align 4, !tbaa !8 - %310 = trunc nsw i64 %.neg379 to i32 + %310 = trunc nsw i64 %.neg381 to i32 %311 = and i32 %277, %310 %312 = or i32 %309, %311 store i32 %312, ptr %284, align 4, !tbaa !8 call void @sha1_block_data_order(ptr noundef nonnull %8, ptr noundef nonnull %152, i64 noundef 1) #9 %313 = add i64 %293, -72 - %.neg379381 = and i64 %313, %308 - %314 = ashr i64 %.neg379381, 63 + %.neg381383 = and i64 %313, %308 + %314 = ashr i64 %.neg381383, 63 %315 = load i32, ptr %8, align 8, !tbaa !31 %316 = load i32, ptr %150, align 32, !tbaa !8 %317 = trunc nsw i64 %314 to i32 @@ -631,30 +631,30 @@ sha1_update.exit421: ; preds = %266, %267 336: ; preds = %289, %307 %.1357 = phi i32 [ 0, %307 ], [ %304, %289 ] - %337 = add nuw i64 %.0351461, 1 + %337 = add nuw i64 %.0351464, 1 %exitcond.not = icmp eq i64 %337, %.1342 - br i1 %exitcond.not, label %._crit_edge464, label %289, !llvm.loop !36 + br i1 %exitcond.not, label %._crit_edge467, label %289, !llvm.loop !36 -._crit_edge464: ; preds = %336, %272 +._crit_edge467: ; preds = %336, %272 %.0356.lcssa = phi i32 [ %282, %272 ], [ %.1357, %336 ] %338 = icmp ult i32 %.0356.lcssa, 64 - br i1 %338, label %._crit_edge470, label %._crit_edge470.thread + br i1 %338, label %._crit_edge473, label %._crit_edge473.thread -._crit_edge470: ; preds = %._crit_edge464 +._crit_edge473: ; preds = %._crit_edge467 %339 = zext nneg i32 %.0356.lcssa to i64 %340 = getelementptr i8, ptr %0, i64 %339 - %scevgep480 = getelementptr i8, ptr %340, i64 724 + %scevgep483 = getelementptr i8, ptr %340, i64 724 %341 = sub nuw nsw i64 64, %339 - call void @llvm.memset.p0.i64(ptr align 1 %scevgep480, i8 0, i64 %341, i1 false), !tbaa !8 + call void @llvm.memset.p0.i64(ptr align 1 %scevgep483, i8 0, i64 %341, i1 false), !tbaa !8 %342 = add i64 %.1342, 64 %343 = sub i64 %342, %339 %344 = icmp samesign ugt i32 %.0356.lcssa, 56 - br i1 %344, label %._crit_edge470.thread, label %380 + br i1 %344, label %._crit_edge473.thread, label %380 -._crit_edge470.thread: ; preds = %._crit_edge464, %._crit_edge470 - %.1352.lcssa483 = phi i64 [ %343, %._crit_edge470 ], [ %.1342, %._crit_edge464 ] +._crit_edge473.thread: ; preds = %._crit_edge467, %._crit_edge473 + %.1352.lcssa486 = phi i64 [ %343, %._crit_edge470 ], [ %.1342, %._crit_edge464 ] %345 = add i64 %.0350, 8 - %346 = sub i64 %345, %.1352.lcssa483 + %346 = sub i64 %345, %.1352.lcssa486 %.neg = ashr i64 %346, 63 %347 = getelementptr inbounds nuw i8, ptr %0, i64 784 %348 = load i32, ptr %347, align 4, !tbaa !8 @@ -663,8 +663,8 @@ sha1_update.exit421: ; preds = %266, %267 %351 = or i32 %348, %350 store i32 %351, ptr %347, align 4, !tbaa !8 call void @sha1_block_data_order(ptr noundef nonnull %8, ptr noundef nonnull %152, i64 noundef 1) #9 - %reass.sub476 = sub i64 %.1352.lcssa483, %.0350 - %352 = add i64 %reass.sub476, -73 + %reass.sub479 = sub i64 %.1352.lcssa486, %.0350 + %352 = add i64 %reass.sub479, -73 %.neg374 = and i64 %346, %352 %353 = ashr i64 %.neg374, 63 %354 = load i32, ptr %8, align 8, !tbaa !31 @@ -698,16 +698,16 @@ sha1_update.exit421: ; preds = %266, %267 %378 = or i32 %377, %376 store i32 %378, ptr %281, align 16, !tbaa !8 call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %152, i8 0, i64 60, i1 false) - %379 = add i64 %.1352.lcssa483, 64 + %379 = add i64 %.1352.lcssa486, 64 br label %380 -380: ; preds = %._crit_edge470.thread, %._crit_edge470 +380: ; preds = %._crit_edge473.thread, %._crit_edge473 %.2353 = phi i64 [ %379, %._crit_edge470.thread ], [ %343, %._crit_edge470 ] %381 = getelementptr inbounds nuw i8, ptr %0, i64 784 store i32 %277, ptr %381, align 4, !tbaa !8 call void @sha1_block_data_order(ptr noundef nonnull %8, ptr noundef nonnull %152, i64 noundef 1) #9 - %reass.sub477 = sub i64 %.2353, %.0350 - %382 = add i64 %reass.sub477, -73 + %reass.sub480 = sub i64 %.2353, %.0350 + %382 = add i64 %reass.sub480, -73 %.neg375 = ashr i64 %382, 63 %383 = load i32, ptr %8, align 8, !tbaa !31 %384 = load i32, ptr %150, align 32, !tbaa !8 @@ -751,26 +751,26 @@ sha1_update.exit421: ; preds = %266, %267 %413 = getelementptr inbounds nuw i8, ptr %0, i64 600 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(96) %8, ptr noundef nonnull align 8 dereferenceable(96) %413, i64 96, i1 false), !tbaa.struct !7 %414 = load i32, ptr %9, align 4, !tbaa !28 - %.not.i422 = icmp eq i32 %414, 0 - br i1 %.not.i422, label %.thread451, label %415 + %.not.i424 = icmp eq i32 %414, 0 + br i1 %.not.i424, label %.thread453, label %415 415: ; preds = %380 %416 = zext i32 %414 to i64 %417 = sub nsw i64 64, %416 - %spec.select.i423 = call i64 @llvm.umin.i64(i64 %417, i64 20) - %418 = call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef nonnull %150, i64 noundef %spec.select.i423) #9 - %419 = getelementptr inbounds nuw i8, ptr %150, i64 %spec.select.i423 - %420 = sub nuw nsw i64 20, %spec.select.i423 - %.not40.i429 = icmp ugt i64 %417, 19 - br i1 %.not40.i429, label %sha1_update.exit430, label %.thread451 - -.thread451: ; preds = %380, %415 - %.1.i428454 = phi ptr [ %419, %415 ], [ %150, %380 ] + %spec.select.i425 = call i64 @llvm.umin.i64(i64 %417, i64 20) + %418 = call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef nonnull %150, i64 noundef %spec.select.i425) #9 + %419 = getelementptr inbounds nuw i8, ptr %150, i64 %spec.select.i425 + %420 = sub nuw nsw i64 20, %spec.select.i425 + %.not40.i431 = icmp ugt i64 %417, 19 + br i1 %.not40.i431, label %sha1_update.exit432, label %.thread453 + +.thread453: ; preds = %380, %415 + %.1.i430456 = phi ptr [ %419, %415 ], [ %150, %380 ] %421 = phi i64 [ %420, %415 ], [ 20, %380 ] - %422 = call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef nonnull %.1.i428454, i64 noundef %421) #9 - br label %sha1_update.exit430 + %422 = call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef nonnull %.1.i430456, i64 noundef %421) #9 + br label %sha1_update.exit432 -sha1_update.exit430: ; preds = %415, %.thread451 +sha1_update.exit432: ; preds = %415, %.thread453 %423 = call i32 @SHA1_Final(ptr noundef nonnull %150, ptr noundef nonnull %8) #9 %424 = getelementptr inbounds nuw i8, ptr %.1339, i64 %.0350 %425 = getelementptr i8, ptr %.1339, i64 %.1342 @@ -786,11 +786,11 @@ sha1_update.exit430: ; preds = %415, %.thread451 %435 = zext nneg i32 %434 to i64 br label %436 -436: ; preds = %sha1_update.exit430, %436 - %.3474 = phi i64 [ 0, %sha1_update.exit430 ], [ %459, %436 ] - %.1355473 = phi i64 [ 0, %sha1_update.exit430 ], [ %458, %436 ] +436: ; preds = %sha1_update.exit432, %436 + %.1355476 = phi i64 [ 0, %sha1_update.exit430 ], [ %459, %436 ] + %.2358475 = phi i64 [ 0, %sha1_update.exit430 ], [ %458, %436 ] %.2358472 = phi i32 [ 0, %sha1_update.exit430 ], [ %455, %436 ] - %437 = getelementptr inbounds nuw i8, ptr %430, i64 %.3474 + %437 = getelementptr inbounds nuw i8, ptr %430, i64 %.1355476 %438 = load i8, ptr %437, align 1, !tbaa !8 %439 = zext i8 %438 to i32 %440 = sub i64 %.3474, %433 @@ -803,48 +803,48 @@ sha1_update.exit430: ; preds = %415, %.thread451 %446 = add i64 %433, %445 %447 = trunc i64 %446 to i32 %448 = and i32 %442, %447 - %449 = getelementptr inbounds nuw [52 x i8], ptr %150, i64 0, i64 %.1355473 + %449 = getelementptr inbounds nuw [52 x i8], ptr %150, i64 0, i64 %.2358475 %450 = load i8, ptr %449, align 1, !tbaa !8 %451 = xor i8 %450, %438 %452 = zext i8 %451 to i32 %isneg377 = icmp slt i32 %448, 0 %453 = select i1 %isneg377, i32 %452, i32 0 - %454 = or i32 %444, %.2358472 + %451 = or i32 %444, %.2358472 %455 = or i32 %454, %453 %456 = lshr i32 %448, 31 %457 = zext nneg i32 %456 to i64 - %458 = add i64 %.1355473, %457 - %459 = add nuw nsw i64 %.3474, 1 + %455 = add i64 %.1355473, %457 + %459 = add nuw nsw i64 %.1355476, 1 %exitcond481.not = icmp eq i64 %459, %435 br i1 %exitcond481.not, label %sha1_update.exit439, label %436, !llvm.loop !43 -460: ; preds = %146 - %461 = getelementptr inbounds nuw i8, ptr %0, i64 192 +460: ; preds = %146 + %458 = getelementptr inbounds nuw i8, ptr %0, i64 192 %462 = getelementptr inbounds nuw i8, ptr %0, i64 32 call void @aesni_cbc_encrypt(ptr noundef %2, ptr noundef %1, i64 noundef %3, ptr noundef nonnull %461, ptr noundef nonnull %462, i32 noundef 0) #9 %463 = load i32, ptr %9, align 4, !tbaa !28 %.not.i431 = icmp eq i32 %463, 0 br i1 %.not.i431, label %470, label %464 -464: ; preds = %460 +464:; preds = %460 %465 = zext i32 %463 to i64 %466 = sub nsw i64 64, %465 - %spec.select.i432 = call i64 @llvm.umin.i64(i64 %3, i64 %466) + %463 = call i64 @llvm.umin.i64(i64 %3, i64 %466) %467 = call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef %1, i64 noundef %spec.select.i432) #9 %468 = getelementptr inbounds nuw i8, ptr %1, i64 %spec.select.i432 - %469 = sub i64 %3, %spec.select.i432 + %469 = sub i64 %3, %463 br label %470 -470: ; preds = %464, %460 - %.033.i433 = phi i64 [ %469, %464 ], [ %3, %460 ] +470: ; preds = %464, %460 + %.032.i436 = phi i64 [ %469, %464 ], [ %3, %460 ] %.032.i434 = phi ptr [ %468, %464 ], [ %1, %460 ] - %471 = and i64 %.033.i433, 63 - %472 = and i64 %.033.i433, -64 + %468 = and i64 %.033.i433, 63 + %472 = and i64 %.032.i436, -64 %.not39.i435 = icmp eq i64 %472, 0 br i1 %.not39.i435, label %488, label %473 -473: ; preds = %470 - %474 = lshr i64 %.033.i433, 6 +473:; preds = %470 + %474 = lshr i64 %.032.i436, 6 call void @sha1_block_data_order(ptr noundef nonnull %8, ptr noundef %.032.i434, i64 noundef %474) #9 %475 = getelementptr inbounds nuw i8, ptr %.032.i434, i64 %472 %476 = lshr i64 %.033.i433, 29 @@ -857,8 +857,8 @@ sha1_update.exit430: ; preds = %415, %.thread451 %482 = load i32, ptr %481, align 4, !tbaa !25 %.tr.i436 = trunc i64 %472 to i32 %483 = shl i32 %.tr.i436, 3 - %484 = add i32 %482, %483 - store i32 %484, ptr %481, align 4, !tbaa !25 + %483 = add i32 %482, %483 + store i32 %483, ptr %481, align 4, !tbaa !25 %485 = icmp ult i32 %484, %483 br i1 %485, label %486, label %488 @@ -867,32 +867,32 @@ sha1_update.exit430: ; preds = %415, %.thread451 store i32 %487, ptr %477, align 4, !tbaa !24 br label %488 -488: ; preds = %486, %473, %470 - %.1.i437 = phi ptr [ %475, %486 ], [ %475, %473 ], [ %.032.i434, %470 ] - %.not40.i438 = icmp eq i64 %471, 0 - br i1 %.not40.i438, label %sha1_update.exit439.thread, label %489 +484: ; preds = %486, %473, %470 + %.1.i439 = phi ptr [ %475, %486 ], [ %475, %473 ], [ %.032.i434, %470 ] + %.not40.i440 = icmp eq i64 %471, 0 + br i1 %.not40.i440, label %sha1_update.exit441.thread, label %485 -489: ; preds = %488 - %490 = call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef %.1.i437, i64 noundef %471) #9 - br label %sha1_update.exit439.thread +485: ; preds = %484 + %486 = call i32 @SHA1_Update(ptr noundef nonnull %8, ptr noundef %.1.i439, i64 noundef %471) #9 + br label %sha1_update.exit441.thread -sha1_update.exit439.thread: ; preds = %489, %488 +sha1_update.exit441.thread: ; preds = %485, %484 call void @llvm.lifetime.end.p0(i64 52, ptr nonnull %5) #9 - br label %492 + br label %488 -sha1_update.exit439.thread457: ; preds = %165, %172 +sha1_update.exit441.thread459: ; preds = %165, %172 call void @llvm.lifetime.end.p0(i64 52, ptr nonnull %5) #9 - br label %492 + br label %488 -sha1_update.exit439: ; preds = %436 +sha1_update.exit441: ; preds = %436 %.inv = icmp slt i32 %455, 1 %narrow = select i1 %.inv, i1 %186, i1 false - %491 = zext i1 %narrow to i32 + %487 = zext i1 %narrow to i32 call void @llvm.lifetime.end.p0(i64 52, ptr nonnull %5) #9 - br label %492 + br label %488 -492: ; preds = %140, %._crit_edge, %sha1_update.exit439.thread, %sha1_update.exit439, %sha1_update.exit439.thread457, %20, %4 - %.0 = phi i32 [ %491, %sha1_update.exit439 ], [ 0, %4 ], [ 0, %20 ], [ 0, %sha1_update.exit439.thread457 ], [ 1, %sha1_update.exit439.thread ], [ 1, %._crit_edge ], [ 1, %140 ] +488: ; preds = %140, %._crit_edge, %sha1_update.exit441.thread, %sha1_update.exit441, %sha1_update.exit441.thread459, %20, %4 + %.0 = phi i32 [ %487, %sha1_update.exit439 ], [ 0, %4 ], [ 0, %20 ], [ 0, %sha1_update.exit439.thread457 ], [ 1, %sha1_update.exit439.thread ], [ 1, %._crit_edge ], [ 1, %140 ] ret i32 %.0 } diff --git a/bench/openssl/optimized/cipher_aes_cbc_hmac_sha256_hw.ll b/bench/openssl/optimized/cipher_aes_cbc_hmac_sha256_hw.ll index 3ff203b61f8..e225cd4a64d 100644 --- a/bench/openssl/optimized/cipher_aes_cbc_hmac_sha256_hw.ll +++ b/bench/openssl/optimized/cipher_aes_cbc_hmac_sha256_hw.ll @@ -93,7 +93,7 @@ define internal range(i32 0, 2) i32 @aesni_cbc_hmac_sha256_cipher(ptr noundef %0 store i64 -1, ptr %6, align 8, !tbaa !19 %13 = and i64 %3, 15 %.not = icmp eq i64 %13, 0 - br i1 %.not, label %14, label %548 + br i1 %.not, label %14, label %544 14: ; preds = %4 %15 = getelementptr inbounds nuw i8, ptr %0, i64 108 @@ -109,8 +109,8 @@ define internal range(i32 0, 2) i32 @aesni_cbc_hmac_sha256_cipher(ptr noundef %0 20: ; preds = %18 %21 = and i64 %7, -16 %22 = add i64 %21, 48 - %.not419 = icmp eq i64 %3, %22 - br i1 %.not419, label %23, label %548 + %.not421 = icmp eq i64 %3, %22 + br i1 %.not421, label %23, label %544 23: ; preds = %20 %24 = getelementptr inbounds nuw i8, ptr %0, i64 448 @@ -124,22 +124,22 @@ define internal range(i32 0, 2) i32 @aesni_cbc_hmac_sha256_cipher(ptr noundef %0 %.0379 = phi i64 [ %3, %18 ], [ %7, %23 ] %28 = load i32, ptr getelementptr inbounds nuw (i8, ptr @OPENSSL_ia32cap_P, i64 8), align 4, !tbaa !3 %29 = and i32 %28, 536870912 - %.not420 = icmp eq i32 %29, 0 - br i1 %.not420, label %30, label %38 + %.not422 = icmp eq i32 %29, 0 + br i1 %.not422, label %30, label %38 30: ; preds = %27 %31 = load i32, ptr getelementptr inbounds nuw (i8, ptr @OPENSSL_ia32cap_P, i64 4), align 4, !tbaa !3 %32 = and i32 %31, 268435456 - %.not421 = icmp eq i32 %32, 0 - br i1 %.not421, label %91, label %33 + %.not423 = icmp eq i32 %32, 0 + br i1 %.not423, label %91, label %33 33: ; preds = %30 %34 = and i32 %31, 2048 %35 = load i32, ptr @OPENSSL_ia32cap_P, align 4, !tbaa !3 %36 = and i32 %35, 1073741824 %37 = or disjoint i32 %36, %34 - %.not422 = icmp eq i32 %37, 0 - br i1 %.not422, label %91, label %38 + %.not424 = icmp eq i32 %37, 0 + br i1 %.not424, label %91, label %38 38: ; preds = %33, %27 %39 = add nuw nsw i64 %.0381, %12 @@ -148,8 +148,8 @@ define internal range(i32 0, 2) i32 @aesni_cbc_hmac_sha256_cipher(ptr noundef %0 41: ; preds = %38 %42 = sub nuw i64 %.0379, %39 - %.not423 = icmp ult i64 %42, 64 - br i1 %.not423, label %91, label %43 + %.not425 = icmp ult i64 %42, 64 + br i1 %.not425, label %91, label %43 43: ; preds = %41 %44 = lshr i64 %42, 6 @@ -241,31 +241,31 @@ sha256_update.exit: ; preds = %70, %71 %93 = getelementptr inbounds nuw i8, ptr %2, i64 %92 %94 = sub i64 %.0379, %92 %95 = load i32, ptr %9, align 4, !tbaa !29 - %.not.i427 = icmp eq i32 %95, 0 - br i1 %.not.i427, label %102, label %96 + %.not.i429 = icmp eq i32 %95, 0 + br i1 %.not.i429, label %102, label %96 96: ; preds = %91 %97 = zext i32 %95 to i64 %98 = sub nsw i64 64, %97 - %spec.select.i428 = tail call i64 @llvm.umin.i64(i64 %94, i64 %98) - %99 = tail call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef %93, i64 noundef %spec.select.i428) #8 - %100 = getelementptr inbounds nuw i8, ptr %93, i64 %spec.select.i428 - %101 = sub i64 %94, %spec.select.i428 + %spec.select.i430 = tail call i64 @llvm.umin.i64(i64 %94, i64 %98) + %99 = tail call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef %93, i64 noundef %spec.select.i430) #8 + %100 = getelementptr inbounds nuw i8, ptr %93, i64 %spec.select.i430 + %101 = sub i64 %94, %spec.select.i430 br label %102 102: ; preds = %96, %91 - %.033.i429 = phi i64 [ %101, %96 ], [ %94, %91 ] - %.032.i430 = phi ptr [ %100, %96 ], [ %93, %91 ] - %103 = and i64 %.033.i429, 63 - %104 = and i64 %.033.i429, -64 - %.not39.i431 = icmp eq i64 %104, 0 - br i1 %.not39.i431, label %120, label %105 + %.033.i431 = phi i64 [ %101, %96 ], [ %94, %91 ] + %.032.i432 = phi ptr [ %100, %96 ], [ %93, %91 ] + %103 = and i64 %.033.i431, 63 + %104 = and i64 %.033.i431, -64 + %.not39.i433 = icmp eq i64 %104, 0 + br i1 %.not39.i433, label %120, label %105 105: ; preds = %102 - %106 = lshr i64 %.033.i429, 6 - tail call void @sha256_block_data_order(ptr noundef nonnull %8, ptr noundef %.032.i430, i64 noundef %106) #8 - %107 = getelementptr inbounds nuw i8, ptr %.032.i430, i64 %104 - %108 = lshr i64 %.033.i429, 29 + %106 = lshr i64 %.033.i431, 6 + tail call void @sha256_block_data_order(ptr noundef nonnull %8, ptr noundef %.032.i432, i64 noundef %106) #8 + %107 = getelementptr inbounds nuw i8, ptr %.032.i432, i64 %104 + %108 = lshr i64 %.033.i431, 29 %109 = getelementptr inbounds nuw i8, ptr %0, i64 764 %110 = load i32, ptr %109, align 4, !tbaa !25 %111 = trunc i64 %108 to i32 @@ -273,8 +273,8 @@ sha256_update.exit: ; preds = %70, %71 store i32 %112, ptr %109, align 4, !tbaa !25 %113 = getelementptr inbounds nuw i8, ptr %0, i64 760 %114 = load i32, ptr %113, align 4, !tbaa !26 - %.tr.i432 = trunc i64 %104 to i32 - %115 = shl i32 %.tr.i432, 3 + %.tr.i434 = trunc i64 %104 to i32 + %115 = shl i32 %.tr.i434, 3 %116 = add i32 %114, %115 store i32 %116, ptr %113, align 4, !tbaa !26 %117 = icmp ult i32 %116, %115 @@ -286,21 +286,21 @@ sha256_update.exit: ; preds = %70, %71 br label %120 120: ; preds = %118, %105, %102 - %.1.i433 = phi ptr [ %107, %118 ], [ %107, %105 ], [ %.032.i430, %102 ] - %.not40.i434 = icmp eq i64 %103, 0 - br i1 %.not40.i434, label %sha256_update.exit435, label %121 + %.1.i435 = phi ptr [ %107, %118 ], [ %107, %105 ], [ %.032.i432, %102 ] + %.not40.i436 = icmp eq i64 %103, 0 + br i1 %.not40.i436, label %sha256_update.exit437, label %121 121: ; preds = %120 - %122 = tail call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef %.1.i433, i64 noundef %103) #8 - br label %sha256_update.exit435 + %122 = tail call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef %.1.i435, i64 noundef %103) #8 + br label %sha256_update.exit437 -sha256_update.exit435: ; preds = %120, %121 - %.not424 = icmp eq i64 %.0379, %3 - br i1 %.not424, label %152, label %123 +sha256_update.exit437: ; preds = %120, %121 + %.not426 = icmp eq i64 %.0379, %3 + br i1 %.not426, label %152, label %123 -123: ; preds = %sha256_update.exit435 - %.not425 = icmp eq ptr %2, %1 - br i1 %.not425, label %128, label %124 +123: ; preds = %sha256_update.exit437 + %.not427 = icmp eq ptr %2, %1 + br i1 %.not427, label %128, label %124 124: ; preds = %123 %125 = getelementptr inbounds nuw i8, ptr %1, i64 %.0383 @@ -315,32 +315,32 @@ sha256_update.exit435: ; preds = %120, %121 %131 = getelementptr inbounds nuw i8, ptr %0, i64 616 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(112) %8, ptr noundef nonnull align 8 dereferenceable(112) %131, i64 112, i1 false), !tbaa.struct !17 %132 = load i32, ptr %9, align 4, !tbaa !29 - %.not.i436 = icmp eq i32 %132, 0 - br i1 %.not.i436, label %.thread484, label %133 + %.not.i438 = icmp eq i32 %132, 0 + br i1 %.not.i438, label %.thread486, label %133 133: ; preds = %128 %134 = zext i32 %132 to i64 %135 = sub nsw i64 64, %134 - %spec.select.i437 = tail call i64 @llvm.umin.i64(i64 %135, i64 32) - %136 = tail call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef %129, i64 noundef %spec.select.i437) #8 - %137 = getelementptr inbounds nuw i8, ptr %129, i64 %spec.select.i437 - %138 = sub nuw nsw i64 32, %spec.select.i437 - %.not40.i443 = icmp ugt i64 %135, 31 - br i1 %.not40.i443, label %sha256_update.exit444, label %.thread484 - -.thread484: ; preds = %128, %133 - %.1.i442487 = phi ptr [ %137, %133 ], [ %129, %128 ] + %spec.select.i439 = tail call i64 @llvm.umin.i64(i64 %135, i64 32) + %136 = tail call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef %129, i64 noundef %spec.select.i439) #8 + %137 = getelementptr inbounds nuw i8, ptr %129, i64 %spec.select.i439 + %138 = sub nuw nsw i64 32, %spec.select.i439 + %.not40.i445 = icmp ugt i64 %135, 31 + br i1 %.not40.i445, label %sha256_update.exit446, label %.thread486 + +.thread486: ; preds = %128, %133 + %.1.i444489 = phi ptr [ %137, %133 ], [ %129, %128 ] %139 = phi i64 [ %138, %133 ], [ 32, %128 ] - %140 = tail call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef %.1.i442487, i64 noundef %139) #8 - br label %sha256_update.exit444 + %140 = tail call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef %.1.i444489, i64 noundef %139) #8 + br label %sha256_update.exit446 -sha256_update.exit444: ; preds = %133, %.thread484 +sha256_update.exit446: ; preds = %133, %.thread486 %141 = tail call i32 @SHA256_Final(ptr noundef %129, ptr noundef nonnull %8) #8 %142 = add i64 %.0379, 32 %143 = icmp ult i64 %142, %3 br i1 %143, label %.lr.ph.preheader, label %._crit_edge -.lr.ph.preheader: ; preds = %sha256_update.exit444 +.lr.ph.preheader: ; preds = %sha256_update.exit446 %reass.sub = sub i64 %3, %.0379 %144 = trunc i64 %reass.sub to i8 %145 = add i8 %144, -33 @@ -350,22 +350,22 @@ sha256_update.exit444: ; preds = %133, %.thread484 tail call void @llvm.memset.p0.i64(ptr align 1 %scevgep, i8 %145, i64 %147, i1 false), !tbaa !18 br label %._crit_edge -._crit_edge: ; preds = %.lr.ph.preheader, %sha256_update.exit444 +._crit_edge: ; preds = %.lr.ph.preheader, %sha256_update.exit446 %148 = getelementptr inbounds nuw i8, ptr %1, i64 %.0383 %149 = sub i64 %3, %.0383 %150 = getelementptr inbounds nuw i8, ptr %0, i64 192 %151 = getelementptr inbounds nuw i8, ptr %0, i64 32 tail call void @aesni_cbc_encrypt(ptr noundef %148, ptr noundef %148, i64 noundef %149, ptr noundef nonnull %150, ptr noundef nonnull %151, i32 noundef 1) #8 - br label %548 + br label %544 -152: ; preds = %sha256_update.exit435 +152: ; preds = %sha256_update.exit437 %153 = getelementptr inbounds nuw i8, ptr %2, i64 %.0383 %154 = getelementptr inbounds nuw i8, ptr %1, i64 %.0383 %155 = sub i64 %3, %.0383 %156 = getelementptr inbounds nuw i8, ptr %0, i64 192 %157 = getelementptr inbounds nuw i8, ptr %0, i64 32 tail call void @aesni_cbc_encrypt(ptr noundef %153, ptr noundef %154, i64 noundef %155, ptr noundef nonnull %156, ptr noundef nonnull %157, i32 noundef 1) #8 - br label %548 + br label %544 158: ; preds = %14 call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %5) #8 @@ -393,18 +393,18 @@ sha256_update.exit444: ; preds = %133, %.thread484 %176 = zext i8 %175 to i32 %177 = or disjoint i32 %172, %176 %178 = icmp samesign ugt i32 %177, 769 - %spec.select426 = select i1 %178, i64 16, i64 0 - %179 = or disjoint i64 %spec.select426, 33 + %spec.select428 = select i1 %178, i64 16, i64 0 + %179 = or disjoint i64 %spec.select428, 33 %180 = icmp ult i64 %3, %179 - br i1 %180, label %sha256_update.exit480.thread497, label %181 + br i1 %180, label %sha256_update.exit482.thread499, label %181 -sha256_update.exit480.thread497: ; preds = %165 +sha256_update.exit482.thread499: ; preds = %165 call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %5) #8 - br label %548 + br label %544 181: ; preds = %165 - %182 = getelementptr inbounds nuw i8, ptr %1, i64 %spec.select426 - %183 = sub nuw i64 %3, %spec.select426 + %182 = getelementptr inbounds nuw i8, ptr %1, i64 %spec.select428 + %183 = sub nuw i64 %3, %spec.select428 %184 = getelementptr i8, ptr %1, i64 %3 %185 = getelementptr i8, ptr %184, i64 -1 %186 = load i8, ptr %185, align 1, !tbaa !18 @@ -438,31 +438,31 @@ sha256_update.exit480.thread497: ; preds = %165 %211 = getelementptr inbounds nuw i8, ptr %0, i64 504 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(112) %8, ptr noundef nonnull align 8 dereferenceable(112) %211, i64 112, i1 false), !tbaa.struct !17 %212 = load i32, ptr %9, align 4, !tbaa !29 - %.not.i445 = icmp eq i32 %212, 0 - br i1 %.not.i445, label %219, label %213 + %.not.i447 = icmp eq i32 %212, 0 + br i1 %.not.i447, label %219, label %213 213: ; preds = %181 %214 = zext i32 %212 to i64 %215 = sub nsw i64 64, %214 - %spec.select.i446 = call i64 @llvm.umin.i64(i64 %7, i64 %215) - %216 = call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef nonnull %167, i64 noundef %spec.select.i446) #8 - %217 = getelementptr inbounds nuw i8, ptr %167, i64 %spec.select.i446 - %218 = sub i64 %7, %spec.select.i446 + %spec.select.i448 = call i64 @llvm.umin.i64(i64 %7, i64 %215) + %216 = call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef nonnull %167, i64 noundef %spec.select.i448) #8 + %217 = getelementptr inbounds nuw i8, ptr %167, i64 %spec.select.i448 + %218 = sub i64 %7, %spec.select.i448 br label %219 219: ; preds = %213, %181 - %.033.i447 = phi i64 [ %218, %213 ], [ %7, %181 ] - %.032.i448 = phi ptr [ %217, %213 ], [ %167, %181 ] - %220 = and i64 %.033.i447, 63 - %221 = and i64 %.033.i447, -64 - %.not39.i449 = icmp eq i64 %221, 0 - br i1 %.not39.i449, label %237, label %222 + %.033.i449 = phi i64 [ %218, %213 ], [ %7, %181 ] + %.032.i450 = phi ptr [ %217, %213 ], [ %167, %181 ] + %220 = and i64 %.033.i449, 63 + %221 = and i64 %.033.i449, -64 + %.not39.i451 = icmp eq i64 %221, 0 + br i1 %.not39.i451, label %237, label %222 222: ; preds = %219 - %223 = lshr i64 %.033.i447, 6 - call void @sha256_block_data_order(ptr noundef nonnull %8, ptr noundef nonnull %.032.i448, i64 noundef %223) #8 - %224 = getelementptr inbounds nuw i8, ptr %.032.i448, i64 %221 - %225 = lshr i64 %.033.i447, 29 + %223 = lshr i64 %.033.i449, 6 + call void @sha256_block_data_order(ptr noundef nonnull %8, ptr noundef nonnull %.032.i450, i64 noundef %223) #8 + %224 = getelementptr inbounds nuw i8, ptr %.032.i450, i64 %221 + %225 = lshr i64 %.033.i449, 29 %226 = getelementptr inbounds nuw i8, ptr %0, i64 764 %227 = load i32, ptr %226, align 4, !tbaa !25 %228 = trunc i64 %225 to i32 @@ -470,8 +470,8 @@ sha256_update.exit480.thread497: ; preds = %165 store i32 %229, ptr %226, align 4, !tbaa !25 %230 = getelementptr inbounds nuw i8, ptr %0, i64 760 %231 = load i32, ptr %230, align 4, !tbaa !26 - %.tr.i450 = trunc i64 %221 to i32 - %232 = shl i32 %.tr.i450, 3 + %.tr.i452 = trunc i64 %221 to i32 + %232 = shl i32 %.tr.i452, 3 %233 = add i32 %231, %232 store i32 %233, ptr %230, align 4, !tbaa !26 %234 = icmp ult i32 %233, %232 @@ -483,51 +483,51 @@ sha256_update.exit480.thread497: ; preds = %165 br label %237 237: ; preds = %235, %222, %219 - %.1.i451 = phi ptr [ %224, %235 ], [ %224, %222 ], [ %.032.i448, %219 ] - %.not40.i452 = icmp eq i64 %220, 0 - br i1 %.not40.i452, label %sha256_update.exit453, label %238 + %.1.i453 = phi ptr [ %224, %235 ], [ %224, %222 ], [ %.032.i450, %219 ] + %.not40.i454 = icmp eq i64 %220, 0 + br i1 %.not40.i454, label %sha256_update.exit455, label %238 238: ; preds = %237 - %239 = call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef nonnull %.1.i451, i64 noundef %220) #8 - br label %sha256_update.exit453 + %239 = call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef nonnull %.1.i453, i64 noundef %220) #8 + br label %sha256_update.exit455 -sha256_update.exit453: ; preds = %237, %238 +sha256_update.exit455: ; preds = %237, %238 %240 = add i64 %183, -32 %241 = icmp ugt i64 %240, 319 br i1 %241, label %242, label %279 -242: ; preds = %sha256_update.exit453 +242: ; preds = %sha256_update.exit455 %243 = add i64 %183, -352 %244 = and i64 %243, -64 %245 = load i32, ptr %9, align 8, !tbaa !22 %246 = sub i32 64, %245 %247 = zext i32 %246 to i64 %248 = add i64 %244, %247 - %.not.i454 = icmp eq i32 %245, 0 - br i1 %.not.i454, label %255, label %249 + %.not.i456 = icmp eq i32 %245, 0 + br i1 %.not.i456, label %255, label %249 249: ; preds = %242 %250 = zext i32 %245 to i64 %251 = sub nsw i64 64, %250 - %spec.select.i455 = call i64 @llvm.umin.i64(i64 %248, i64 %251) - %252 = call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef nonnull %182, i64 noundef %spec.select.i455) #8 - %253 = getelementptr inbounds nuw i8, ptr %182, i64 %spec.select.i455 - %254 = sub i64 %248, %spec.select.i455 + %spec.select.i457 = call i64 @llvm.umin.i64(i64 %248, i64 %251) + %252 = call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef nonnull %182, i64 noundef %spec.select.i457) #8 + %253 = getelementptr inbounds nuw i8, ptr %182, i64 %spec.select.i457 + %254 = sub i64 %248, %spec.select.i457 br label %255 255: ; preds = %249, %242 - %.033.i456 = phi i64 [ %254, %249 ], [ %248, %242 ] - %.032.i457 = phi ptr [ %253, %249 ], [ %182, %242 ] - %256 = and i64 %.033.i456, 63 - %257 = and i64 %.033.i456, -64 - %.not39.i458 = icmp eq i64 %257, 0 - br i1 %.not39.i458, label %273, label %258 + %.033.i458 = phi i64 [ %254, %249 ], [ %248, %242 ] + %.032.i459 = phi ptr [ %253, %249 ], [ %182, %242 ] + %256 = and i64 %.033.i458, 63 + %257 = and i64 %.033.i458, -64 + %.not39.i460 = icmp eq i64 %257, 0 + br i1 %.not39.i460, label %273, label %258 258: ; preds = %255 - %259 = lshr i64 %.033.i456, 6 - call void @sha256_block_data_order(ptr noundef nonnull %8, ptr noundef nonnull %.032.i457, i64 noundef %259) #8 - %260 = getelementptr inbounds nuw i8, ptr %.032.i457, i64 %257 - %261 = lshr i64 %.033.i456, 29 + %259 = lshr i64 %.033.i458, 6 + call void @sha256_block_data_order(ptr noundef nonnull %8, ptr noundef nonnull %.032.i459, i64 noundef %259) #8 + %260 = getelementptr inbounds nuw i8, ptr %.032.i459, i64 %257 + %261 = lshr i64 %.033.i458, 29 %262 = getelementptr inbounds nuw i8, ptr %0, i64 764 %263 = load i32, ptr %262, align 4, !tbaa !25 %264 = trunc i64 %261 to i32 @@ -535,8 +535,8 @@ sha256_update.exit453: ; preds = %237, %238 store i32 %265, ptr %262, align 4, !tbaa !25 %266 = getelementptr inbounds nuw i8, ptr %0, i64 760 %267 = load i32, ptr %266, align 4, !tbaa !26 - %.tr.i459 = trunc i64 %257 to i32 - %268 = shl i32 %.tr.i459, 3 + %.tr.i461 = trunc i64 %257 to i32 + %268 = shl i32 %.tr.i461, 3 %269 = add i32 %267, %268 store i32 %269, ptr %266, align 4, !tbaa !26 %270 = icmp ult i32 %269, %268 @@ -548,21 +548,21 @@ sha256_update.exit453: ; preds = %237, %238 br label %273 273: ; preds = %271, %258, %255 - %.1.i460 = phi ptr [ %260, %271 ], [ %260, %258 ], [ %.032.i457, %255 ] - %.not40.i461 = icmp eq i64 %256, 0 - br i1 %.not40.i461, label %sha256_update.exit462, label %274 + %.1.i462 = phi ptr [ %260, %271 ], [ %260, %258 ], [ %.032.i459, %255 ] + %.not40.i463 = icmp eq i64 %256, 0 + br i1 %.not40.i463, label %sha256_update.exit464, label %274 274: ; preds = %273 - %275 = call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef %.1.i460, i64 noundef %256) #8 - br label %sha256_update.exit462 + %275 = call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef %.1.i462, i64 noundef %256) #8 + br label %sha256_update.exit464 -sha256_update.exit462: ; preds = %273, %274 +sha256_update.exit464: ; preds = %273, %274 %276 = getelementptr inbounds nuw i8, ptr %182, i64 %248 %277 = sub i64 %240, %248 %278 = sub i64 %203, %248 br label %279 -279: ; preds = %sha256_update.exit462, %sha256_update.exit453 +279: ; preds = %sha256_update.exit464, %sha256_update.exit455 %.0387 = phi i64 [ %278, %sha256_update.exit462 ], [ %203, %sha256_update.exit453 ] %.0378 = phi i64 [ %277, %sha256_update.exit462 ], [ %240, %sha256_update.exit453 ] %.0377 = phi ptr [ %276, %sha256_update.exit462 ], [ %182, %sha256_update.exit453 ] @@ -581,10 +581,10 @@ sha256_update.exit462: ; preds = %273, %274 %291 = getelementptr inbounds nuw i8, ptr %162, i64 28 call void @llvm.memset.p0.i64(ptr noundef nonnull align 64 dereferenceable(32) %162, i8 0, i64 32, i1 false) %292 = load i32, ptr %9, align 8, !tbaa !22 - %.not515 = icmp eq i64 %.0378, 0 - br i1 %.not515, label %._crit_edge504, label %.lr.ph503 + %.not518 = icmp eq i64 %.0378, 0 + br i1 %.not518, label %._crit_edge507, label %.lr.ph506 -.lr.ph503: ; preds = %279 +.lr.ph506: ; preds = %279 %293 = add i64 %.0387, 7 %294 = getelementptr inbounds nuw i8, ptr %0, i64 828 %295 = getelementptr inbounds nuw i8, ptr %0, i64 732 @@ -596,42 +596,42 @@ sha256_update.exit462: ; preds = %273, %274 %301 = getelementptr inbounds nuw i8, ptr %0, i64 756 br label %302 -302: ; preds = %.lr.ph503, %361 - %.0388501 = phi i64 [ 0, %.lr.ph503 ], [ %362, %361 ] - %.0393500 = phi i32 [ %292, %.lr.ph503 ], [ %.1394, %361 ] - %303 = getelementptr inbounds nuw i8, ptr %.0377, i64 %.0388501 +302: ; preds = %.lr.ph506, %361 + %.0388504 = phi i64 [ 0, %.lr.ph503 ], [ %362, %361 ] + %.0393503 = phi i32 [ %292, %.lr.ph503 ], [ %.1394, %361 ] + %303 = getelementptr inbounds nuw i8, ptr %.0377, i64 %.0388504 %304 = load i8, ptr %303, align 1, !tbaa !18 %305 = zext i8 %304 to i64 - %306 = sub i64 %.0388501, %.0387 + %306 = sub i64 %.0388504, %.0387 %307 = lshr i64 %306, 56 %308 = and i64 %307, %305 %309 = and i64 %307, 128 %310 = xor i64 %309, 128 - %311 = sub i64 %.0387, %.0388501 + %311 = sub i64 %.0387, %.0388504 %312 = lshr i64 %311, 56 %313 = xor i64 %312, -1 %314 = and i64 %310, %313 %315 = or i64 %308, %314 %316 = trunc nuw i64 %315 to i8 - %317 = add i32 %.0393500, 1 - %318 = zext i32 %.0393500 to i64 + %317 = add i32 %.0393503, 1 + %318 = zext i32 %.0393503 to i64 %319 = getelementptr inbounds nuw [64 x i8], ptr %166, i64 0, i64 %318 store i8 %316, ptr %319, align 1, !tbaa !18 - %.not415 = icmp eq i32 %317, 64 - br i1 %.not415, label %320, label %361 + %.not417 = icmp eq i32 %317, 64 + br i1 %.not417, label %320, label %361 320: ; preds = %302 - %321 = sub i64 %293, %.0388501 - %.neg416 = ashr i64 %321, 63 + %321 = sub i64 %293, %.0388504 + %.neg418 = ashr i64 %321, 63 %322 = load i32, ptr %294, align 4, !tbaa !18 - %323 = trunc nsw i64 %.neg416 to i32 + %323 = trunc nsw i64 %.neg418 to i32 %324 = and i32 %284, %323 %325 = or i32 %322, %324 store i32 %325, ptr %294, align 4, !tbaa !18 call void @sha256_block_data_order(ptr noundef nonnull %8, ptr noundef nonnull %166, i64 noundef 1) #8 %326 = add i64 %306, -72 - %.neg416418 = and i64 %326, %321 - %327 = ashr i64 %.neg416418, 63 + %.neg418420 = and i64 %326, %321 + %327 = ashr i64 %.neg418420, 63 %328 = load i32, ptr %8, align 8, !tbaa !3 %329 = load i32, ptr %162, align 64, !tbaa !18 %330 = trunc nsw i64 %327 to i32 @@ -677,30 +677,30 @@ sha256_update.exit462: ; preds = %273, %274 361: ; preds = %302, %320 %.1394 = phi i32 [ 0, %320 ], [ %317, %302 ] - %362 = add nuw i64 %.0388501, 1 + %362 = add nuw i64 %.0388504, 1 %exitcond.not = icmp eq i64 %362, %.0378 - br i1 %exitcond.not, label %._crit_edge504, label %302, !llvm.loop !32 + br i1 %exitcond.not, label %._crit_edge507, label %302, !llvm.loop !32 -._crit_edge504: ; preds = %361, %279 +._crit_edge507: ; preds = %361, %279 %.0393.lcssa = phi i32 [ %292, %279 ], [ %.1394, %361 ] %363 = icmp ult i32 %.0393.lcssa, 64 - br i1 %363, label %._crit_edge510, label %._crit_edge510.thread + br i1 %363, label %._crit_edge513, label %._crit_edge513.thread -._crit_edge510: ; preds = %._crit_edge504 +._crit_edge513: ; preds = %._crit_edge507 %364 = zext nneg i32 %.0393.lcssa to i64 %365 = getelementptr i8, ptr %0, i64 %364 - %scevgep520 = getelementptr i8, ptr %365, i64 768 + %scevgep523 = getelementptr i8, ptr %365, i64 768 %366 = sub nuw nsw i64 64, %364 - call void @llvm.memset.p0.i64(ptr align 1 %scevgep520, i8 0, i64 %366, i1 false), !tbaa !18 + call void @llvm.memset.p0.i64(ptr align 1 %scevgep523, i8 0, i64 %366, i1 false), !tbaa !18 %367 = add i64 %.0378, 64 %368 = sub i64 %367, %364 %369 = icmp samesign ugt i32 %.0393.lcssa, 56 - br i1 %369, label %._crit_edge510.thread, label %420 + br i1 %369, label %._crit_edge513.thread, label %420 -._crit_edge510.thread: ; preds = %._crit_edge504, %._crit_edge510 - %.1389.lcssa523 = phi i64 [ %368, %._crit_edge510 ], [ %.0378, %._crit_edge504 ] +._crit_edge513.thread: ; preds = %._crit_edge507, %._crit_edge513 + %.1389.lcssa526 = phi i64 [ %368, %._crit_edge510 ], [ %.0378, %._crit_edge504 ] %370 = add i64 %.0387, 8 - %371 = sub i64 %370, %.1389.lcssa523 + %371 = sub i64 %370, %.1389.lcssa526 %.neg = ashr i64 %371, 63 %372 = getelementptr inbounds nuw i8, ptr %0, i64 828 %373 = load i32, ptr %372, align 4, !tbaa !18 @@ -709,8 +709,8 @@ sha256_update.exit462: ; preds = %273, %274 %376 = or i32 %373, %375 store i32 %376, ptr %372, align 4, !tbaa !18 call void @sha256_block_data_order(ptr noundef nonnull %8, ptr noundef nonnull %166, i64 noundef 1) #8 - %reass.sub516 = sub i64 %.1389.lcssa523, %.0387 - %377 = add i64 %reass.sub516, -73 + %reass.sub519 = sub i64 %.1389.lcssa526, %.0387 + %377 = add i64 %reass.sub519, -73 %.neg411 = and i64 %371, %377 %378 = ashr i64 %.neg411, 63 %379 = load i32, ptr %8, align 8, !tbaa !3 @@ -762,16 +762,16 @@ sha256_update.exit462: ; preds = %273, %274 %418 = or i32 %417, %416 store i32 %418, ptr %291, align 4, !tbaa !18 call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %166, i8 0, i64 60, i1 false) - %419 = add i64 %.1389.lcssa523, 64 + %419 = add i64 %.1389.lcssa526, 64 br label %420 -420: ; preds = %._crit_edge510.thread, %._crit_edge510 +420: ; preds = %._crit_edge513.thread, %._crit_edge513 %.2390 = phi i64 [ %419, %._crit_edge510.thread ], [ %368, %._crit_edge510 ] %421 = getelementptr inbounds nuw i8, ptr %0, i64 828 store i32 %284, ptr %421, align 4, !tbaa !18 call void @sha256_block_data_order(ptr noundef nonnull %8, ptr noundef nonnull %166, i64 noundef 1) #8 - %reass.sub517 = sub i64 %.2390, %.0387 - %422 = add i64 %reass.sub517, -73 + %reass.sub520 = sub i64 %.2390, %.0387 + %422 = add i64 %reass.sub520, -73 %.neg412 = ashr i64 %422, 63 %423 = load i32, ptr %8, align 8, !tbaa !3 %424 = load i32, ptr %162, align 64, !tbaa !18 @@ -839,26 +839,26 @@ sha256_update.exit462: ; preds = %273, %274 %471 = getelementptr inbounds nuw i8, ptr %0, i64 616 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(112) %8, ptr noundef nonnull align 8 dereferenceable(112) %471, i64 112, i1 false), !tbaa.struct !17 %472 = load i32, ptr %9, align 4, !tbaa !29 - %.not.i463 = icmp eq i32 %472, 0 - br i1 %.not.i463, label %.thread492, label %473 + %.not.i465 = icmp eq i32 %472, 0 + br i1 %.not.i465, label %.thread494, label %473 473: ; preds = %420 %474 = zext i32 %472 to i64 %475 = sub nsw i64 64, %474 - %spec.select.i464 = call i64 @llvm.umin.i64(i64 %475, i64 32) - %476 = call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef nonnull %162, i64 noundef %spec.select.i464) #8 - %477 = getelementptr inbounds nuw i8, ptr %162, i64 %spec.select.i464 - %478 = sub nuw nsw i64 32, %spec.select.i464 - %.not40.i470 = icmp ugt i64 %475, 31 - br i1 %.not40.i470, label %sha256_update.exit471, label %.thread492 - -.thread492: ; preds = %420, %473 - %.1.i469495 = phi ptr [ %477, %473 ], [ %162, %420 ] + %spec.select.i466 = call i64 @llvm.umin.i64(i64 %475, i64 32) + %476 = call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef nonnull %162, i64 noundef %spec.select.i466) #8 + %477 = getelementptr inbounds nuw i8, ptr %162, i64 %spec.select.i466 + %478 = sub nuw nsw i64 32, %spec.select.i466 + %.not40.i472 = icmp ugt i64 %475, 31 + br i1 %.not40.i472, label %sha256_update.exit473, label %.thread494 + +.thread494: ; preds = %420, %473 + %.1.i471497 = phi ptr [ %477, %473 ], [ %162, %420 ] %479 = phi i64 [ %478, %473 ], [ 32, %420 ] - %480 = call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef nonnull %.1.i469495, i64 noundef %479) #8 - br label %sha256_update.exit471 + %480 = call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef nonnull %.1.i471497, i64 noundef %479) #8 + br label %sha256_update.exit473 -sha256_update.exit471: ; preds = %473, %.thread492 +sha256_update.exit473: ; preds = %473, %.thread494 %481 = call i32 @SHA256_Final(ptr noundef nonnull %162, ptr noundef nonnull %8) #8 %482 = getelementptr inbounds nuw i8, ptr %.0377, i64 %.0387 %483 = getelementptr i8, ptr %.0377, i64 %.0378 @@ -874,11 +874,11 @@ sha256_update.exit471: ; preds = %473, %.thread492 %493 = zext nneg i32 %492 to i64 br label %494 -494: ; preds = %sha256_update.exit471, %494 - %.3514 = phi i64 [ 0, %sha256_update.exit471 ], [ %517, %494 ] - %.1392513 = phi i64 [ 0, %sha256_update.exit471 ], [ %516, %494 ] +494: ; preds = %sha256_update.exit471, %494 + %.1392516 = phi i64 [ 0, %sha256_update.exit471 ], [ %517, %494 ] + %.2395515 = phi i64 [ 0, %sha256_update.exit471 ], [ %516, %494 ] %.2395512 = phi i32 [ 0, %sha256_update.exit471 ], [ %513, %494 ] - %495 = getelementptr inbounds nuw i8, ptr %488, i64 %.3514 + %495 = getelementptr inbounds nuw i8, ptr %488, i64 %.1392516 %496 = load i8, ptr %495, align 1, !tbaa !18 %497 = zext i8 %496 to i32 %498 = sub i64 %.3514, %491 @@ -897,39 +897,39 @@ sha256_update.exit471: ; preds = %473, %.thread492 %510 = zext i8 %509 to i32 %isneg414 = icmp slt i32 %506, 0 %511 = select i1 %isneg414, i32 %510, i32 0 - %512 = or i32 %502, %.2395512 + %509 = or i32 %502, %.2395512 %513 = or i32 %512, %511 %514 = lshr i32 %506, 31 %515 = zext nneg i32 %514 to i64 - %516 = add i64 %.1392513, %515 + %513 = add i64 %.1392513, %515 %517 = add nuw nsw i64 %.3514, 1 %exitcond521.not = icmp eq i64 %517, %493 br i1 %exitcond521.not, label %sha256_update.exit480, label %494, !llvm.loop !42 -518: ; preds = %158 +518:; preds = %158 %519 = load i32, ptr %9, align 4, !tbaa !29 %.not.i472 = icmp eq i32 %519, 0 br i1 %.not.i472, label %526, label %520 -520: ; preds = %518 +520:; preds = %518 %521 = zext i32 %519 to i64 %522 = sub nsw i64 64, %521 - %spec.select.i473 = call i64 @llvm.umin.i64(i64 %3, i64 %522) + %519 = call i64 @llvm.umin.i64(i64 %3, i64 %522) %523 = call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef %1, i64 noundef %spec.select.i473) #8 %524 = getelementptr inbounds nuw i8, ptr %1, i64 %spec.select.i473 - %525 = sub i64 %3, %spec.select.i473 + %525 = sub i64 %3, %519 br label %526 -526: ; preds = %520, %518 - %.033.i474 = phi i64 [ %525, %520 ], [ %3, %518 ] +526: ; preds = %520, %518 + %.032.i477 = phi i64 [ %525, %520 ], [ %3, %518 ] %.032.i475 = phi ptr [ %524, %520 ], [ %1, %518 ] - %527 = and i64 %.033.i474, 63 - %528 = and i64 %.033.i474, -64 + %524 = and i64 %.033.i474, 63 + %528 = and i64 %.032.i477, -64 %.not39.i476 = icmp eq i64 %528, 0 br i1 %.not39.i476, label %544, label %529 -529: ; preds = %526 - %530 = lshr i64 %.033.i474, 6 +529:; preds = %526 + %530 = lshr i64 %.032.i477, 6 call void @sha256_block_data_order(ptr noundef nonnull %8, ptr noundef %.032.i475, i64 noundef %530) #8 %531 = getelementptr inbounds nuw i8, ptr %.032.i475, i64 %528 %532 = lshr i64 %.033.i474, 29 @@ -942,8 +942,8 @@ sha256_update.exit471: ; preds = %473, %.thread492 %538 = load i32, ptr %537, align 4, !tbaa !26 %.tr.i477 = trunc i64 %528 to i32 %539 = shl i32 %.tr.i477, 3 - %540 = add i32 %538, %539 - store i32 %540, ptr %537, align 4, !tbaa !26 + %539 = add i32 %538, %539 + store i32 %539, ptr %537, align 4, !tbaa !26 %541 = icmp ult i32 %540, %539 br i1 %541, label %542, label %544 @@ -952,28 +952,28 @@ sha256_update.exit471: ; preds = %473, %.thread492 store i32 %543, ptr %533, align 4, !tbaa !25 br label %544 -544: ; preds = %542, %529, %526 - %.1.i478 = phi ptr [ %531, %542 ], [ %531, %529 ], [ %.032.i475, %526 ] - %.not40.i479 = icmp eq i64 %527, 0 - br i1 %.not40.i479, label %sha256_update.exit480.thread, label %545 +540: ; preds = %542, %529, %526 + %.1.i480 = phi ptr [ %531, %542 ], [ %531, %529 ], [ %.032.i475, %526 ] + %.not40.i481 = icmp eq i64 %527, 0 + br i1 %.not40.i481, label %sha256_update.exit482.thread, label %541 -545: ; preds = %544 - %546 = call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef %.1.i478, i64 noundef %527) #8 - br label %sha256_update.exit480.thread +541: ; preds = %540 + %542 = call i32 @SHA256_Update(ptr noundef nonnull %8, ptr noundef %.1.i480, i64 noundef %527) #8 + br label %sha256_update.exit482.thread -sha256_update.exit480.thread: ; preds = %545, %544 +sha256_update.exit482.thread: ; preds = %541, %540 call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %5) #8 - br label %548 + br label %544 -sha256_update.exit480: ; preds = %494 +sha256_update.exit482: ; preds = %494 %.inv = icmp slt i32 %513, 1 %narrow = select i1 %.inv, i1 %193, i1 false - %547 = zext i1 %narrow to i32 + %543 = zext i1 %narrow to i32 call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %5) #8 - br label %548 + br label %544 -548: ; preds = %152, %._crit_edge, %sha256_update.exit480.thread, %sha256_update.exit480, %sha256_update.exit480.thread497, %20, %4 - %.0 = phi i32 [ %547, %sha256_update.exit480 ], [ 0, %4 ], [ 0, %20 ], [ 0, %sha256_update.exit480.thread497 ], [ 1, %sha256_update.exit480.thread ], [ 1, %._crit_edge ], [ 1, %152 ] +544: ; preds = %152, %._crit_edge, %sha256_update.exit482.thread, %sha256_update.exit482, %sha256_update.exit482.thread499, %20, %4 + %.0 = phi i32 [ %543, %sha256_update.exit480 ], [ 0, %4 ], [ 0, %20 ], [ 0, %sha256_update.exit480.thread497 ], [ 1, %sha256_update.exit480.thread ], [ 1, %._crit_edge ], [ 1, %152 ] ret i32 %.0 } diff --git a/bench/openssl/optimized/e_aes_cbc_hmac_sha1.ll b/bench/openssl/optimized/e_aes_cbc_hmac_sha1.ll index e92af1535fb..51b5718b7d6 100644 --- a/bench/openssl/optimized/e_aes_cbc_hmac_sha1.ll +++ b/bench/openssl/optimized/e_aes_cbc_hmac_sha1.ll @@ -92,7 +92,7 @@ define internal range(i32 0, 2) i32 @aesni_cbc_hmac_sha1_cipher(ptr noundef %0, store i64 -1, ptr %7, align 8, !tbaa !9 %14 = and i64 %3, 15 %.not = icmp eq i64 %14, 0 - br i1 %.not, label %15, label %487 + br i1 %.not, label %15, label %483 15: ; preds = %4 %16 = tail call i32 @EVP_CIPHER_CTX_is_encrypting(ptr noundef %0) #7 @@ -106,8 +106,8 @@ define internal range(i32 0, 2) i32 @aesni_cbc_hmac_sha1_cipher(ptr noundef %0, 19: ; preds = %17 %20 = add i64 %8, 36 %21 = and i64 %20, -16 - %.not381 = icmp eq i64 %3, %21 - br i1 %.not381, label %22, label %487 + %.not383 = icmp eq i64 %3, %21 + br i1 %.not383, label %22, label %483 22: ; preds = %19 %23 = getelementptr inbounds nuw i8, ptr %6, i64 544 @@ -125,8 +125,8 @@ define internal range(i32 0, 2) i32 @aesni_cbc_hmac_sha1_cipher(ptr noundef %0, 29: ; preds = %26 %30 = sub nuw i64 %.0342, %27 - %.not382 = icmp ult i64 %30, 64 - br i1 %.not382, label %78, label %31 + %.not384 = icmp ult i64 %30, 64 + br i1 %.not384, label %78, label %31 31: ; preds = %29 %32 = lshr i64 %30, 6 @@ -218,31 +218,31 @@ sha1_update.exit: ; preds = %59, %60 %80 = getelementptr inbounds nuw i8, ptr %2, i64 %79 %81 = sub i64 %.0342, %79 %82 = load i32, ptr %10, align 4, !tbaa !15 - %.not.i385 = icmp eq i32 %82, 0 - br i1 %.not.i385, label %89, label %83 + %.not.i387 = icmp eq i32 %82, 0 + br i1 %.not.i387, label %89, label %83 83: ; preds = %78 %84 = zext i32 %82 to i64 %85 = sub nsw i64 64, %84 - %spec.select.i386 = tail call i64 @llvm.umin.i64(i64 %81, i64 %85) - %86 = tail call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef %80, i64 noundef %spec.select.i386) #7 - %87 = getelementptr inbounds nuw i8, ptr %80, i64 %spec.select.i386 - %88 = sub i64 %81, %spec.select.i386 + %spec.select.i388 = tail call i64 @llvm.umin.i64(i64 %81, i64 %85) + %86 = tail call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef %80, i64 noundef %spec.select.i388) #7 + %87 = getelementptr inbounds nuw i8, ptr %80, i64 %spec.select.i388 + %88 = sub i64 %81, %spec.select.i388 br label %89 89: ; preds = %83, %78 - %.033.i387 = phi i64 [ %88, %83 ], [ %81, %78 ] - %.032.i388 = phi ptr [ %87, %83 ], [ %80, %78 ] - %90 = and i64 %.033.i387, 63 - %91 = and i64 %.033.i387, -64 - %.not39.i389 = icmp eq i64 %91, 0 - br i1 %.not39.i389, label %107, label %92 + %.033.i389 = phi i64 [ %88, %83 ], [ %81, %78 ] + %.032.i390 = phi ptr [ %87, %83 ], [ %80, %78 ] + %90 = and i64 %.033.i389, 63 + %91 = and i64 %.033.i389, -64 + %.not39.i391 = icmp eq i64 %91, 0 + br i1 %.not39.i391, label %107, label %92 92: ; preds = %89 - %93 = lshr i64 %.033.i387, 6 - tail call void @sha1_block_data_order(ptr noundef nonnull %9, ptr noundef %.032.i388, i64 noundef %93) #7 - %94 = getelementptr inbounds nuw i8, ptr %.032.i388, i64 %91 - %95 = lshr i64 %.033.i387, 29 + %93 = lshr i64 %.033.i389, 6 + tail call void @sha1_block_data_order(ptr noundef nonnull %9, ptr noundef %.032.i390, i64 noundef %93) #7 + %94 = getelementptr inbounds nuw i8, ptr %.032.i390, i64 %91 + %95 = lshr i64 %.033.i389, 29 %96 = getelementptr inbounds nuw i8, ptr %6, i64 460 %97 = load i32, ptr %96, align 4, !tbaa !16 %98 = trunc i64 %95 to i32 @@ -250,8 +250,8 @@ sha1_update.exit: ; preds = %59, %60 store i32 %99, ptr %96, align 4, !tbaa !16 %100 = getelementptr inbounds nuw i8, ptr %6, i64 456 %101 = load i32, ptr %100, align 4, !tbaa !17 - %.tr.i390 = trunc i64 %91 to i32 - %102 = shl i32 %.tr.i390, 3 + %.tr.i392 = trunc i64 %91 to i32 + %102 = shl i32 %.tr.i392, 3 %103 = add i32 %101, %102 store i32 %103, ptr %100, align 4, !tbaa !17 %104 = icmp ult i32 %103, %102 @@ -263,21 +263,21 @@ sha1_update.exit: ; preds = %59, %60 br label %107 107: ; preds = %105, %92, %89 - %.1.i391 = phi ptr [ %94, %105 ], [ %94, %92 ], [ %.032.i388, %89 ] - %.not40.i392 = icmp eq i64 %90, 0 - br i1 %.not40.i392, label %sha1_update.exit393, label %108 + %.1.i393 = phi ptr [ %94, %105 ], [ %94, %92 ], [ %.032.i390, %89 ] + %.not40.i394 = icmp eq i64 %90, 0 + br i1 %.not40.i394, label %sha1_update.exit395, label %108 108: ; preds = %107 - %109 = tail call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef %.1.i391, i64 noundef %90) #7 - br label %sha1_update.exit393 + %109 = tail call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef %.1.i393, i64 noundef %90) #7 + br label %sha1_update.exit395 -sha1_update.exit393: ; preds = %107, %108 - %.not383 = icmp eq i64 %.0342, %3 - br i1 %.not383, label %138, label %110 +sha1_update.exit395: ; preds = %107, %108 + %.not385 = icmp eq i64 %.0342, %3 + br i1 %.not385, label %138, label %110 -110: ; preds = %sha1_update.exit393 - %.not384 = icmp eq ptr %2, %1 - br i1 %.not384, label %115, label %111 +110: ; preds = %sha1_update.exit395 + %.not386 = icmp eq ptr %2, %1 + br i1 %.not386, label %115, label %111 111: ; preds = %110 %112 = getelementptr inbounds nuw i8, ptr %1, i64 %.0346 @@ -292,32 +292,32 @@ sha1_update.exit393: ; preds = %107, %108 %118 = getelementptr inbounds nuw i8, ptr %6, i64 340 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(96) %9, ptr noundef nonnull align 4 dereferenceable(96) %118, i64 96, i1 false), !tbaa.struct !7 %119 = load i32, ptr %10, align 4, !tbaa !15 - %.not.i394 = icmp eq i32 %119, 0 - br i1 %.not.i394, label %.thread442, label %120 + %.not.i396 = icmp eq i32 %119, 0 + br i1 %.not.i396, label %.thread444, label %120 120: ; preds = %115 %121 = zext i32 %119 to i64 %122 = sub nsw i64 64, %121 - %spec.select.i395 = tail call i64 @llvm.umin.i64(i64 %122, i64 20) - %123 = tail call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef %116, i64 noundef %spec.select.i395) #7 - %124 = getelementptr inbounds nuw i8, ptr %116, i64 %spec.select.i395 - %125 = sub nuw nsw i64 20, %spec.select.i395 - %.not40.i401 = icmp ugt i64 %122, 19 - br i1 %.not40.i401, label %sha1_update.exit402, label %.thread442 - -.thread442: ; preds = %115, %120 - %.1.i400445 = phi ptr [ %124, %120 ], [ %116, %115 ] + %spec.select.i397 = tail call i64 @llvm.umin.i64(i64 %122, i64 20) + %123 = tail call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef %116, i64 noundef %spec.select.i397) #7 + %124 = getelementptr inbounds nuw i8, ptr %116, i64 %spec.select.i397 + %125 = sub nuw nsw i64 20, %spec.select.i397 + %.not40.i403 = icmp ugt i64 %122, 19 + br i1 %.not40.i403, label %sha1_update.exit404, label %.thread444 + +.thread444: ; preds = %115, %120 + %.1.i402447 = phi ptr [ %124, %120 ], [ %116, %115 ] %126 = phi i64 [ %125, %120 ], [ 20, %115 ] - %127 = tail call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef %.1.i400445, i64 noundef %126) #7 - br label %sha1_update.exit402 + %127 = tail call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef %.1.i402447, i64 noundef %126) #7 + br label %sha1_update.exit404 -sha1_update.exit402: ; preds = %120, %.thread442 +sha1_update.exit404: ; preds = %120, %.thread444 %128 = tail call i32 @SHA1_Final(ptr noundef %116, ptr noundef nonnull %9) #7 %129 = add i64 %.0342, 20 %130 = icmp ult i64 %129, %3 br i1 %130, label %.lr.ph.preheader, label %._crit_edge -.lr.ph.preheader: ; preds = %sha1_update.exit402 +.lr.ph.preheader: ; preds = %sha1_update.exit404 %reass.sub = sub i64 %3, %.0342 %131 = trunc i64 %reass.sub to i8 %132 = add i8 %131, -21 @@ -327,20 +327,20 @@ sha1_update.exit402: ; preds = %120, %.thread442 tail call void @llvm.memset.p0.i64(ptr align 1 %scevgep, i8 %132, i64 %134, i1 false), !tbaa !8 br label %._crit_edge -._crit_edge: ; preds = %.lr.ph.preheader, %sha1_update.exit402 +._crit_edge: ; preds = %.lr.ph.preheader, %sha1_update.exit404 %135 = getelementptr inbounds nuw i8, ptr %1, i64 %.0346 %136 = sub i64 %3, %.0346 %137 = getelementptr inbounds nuw i8, ptr %0, i64 40 tail call void @aesni_cbc_encrypt(ptr noundef %135, ptr noundef %135, i64 noundef %136, ptr noundef nonnull %6, ptr noundef nonnull %137, i32 noundef 1) #7 - br label %487 + br label %483 -138: ; preds = %sha1_update.exit393 +138: ; preds = %sha1_update.exit395 %139 = getelementptr inbounds nuw i8, ptr %2, i64 %.0346 %140 = getelementptr inbounds nuw i8, ptr %1, i64 %.0346 %141 = sub i64 %3, %.0346 %142 = getelementptr inbounds nuw i8, ptr %0, i64 40 tail call void @aesni_cbc_encrypt(ptr noundef %139, ptr noundef %140, i64 noundef %141, ptr noundef nonnull %6, ptr noundef nonnull %142, i32 noundef 1) #7 - br label %487 + br label %483 143: ; preds = %15 call void @llvm.lifetime.start.p0(i64 52, ptr nonnull %5) #7 @@ -369,7 +369,7 @@ sha1_update.exit402: ; preds = %120, %.thread442 162: ; preds = %148 %163 = icmp ult i64 %3, 37 - br i1 %163, label %sha1_update.exit438.thread456, label %164 + br i1 %163, label %sha1_update.exit440.thread458, label %164 164: ; preds = %162 %165 = getelementptr inbounds nuw i8, ptr %0, i64 40 @@ -381,7 +381,7 @@ sha1_update.exit402: ; preds = %120, %.thread442 169: ; preds = %148 %170 = icmp ult i64 %3, 21 - br i1 %170, label %sha1_update.exit438.thread456, label %171 + br i1 %170, label %sha1_update.exit440.thread458, label %171 171: ; preds = %169, %164 %.0340 = phi i64 [ %168, %164 ], [ %3, %169 ] @@ -422,31 +422,31 @@ sha1_update.exit402: ; preds = %120, %.thread442 %200 = getelementptr inbounds nuw i8, ptr %6, i64 244 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(96) %9, ptr noundef nonnull align 4 dereferenceable(96) %200, i64 96, i1 false), !tbaa.struct !7 %201 = load i32, ptr %10, align 4, !tbaa !15 - %.not.i403 = icmp eq i32 %201, 0 - br i1 %.not.i403, label %208, label %202 + %.not.i405 = icmp eq i32 %201, 0 + br i1 %.not.i405, label %208, label %202 202: ; preds = %171 %203 = zext i32 %201 to i64 %204 = sub nsw i64 64, %203 - %spec.select.i404 = call i64 @llvm.umin.i64(i64 %8, i64 %204) - %205 = call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef nonnull %150, i64 noundef %spec.select.i404) #7 - %206 = getelementptr inbounds nuw i8, ptr %150, i64 %spec.select.i404 - %207 = sub i64 %8, %spec.select.i404 + %spec.select.i406 = call i64 @llvm.umin.i64(i64 %8, i64 %204) + %205 = call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef nonnull %150, i64 noundef %spec.select.i406) #7 + %206 = getelementptr inbounds nuw i8, ptr %150, i64 %spec.select.i406 + %207 = sub i64 %8, %spec.select.i406 br label %208 208: ; preds = %202, %171 - %.033.i405 = phi i64 [ %207, %202 ], [ %8, %171 ] - %.032.i406 = phi ptr [ %206, %202 ], [ %150, %171 ] - %209 = and i64 %.033.i405, 63 - %210 = and i64 %.033.i405, -64 - %.not39.i407 = icmp eq i64 %210, 0 - br i1 %.not39.i407, label %226, label %211 + %.033.i407 = phi i64 [ %207, %202 ], [ %8, %171 ] + %.032.i408 = phi ptr [ %206, %202 ], [ %150, %171 ] + %209 = and i64 %.033.i407, 63 + %210 = and i64 %.033.i407, -64 + %.not39.i409 = icmp eq i64 %210, 0 + br i1 %.not39.i409, label %226, label %211 211: ; preds = %208 - %212 = lshr i64 %.033.i405, 6 - call void @sha1_block_data_order(ptr noundef nonnull %9, ptr noundef nonnull %.032.i406, i64 noundef %212) #7 - %213 = getelementptr inbounds nuw i8, ptr %.032.i406, i64 %210 - %214 = lshr i64 %.033.i405, 29 + %212 = lshr i64 %.033.i407, 6 + call void @sha1_block_data_order(ptr noundef nonnull %9, ptr noundef nonnull %.032.i408, i64 noundef %212) #7 + %213 = getelementptr inbounds nuw i8, ptr %.032.i408, i64 %210 + %214 = lshr i64 %.033.i407, 29 %215 = getelementptr inbounds nuw i8, ptr %6, i64 460 %216 = load i32, ptr %215, align 4, !tbaa !16 %217 = trunc i64 %214 to i32 @@ -454,8 +454,8 @@ sha1_update.exit402: ; preds = %120, %.thread442 store i32 %218, ptr %215, align 4, !tbaa !16 %219 = getelementptr inbounds nuw i8, ptr %6, i64 456 %220 = load i32, ptr %219, align 4, !tbaa !17 - %.tr.i408 = trunc i64 %210 to i32 - %221 = shl i32 %.tr.i408, 3 + %.tr.i410 = trunc i64 %210 to i32 + %221 = shl i32 %.tr.i410, 3 %222 = add i32 %220, %221 store i32 %222, ptr %219, align 4, !tbaa !17 %223 = icmp ult i32 %222, %221 @@ -467,51 +467,51 @@ sha1_update.exit402: ; preds = %120, %.thread442 br label %226 226: ; preds = %224, %211, %208 - %.1.i409 = phi ptr [ %213, %224 ], [ %213, %211 ], [ %.032.i406, %208 ] - %.not40.i410 = icmp eq i64 %209, 0 - br i1 %.not40.i410, label %sha1_update.exit411, label %227 + %.1.i411 = phi ptr [ %213, %224 ], [ %213, %211 ], [ %.032.i408, %208 ] + %.not40.i412 = icmp eq i64 %209, 0 + br i1 %.not40.i412, label %sha1_update.exit413, label %227 227: ; preds = %226 - %228 = call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef nonnull %.1.i409, i64 noundef %209) #7 - br label %sha1_update.exit411 + %228 = call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef nonnull %.1.i411, i64 noundef %209) #7 + br label %sha1_update.exit413 -sha1_update.exit411: ; preds = %226, %227 +sha1_update.exit413: ; preds = %226, %227 %229 = add i64 %.0340, -20 %230 = icmp ugt i64 %229, 319 br i1 %230, label %231, label %268 -231: ; preds = %sha1_update.exit411 +231: ; preds = %sha1_update.exit413 %232 = add i64 %.0340, -340 %233 = and i64 %232, -64 %234 = load i32, ptr %10, align 4, !tbaa !14 %235 = sub i32 64, %234 %236 = zext i32 %235 to i64 %237 = add i64 %233, %236 - %.not.i412 = icmp eq i32 %234, 0 - br i1 %.not.i412, label %244, label %238 + %.not.i414 = icmp eq i32 %234, 0 + br i1 %.not.i414, label %244, label %238 238: ; preds = %231 %239 = zext i32 %234 to i64 %240 = sub nsw i64 64, %239 - %spec.select.i413 = call i64 @llvm.umin.i64(i64 %237, i64 %240) - %241 = call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef nonnull %.0337, i64 noundef %spec.select.i413) #7 - %242 = getelementptr inbounds nuw i8, ptr %.0337, i64 %spec.select.i413 - %243 = sub i64 %237, %spec.select.i413 + %spec.select.i415 = call i64 @llvm.umin.i64(i64 %237, i64 %240) + %241 = call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef nonnull %.0337, i64 noundef %spec.select.i415) #7 + %242 = getelementptr inbounds nuw i8, ptr %.0337, i64 %spec.select.i415 + %243 = sub i64 %237, %spec.select.i415 br label %244 244: ; preds = %238, %231 - %.033.i414 = phi i64 [ %243, %238 ], [ %237, %231 ] - %.032.i415 = phi ptr [ %242, %238 ], [ %.0337, %231 ] - %245 = and i64 %.033.i414, 63 - %246 = and i64 %.033.i414, -64 - %.not39.i416 = icmp eq i64 %246, 0 - br i1 %.not39.i416, label %262, label %247 + %.033.i416 = phi i64 [ %243, %238 ], [ %237, %231 ] + %.032.i417 = phi ptr [ %242, %238 ], [ %.0337, %231 ] + %245 = and i64 %.033.i416, 63 + %246 = and i64 %.033.i416, -64 + %.not39.i418 = icmp eq i64 %246, 0 + br i1 %.not39.i418, label %262, label %247 247: ; preds = %244 - %248 = lshr i64 %.033.i414, 6 - call void @sha1_block_data_order(ptr noundef nonnull %9, ptr noundef nonnull %.032.i415, i64 noundef %248) #7 - %249 = getelementptr inbounds nuw i8, ptr %.032.i415, i64 %246 - %250 = lshr i64 %.033.i414, 29 + %248 = lshr i64 %.033.i416, 6 + call void @sha1_block_data_order(ptr noundef nonnull %9, ptr noundef nonnull %.032.i417, i64 noundef %248) #7 + %249 = getelementptr inbounds nuw i8, ptr %.032.i417, i64 %246 + %250 = lshr i64 %.033.i416, 29 %251 = getelementptr inbounds nuw i8, ptr %6, i64 460 %252 = load i32, ptr %251, align 4, !tbaa !16 %253 = trunc i64 %250 to i32 @@ -519,8 +519,8 @@ sha1_update.exit411: ; preds = %226, %227 store i32 %254, ptr %251, align 4, !tbaa !16 %255 = getelementptr inbounds nuw i8, ptr %6, i64 456 %256 = load i32, ptr %255, align 4, !tbaa !17 - %.tr.i417 = trunc i64 %246 to i32 - %257 = shl i32 %.tr.i417, 3 + %.tr.i419 = trunc i64 %246 to i32 + %257 = shl i32 %.tr.i419, 3 %258 = add i32 %256, %257 store i32 %258, ptr %255, align 4, !tbaa !17 %259 = icmp ult i32 %258, %257 @@ -532,21 +532,21 @@ sha1_update.exit411: ; preds = %226, %227 br label %262 262: ; preds = %260, %247, %244 - %.1.i418 = phi ptr [ %249, %260 ], [ %249, %247 ], [ %.032.i415, %244 ] - %.not40.i419 = icmp eq i64 %245, 0 - br i1 %.not40.i419, label %sha1_update.exit420, label %263 + %.1.i420 = phi ptr [ %249, %260 ], [ %249, %247 ], [ %.032.i417, %244 ] + %.not40.i421 = icmp eq i64 %245, 0 + br i1 %.not40.i421, label %sha1_update.exit422, label %263 263: ; preds = %262 - %264 = call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef %.1.i418, i64 noundef %245) #7 - br label %sha1_update.exit420 + %264 = call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef %.1.i420, i64 noundef %245) #7 + br label %sha1_update.exit422 -sha1_update.exit420: ; preds = %262, %263 +sha1_update.exit422: ; preds = %262, %263 %265 = getelementptr inbounds nuw i8, ptr %.0337, i64 %237 %266 = sub i64 %229, %237 %267 = sub i64 %192, %237 br label %268 -268: ; preds = %sha1_update.exit420, %sha1_update.exit411 +268: ; preds = %sha1_update.exit422, %sha1_update.exit413 %.0349 = phi i64 [ %267, %sha1_update.exit420 ], [ %192, %sha1_update.exit411 ] %.1341 = phi i64 [ %266, %sha1_update.exit420 ], [ %229, %sha1_update.exit411 ] %.1338 = phi ptr [ %265, %sha1_update.exit420 ], [ %.0337, %sha1_update.exit411 ] @@ -562,10 +562,10 @@ sha1_update.exit420: ; preds = %262, %263 %277 = getelementptr inbounds nuw i8, ptr %147, i64 16 call void @llvm.memset.p0.i64(ptr noundef nonnull align 32 dereferenceable(20) %147, i8 0, i64 20, i1 false) %278 = load i32, ptr %10, align 4, !tbaa !14 - %.not474 = icmp eq i64 %.1341, 0 - br i1 %.not474, label %._crit_edge463, label %.lr.ph462 + %.not477 = icmp eq i64 %.1341, 0 + br i1 %.not477, label %._crit_edge466, label %.lr.ph465 -.lr.ph462: ; preds = %268 +.lr.ph465: ; preds = %268 %279 = add i64 %.0349, 7 %280 = getelementptr inbounds nuw i8, ptr %6, i64 524 %281 = getelementptr inbounds nuw i8, ptr %6, i64 440 @@ -574,42 +574,42 @@ sha1_update.exit420: ; preds = %262, %263 %284 = getelementptr inbounds nuw i8, ptr %6, i64 452 br label %285 -285: ; preds = %.lr.ph462, %332 - %.0350460 = phi i64 [ 0, %.lr.ph462 ], [ %333, %332 ] - %.0355459 = phi i32 [ %278, %.lr.ph462 ], [ %.1356, %332 ] - %286 = getelementptr inbounds nuw i8, ptr %.1338, i64 %.0350460 +285: ; preds = %.lr.ph465, %332 + %.0350463 = phi i64 [ 0, %.lr.ph462 ], [ %333, %332 ] + %.0355462 = phi i32 [ %278, %.lr.ph462 ], [ %.1356, %332 ] + %286 = getelementptr inbounds nuw i8, ptr %.1338, i64 %.0350463 %287 = load i8, ptr %286, align 1, !tbaa !8 %288 = zext i8 %287 to i64 - %289 = sub i64 %.0350460, %.0349 + %289 = sub i64 %.0350463, %.0349 %290 = lshr i64 %289, 56 %291 = and i64 %290, %288 %292 = and i64 %290, 128 %293 = xor i64 %292, 128 - %294 = sub i64 %.0349, %.0350460 + %294 = sub i64 %.0349, %.0350463 %295 = lshr i64 %294, 56 %296 = xor i64 %295, -1 %297 = and i64 %293, %296 %298 = or i64 %291, %297 %299 = trunc nuw i64 %298 to i8 - %300 = add i32 %.0355459, 1 - %301 = zext i32 %.0355459 to i64 + %300 = add i32 %.0355462, 1 + %301 = zext i32 %.0355462 to i64 %302 = getelementptr inbounds nuw [64 x i8], ptr %149, i64 0, i64 %301 store i8 %299, ptr %302, align 1, !tbaa !8 - %.not377 = icmp eq i32 %300, 64 - br i1 %.not377, label %303, label %332 + %.not379 = icmp eq i32 %300, 64 + br i1 %.not379, label %303, label %332 303: ; preds = %285 - %304 = sub i64 %279, %.0350460 - %.neg378 = ashr i64 %304, 63 + %304 = sub i64 %279, %.0350463 + %.neg380 = ashr i64 %304, 63 %305 = load i32, ptr %280, align 4, !tbaa !8 - %306 = trunc nsw i64 %.neg378 to i32 + %306 = trunc nsw i64 %.neg380 to i32 %307 = and i32 %273, %306 %308 = or i32 %305, %307 store i32 %308, ptr %280, align 4, !tbaa !8 call void @sha1_block_data_order(ptr noundef nonnull %9, ptr noundef nonnull %149, i64 noundef 1) #7 %309 = add i64 %289, -72 - %.neg378380 = and i64 %309, %304 - %310 = ashr i64 %.neg378380, 63 + %.neg380382 = and i64 %309, %304 + %310 = ashr i64 %.neg380382, 63 %311 = load i32, ptr %9, align 4, !tbaa !22 %312 = load i32, ptr %147, align 32, !tbaa !8 %313 = trunc nsw i64 %310 to i32 @@ -640,30 +640,30 @@ sha1_update.exit420: ; preds = %262, %263 332: ; preds = %285, %303 %.1356 = phi i32 [ 0, %303 ], [ %300, %285 ] - %333 = add nuw i64 %.0350460, 1 + %333 = add nuw i64 %.0350463, 1 %exitcond.not = icmp eq i64 %333, %.1341 - br i1 %exitcond.not, label %._crit_edge463, label %285, !llvm.loop !27 + br i1 %exitcond.not, label %._crit_edge466, label %285, !llvm.loop !27 -._crit_edge463: ; preds = %332, %268 +._crit_edge466: ; preds = %332, %268 %.0355.lcssa = phi i32 [ %278, %268 ], [ %.1356, %332 ] %334 = icmp ult i32 %.0355.lcssa, 64 - br i1 %334, label %._crit_edge469, label %._crit_edge469.thread + br i1 %334, label %._crit_edge472, label %._crit_edge472.thread -._crit_edge469: ; preds = %._crit_edge463 +._crit_edge472: ; preds = %._crit_edge466 %335 = zext nneg i32 %.0355.lcssa to i64 %336 = getelementptr i8, ptr %6, i64 %335 - %scevgep479 = getelementptr i8, ptr %336, i64 464 + %scevgep482 = getelementptr i8, ptr %336, i64 464 %337 = sub nuw nsw i64 64, %335 - call void @llvm.memset.p0.i64(ptr align 1 %scevgep479, i8 0, i64 %337, i1 false), !tbaa !8 + call void @llvm.memset.p0.i64(ptr align 1 %scevgep482, i8 0, i64 %337, i1 false), !tbaa !8 %338 = add i64 %.1341, 64 %339 = sub i64 %338, %335 %340 = icmp samesign ugt i32 %.0355.lcssa, 56 - br i1 %340, label %._crit_edge469.thread, label %376 + br i1 %340, label %._crit_edge472.thread, label %376 -._crit_edge469.thread: ; preds = %._crit_edge463, %._crit_edge469 - %.1351.lcssa482 = phi i64 [ %339, %._crit_edge469 ], [ %.1341, %._crit_edge463 ] +._crit_edge472.thread: ; preds = %._crit_edge466, %._crit_edge472 + %.1351.lcssa485 = phi i64 [ %339, %._crit_edge469 ], [ %.1341, %._crit_edge463 ] %341 = add i64 %.0349, 8 - %342 = sub i64 %341, %.1351.lcssa482 + %342 = sub i64 %341, %.1351.lcssa485 %.neg = ashr i64 %342, 63 %343 = getelementptr inbounds nuw i8, ptr %6, i64 524 %344 = load i32, ptr %343, align 4, !tbaa !8 @@ -672,8 +672,8 @@ sha1_update.exit420: ; preds = %262, %263 %347 = or i32 %344, %346 store i32 %347, ptr %343, align 4, !tbaa !8 call void @sha1_block_data_order(ptr noundef nonnull %9, ptr noundef nonnull %149, i64 noundef 1) #7 - %reass.sub475 = sub i64 %.1351.lcssa482, %.0349 - %348 = add i64 %reass.sub475, -73 + %reass.sub478 = sub i64 %.1351.lcssa485, %.0349 + %348 = add i64 %reass.sub478, -73 %.neg373 = and i64 %342, %348 %349 = ashr i64 %.neg373, 63 %350 = load i32, ptr %9, align 4, !tbaa !22 @@ -707,16 +707,16 @@ sha1_update.exit420: ; preds = %262, %263 %374 = or i32 %373, %372 store i32 %374, ptr %277, align 16, !tbaa !8 call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %149, i8 0, i64 60, i1 false) - %375 = add i64 %.1351.lcssa482, 64 + %375 = add i64 %.1351.lcssa485, 64 br label %376 -376: ; preds = %._crit_edge469.thread, %._crit_edge469 +376: ; preds = %._crit_edge472.thread, %._crit_edge472 %.2352 = phi i64 [ %375, %._crit_edge469.thread ], [ %339, %._crit_edge469 ] %377 = getelementptr inbounds nuw i8, ptr %6, i64 524 store i32 %273, ptr %377, align 4, !tbaa !8 call void @sha1_block_data_order(ptr noundef nonnull %9, ptr noundef nonnull %149, i64 noundef 1) #7 - %reass.sub476 = sub i64 %.2352, %.0349 - %378 = add i64 %reass.sub476, -73 + %reass.sub479 = sub i64 %.2352, %.0349 + %378 = add i64 %reass.sub479, -73 %.neg374 = ashr i64 %378, 63 %379 = load i32, ptr %9, align 4, !tbaa !22 %380 = load i32, ptr %147, align 32, !tbaa !8 @@ -760,26 +760,26 @@ sha1_update.exit420: ; preds = %262, %263 %409 = getelementptr inbounds nuw i8, ptr %6, i64 340 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(96) %9, ptr noundef nonnull align 4 dereferenceable(96) %409, i64 96, i1 false), !tbaa.struct !7 %410 = load i32, ptr %10, align 4, !tbaa !15 - %.not.i421 = icmp eq i32 %410, 0 - br i1 %.not.i421, label %.thread450, label %411 + %.not.i423 = icmp eq i32 %410, 0 + br i1 %.not.i423, label %.thread452, label %411 411: ; preds = %376 %412 = zext i32 %410 to i64 %413 = sub nsw i64 64, %412 - %spec.select.i422 = call i64 @llvm.umin.i64(i64 %413, i64 20) - %414 = call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef nonnull %147, i64 noundef %spec.select.i422) #7 - %415 = getelementptr inbounds nuw i8, ptr %147, i64 %spec.select.i422 - %416 = sub nuw nsw i64 20, %spec.select.i422 - %.not40.i428 = icmp ugt i64 %413, 19 - br i1 %.not40.i428, label %sha1_update.exit429, label %.thread450 - -.thread450: ; preds = %376, %411 - %.1.i427453 = phi ptr [ %415, %411 ], [ %147, %376 ] + %spec.select.i424 = call i64 @llvm.umin.i64(i64 %413, i64 20) + %414 = call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef nonnull %147, i64 noundef %spec.select.i424) #7 + %415 = getelementptr inbounds nuw i8, ptr %147, i64 %spec.select.i424 + %416 = sub nuw nsw i64 20, %spec.select.i424 + %.not40.i430 = icmp ugt i64 %413, 19 + br i1 %.not40.i430, label %sha1_update.exit431, label %.thread452 + +.thread452: ; preds = %376, %411 + %.1.i429455 = phi ptr [ %415, %411 ], [ %147, %376 ] %417 = phi i64 [ %416, %411 ], [ 20, %376 ] - %418 = call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef nonnull %.1.i427453, i64 noundef %417) #7 - br label %sha1_update.exit429 + %418 = call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef nonnull %.1.i429455, i64 noundef %417) #7 + br label %sha1_update.exit431 -sha1_update.exit429: ; preds = %411, %.thread450 +sha1_update.exit431: ; preds = %411, %.thread452 %419 = call i32 @SHA1_Final(ptr noundef nonnull %147, ptr noundef nonnull %9) #7 %420 = getelementptr inbounds nuw i8, ptr %.1338, i64 %.0349 %421 = getelementptr i8, ptr %.1338, i64 %.1341 @@ -795,11 +795,11 @@ sha1_update.exit429: ; preds = %411, %.thread450 %431 = zext nneg i32 %430 to i64 br label %432 -432: ; preds = %sha1_update.exit429, %432 - %.3473 = phi i64 [ 0, %sha1_update.exit429 ], [ %455, %432 ] - %.1354472 = phi i64 [ 0, %sha1_update.exit429 ], [ %454, %432 ] +432: ; preds = %sha1_update.exit431, %432 + %.1354475 = phi i64 [ 0, %sha1_update.exit429 ], [ %455, %432 ] + %.2357474 = phi i64 [ 0, %sha1_update.exit429 ], [ %454, %432 ] %.2357471 = phi i32 [ 0, %sha1_update.exit429 ], [ %451, %432 ] - %433 = getelementptr inbounds nuw i8, ptr %426, i64 %.3473 + %433 = getelementptr inbounds nuw i8, ptr %426, i64 %.1354475 %434 = load i8, ptr %433, align 1, !tbaa !8 %435 = zext i8 %434 to i32 %436 = sub i64 %.3473, %429 @@ -818,41 +818,41 @@ sha1_update.exit429: ; preds = %411, %.thread450 %448 = zext i8 %447 to i32 %isneg376 = icmp slt i32 %444, 0 %449 = select i1 %isneg376, i32 %448, i32 0 - %450 = or i32 %440, %.2357471 + %447 = or i32 %440, %.2357471 %451 = or i32 %450, %449 %452 = lshr i32 %444, 31 %453 = zext nneg i32 %452 to i64 - %454 = add i64 %.1354472, %453 + %451 = add i64 %.1354472, %453 %455 = add nuw nsw i64 %.3473, 1 %exitcond480.not = icmp eq i64 %455, %431 br i1 %exitcond480.not, label %sha1_update.exit438, label %432, !llvm.loop !34 -456: ; preds = %143 +456: ; preds = %143 %457 = getelementptr inbounds nuw i8, ptr %0, i64 40 call void @aesni_cbc_encrypt(ptr noundef %2, ptr noundef %1, i64 noundef %3, ptr noundef nonnull %6, ptr noundef nonnull %457, i32 noundef 0) #7 %458 = load i32, ptr %10, align 4, !tbaa !15 %.not.i430 = icmp eq i32 %458, 0 br i1 %.not.i430, label %465, label %459 -459: ; preds = %456 +459:; preds = %456 %460 = zext i32 %458 to i64 %461 = sub nsw i64 64, %460 - %spec.select.i431 = call i64 @llvm.umin.i64(i64 %3, i64 %461) + %458 = call i64 @llvm.umin.i64(i64 %3, i64 %461) %462 = call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef %1, i64 noundef %spec.select.i431) #7 %463 = getelementptr inbounds nuw i8, ptr %1, i64 %spec.select.i431 - %464 = sub i64 %3, %spec.select.i431 + %464 = sub i64 %3, %458 br label %465 -465: ; preds = %459, %456 - %.033.i432 = phi i64 [ %464, %459 ], [ %3, %456 ] +465:; preds = %459, %456 + %.032.i435 = phi i64 [ %464, %459 ], [ %3, %456 ] %.032.i433 = phi ptr [ %463, %459 ], [ %1, %456 ] - %466 = and i64 %.033.i432, 63 + %463 = and i64 %.033.i432, 63 %467 = and i64 %.033.i432, -64 %.not39.i434 = icmp eq i64 %467, 0 br i1 %.not39.i434, label %483, label %468 -468: ; preds = %465 - %469 = lshr i64 %.033.i432, 6 +468:; preds = %465 + %469 = lshr i64 %.032.i435, 6 call void @sha1_block_data_order(ptr noundef nonnull %9, ptr noundef %.032.i433, i64 noundef %469) #7 %470 = getelementptr inbounds nuw i8, ptr %.032.i433, i64 %467 %471 = lshr i64 %.033.i432, 29 @@ -865,8 +865,8 @@ sha1_update.exit429: ; preds = %411, %.thread450 %477 = load i32, ptr %476, align 4, !tbaa !17 %.tr.i435 = trunc i64 %467 to i32 %478 = shl i32 %.tr.i435, 3 - %479 = add i32 %477, %478 - store i32 %479, ptr %476, align 4, !tbaa !17 + %478 = add i32 %477, %478 + store i32 %478, ptr %476, align 4, !tbaa !17 %480 = icmp ult i32 %479, %478 br i1 %480, label %481, label %483 @@ -875,32 +875,32 @@ sha1_update.exit429: ; preds = %411, %.thread450 store i32 %482, ptr %472, align 4, !tbaa !16 br label %483 -483: ; preds = %481, %468, %465 - %.1.i436 = phi ptr [ %470, %481 ], [ %470, %468 ], [ %.032.i433, %465 ] - %.not40.i437 = icmp eq i64 %466, 0 - br i1 %.not40.i437, label %sha1_update.exit438.thread, label %484 +479: ; preds = %481, %468, %465 + %.1.i438 = phi ptr [ %470, %481 ], [ %470, %468 ], [ %.032.i433, %465 ] + %.not40.i439 = icmp eq i64 %466, 0 + br i1 %.not40.i439, label %sha1_update.exit440.thread, label %480 -484: ; preds = %483 - %485 = call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef %.1.i436, i64 noundef %466) #7 - br label %sha1_update.exit438.thread +480: ; preds = %479 + %481 = call i32 @SHA1_Update(ptr noundef nonnull %9, ptr noundef %.1.i438, i64 noundef %466) #7 + br label %sha1_update.exit440.thread -sha1_update.exit438.thread: ; preds = %484, %483 +sha1_update.exit440.thread: ; preds = %480, %479 call void @llvm.lifetime.end.p0(i64 52, ptr nonnull %5) #7 - br label %487 + br label %483 -sha1_update.exit438.thread456: ; preds = %162, %169 +sha1_update.exit440.thread458: ; preds = %162, %169 call void @llvm.lifetime.end.p0(i64 52, ptr nonnull %5) #7 - br label %487 + br label %483 -sha1_update.exit438: ; preds = %432 +sha1_update.exit440: ; preds = %432 %.inv = icmp slt i32 %451, 1 %narrow = select i1 %.inv, i1 %182, i1 false - %486 = zext i1 %narrow to i32 + %482 = zext i1 %narrow to i32 call void @llvm.lifetime.end.p0(i64 52, ptr nonnull %5) #7 - br label %487 + br label %483 -487: ; preds = %138, %._crit_edge, %sha1_update.exit438.thread, %sha1_update.exit438, %sha1_update.exit438.thread456, %19, %4 - %.0 = phi i32 [ %486, %sha1_update.exit438 ], [ 0, %4 ], [ 0, %19 ], [ 0, %sha1_update.exit438.thread456 ], [ 1, %sha1_update.exit438.thread ], [ 1, %._crit_edge ], [ 1, %138 ] +483: ; preds = %138, %._crit_edge, %sha1_update.exit440.thread, %sha1_update.exit440, %sha1_update.exit440.thread458, %19, %4 + %.0 = phi i32 [ %482, %sha1_update.exit438 ], [ 0, %4 ], [ 0, %19 ], [ 0, %sha1_update.exit438.thread456 ], [ 1, %sha1_update.exit438.thread ], [ 1, %._crit_edge ], [ 1, %138 ] ret i32 %.0 } diff --git a/bench/openusd/optimized/zipFile.ll b/bench/openusd/optimized/zipFile.ll index 7612193f4ef..3459d8b0eac 100644 --- a/bench/openusd/optimized/zipFile.ll +++ b/bench/openusd/optimized/zipFile.ll @@ -1218,7 +1218,7 @@ define noundef nonnull align 8 dereferenceable(8) ptr @_ZN32pxrInternal_v0_24__p %2 = alloca %"class.pxrInternal_v0_24__pxrReserved__::UsdZipFile::Iterator", align 8 %3 = load ptr, ptr %0, align 8 %.not = icmp eq ptr %3, null - br i1 %.not, label %70, label %4 + br i1 %.not, label %71, label %4 4: ; preds = %1 %5 = load ptr, ptr %3, align 8 @@ -1327,24 +1327,24 @@ define noundef nonnull align 8 dereferenceable(8) ptr @_ZN32pxrInternal_v0_24__p store i64 %64, ptr %66, align 8 br label %70 -67: ; preds = %17, %4, %20, %46, %52 +67:; preds = %17, %4, %20, %46, %52 call void @_ZN32pxrInternal_v0_24__pxrReserved__10UsdZipFile8IteratorC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %2) - %68 = load ptr, ptr %2, align 8 + %69 = load ptr, ptr %2, align 8 store ptr null, ptr %2, align 8 - %69 = load ptr, ptr %0, align 8 - store ptr %68, ptr %0, align 8 - %.not.i.i.i.i.i = icmp eq ptr %69, null + %70 = load ptr, ptr %0, align 8 + store ptr %69, ptr %0, align 8 + %.not.i.i.i.i.i = icmp eq ptr %70, null br i1 %.not.i.i.i.i.i, label %_ZN32pxrInternal_v0_24__pxrReserved__10UsdZipFile8IteratoraSEOS1_.exit, label %_ZNKSt14default_deleteIN32pxrInternal_v0_24__pxrReserved__10UsdZipFile8Iterator13_IteratorDataEEclEPS3_.exit.i.i.i.i.i _ZNKSt14default_deleteIN32pxrInternal_v0_24__pxrReserved__10UsdZipFile8Iterator13_IteratorDataEEclEPS3_.exit.i.i.i.i.i: ; preds = %67 - call void @_ZdlPvm(ptr noundef nonnull %69, i64 noundef 80) #24 + call void @_ZdlPvm(ptr noundef nonnull %70, i64 noundef 80) #24 br label %_ZN32pxrInternal_v0_24__pxrReserved__10UsdZipFile8IteratoraSEOS1_.exit _ZN32pxrInternal_v0_24__pxrReserved__10UsdZipFile8IteratoraSEOS1_.exit: ; preds = %67, %_ZNKSt14default_deleteIN32pxrInternal_v0_24__pxrReserved__10UsdZipFile8Iterator13_IteratorDataEEclEPS3_.exit.i.i.i.i.i call void @_ZN32pxrInternal_v0_24__pxrReserved__10UsdZipFile8IteratorD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %2) #22 - br label %70 + br label %71 -70: ; preds = %58, %_ZN32pxrInternal_v0_24__pxrReserved__10UsdZipFile8IteratoraSEOS1_.exit, %1 +71: ; preds = %58, %_ZN32pxrInternal_v0_24__pxrReserved__10UsdZipFile8IteratoraSEOS1_.exit, %1 ret ptr %0 } @@ -1783,10 +1783,10 @@ _ZNSt10unique_ptrIN32pxrInternal_v0_24__pxrReserved__10UsdZipFile8Iterator13_Ite %57 = getelementptr inbounds nuw i8, ptr %55, i64 32 store ptr %55, ptr %0, align 8 store ptr %1, ptr %55, align 8 - %58 = getelementptr inbounds nuw i8, ptr %55, i64 8 - store i64 %2, ptr %58, align 8 - %59 = getelementptr inbounds nuw i8, ptr %55, i64 16 - store i32 67324752, ptr %59, align 8 + %57 = getelementptr inbounds nuw i8, ptr %55, i64 8 + store i64 %2, ptr %57, align 8 + %58 = getelementptr inbounds nuw i8, ptr %55, i64 16 + store i32 67324752, ptr %58, align 8 %.sroa.8.0..sroa_idx = getelementptr inbounds nuw i8, ptr %55, i64 20 store i16 %18, ptr %.sroa.8.0..sroa_idx, align 4 %.sroa.9.0..sroa_idx = getelementptr inbounds nuw i8, ptr %55, i64 22 @@ -1821,10 +1821,10 @@ _ZNSt10unique_ptrIN32pxrInternal_v0_24__pxrReserved__10UsdZipFile8Iterator13_Ite br label %_ZN32pxrInternal_v0_24__pxrReserved__12_GLOBAL__N_120_ReadLocalFileHeaderERNS0_12_InputStreamE.exit.thread _ZNSt10unique_ptrIN32pxrInternal_v0_24__pxrReserved__10UsdZipFile8Iterator13_IteratorDataESt14default_deleteIS3_EED2Ev.exit: ; preds = %54 - %63 = landingpad { ptr, i32 } + %64 = landingpad { ptr, i32 } cleanup store ptr null, ptr %0, align 8 - resume { ptr, i32 } %63 + resume { ptr, i32 } %64 _ZN32pxrInternal_v0_24__pxrReserved__12_GLOBAL__N_120_ReadLocalFileHeaderERNS0_12_InputStreamE.exit.thread: ; preds = %13, %48, %42, %16, %3, %_ZNSt10unique_ptrIN32pxrInternal_v0_24__pxrReserved__10UsdZipFile8Iterator13_IteratorDataESt14default_deleteIS3_EE5resetEPS3_.exit ret void diff --git a/bench/zstd/optimized/zstd_v07.ll b/bench/zstd/optimized/zstd_v07.ll index a7b31ed75f7..6ef4bd08c1c 100644 --- a/bench/zstd/optimized/zstd_v07.ll +++ b/bench/zstd/optimized/zstd_v07.ll @@ -7489,9 +7489,9 @@ define range(i64 -30, 1) i64 @ZSTDv07_decompressBegin_usingDict(ptr noundef capt call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #26 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #26 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %10) #26 - br i1 %77, label %79, label %ZSTDv07_decompress_insertDictionary.exit.thread + br i1 %77, label %81, label %ZSTDv07_decompress_insertDictionary.exit.thread -79: ; preds = %74 +81: ; preds = %74 %80 = getelementptr inbounds nuw i8, ptr %78, i64 12 %81 = icmp ugt ptr %80, %38 br i1 %81, label %ZSTDv07_decompress_insertDictionary.exit.thread, label %82 @@ -7499,35 +7499,35 @@ define range(i64 -30, 1) i64 @ZSTDv07_decompressBegin_usingDict(ptr noundef capt 82: ; preds = %79 %.371.val.i.i = load i32, ptr %78, align 1 store i32 %.371.val.i.i, ptr %20, align 8, !tbaa !3 - %83 = icmp ne i32 %.371.val.i.i, 0 - %84 = zext i32 %.371.val.i.i to i64 - %.not92.i.i = icmp ugt i64 %37, %84 - %or.cond.i.i = and i1 %83, %.not92.i.i - br i1 %or.cond.i.i, label %85, label %ZSTDv07_decompress_insertDictionary.exit.thread - -85: ; preds = %82 - %86 = getelementptr inbounds nuw i8, ptr %78, i64 4 - %.val102.i.i = load i32, ptr %86, align 1 - %87 = getelementptr inbounds nuw i8, ptr %0, i64 21564 - store i32 %.val102.i.i, ptr %87, align 4, !tbaa !3 - %88 = icmp ne i32 %.val102.i.i, 0 - %89 = zext i32 %.val102.i.i to i64 - %.not93.i.i = icmp ugt i64 %37, %89 - %or.cond95.i.i = and i1 %88, %.not93.i.i - br i1 %or.cond95.i.i, label %90, label %ZSTDv07_decompress_insertDictionary.exit.thread - -90: ; preds = %85 - %91 = getelementptr inbounds nuw i8, ptr %78, i64 8 - %.val.i.i = load i32, ptr %91, align 1 - %92 = getelementptr inbounds nuw i8, ptr %0, i64 21568 - store i32 %.val.i.i, ptr %92, align 8, !tbaa !3 - %93 = icmp ne i32 %.val.i.i, 0 - %94 = zext i32 %.val.i.i to i64 - %.not94.i.i = icmp ugt i64 %37, %94 - %or.cond96.i.i = and i1 %93, %.not94.i.i + %82 = icmp ne i32 %.371.val.i.i, 0 + %83 = zext i32 %.371.val.i.i to i64 + %.not92.i.i = icmp ugt i64 %37, %83 + %or.cond.i.i = and i1 %82, %.not92.i.i + br i1 %or.cond.i.i, label %84, label %ZSTDv07_decompress_insertDictionary.exit.thread + +84: ; preds = %82 + %85 = getelementptr inbounds nuw i8, ptr %78, i64 4 + %.val102.i.i = load i32, ptr %85, align 1 + %86 = getelementptr inbounds nuw i8, ptr %0, i64 21564 + store i32 %.val102.i.i, ptr %86, align 4, !tbaa !3 + %87 = icmp ne i32 %.val102.i.i, 0 + %88 = zext i32 %.val102.i.i to i64 + %.not93.i.i = icmp ugt i64 %37, %88 + %or.cond95.i.i = and i1 %87, %.not93.i.i + br i1 %or.cond95.i.i, label %89, label %ZSTDv07_decompress_insertDictionary.exit.thread + +89: ; preds = %84 + %90 = getelementptr inbounds nuw i8, ptr %78, i64 8 + %.val.i.i = load i32, ptr %90, align 1 + %91 = getelementptr inbounds nuw i8, ptr %0, i64 21568 + store i32 %.val.i.i, ptr %91, align 8, !tbaa !3 + %92 = icmp ne i32 %.val.i.i, 0 + %93 = zext i32 %.val.i.i to i64 + %.not94.i.i = icmp ugt i64 %37, %93 + %or.cond96.i.i = and i1 %92, %.not94.i.i br i1 %or.cond96.i.i, label %ZSTDv07_loadEntropy.exit.i, label %ZSTDv07_decompress_insertDictionary.exit.thread -ZSTDv07_loadEntropy.exit.i: ; preds = %90 +ZSTDv07_loadEntropy.exit.i: ; preds = %89 store i32 1, ptr %17, align 4, !tbaa !69 store i32 1, ptr %18, align 8, !tbaa !70 %95 = ptrtoint ptr %80 to i64 @@ -7552,7 +7552,7 @@ ZSTDv07_loadEntropy.exit.i: ; preds = %90 store ptr %38, ptr %15, align 8, !tbaa !81 br label %ZSTDv07_decompress_insertDictionary.exit.thread -ZSTDv07_decompress_insertDictionary.exit.thread: ; preds = %99, %30, %25, %.thread110.i.i, %.thread106.i.i, %.thread.i.i, %90, %85, %82, %79, %34, %48, %61, %74, %ZSTDv07_loadEntropy.exit.i, %3 +ZSTDv07_decompress_insertDictionary.exit.thread: ; preds = %99, %30, %25, %.thread110.i.i, %.thread106.i.i, %.thread.i.i, %89, %84, %82, %81, %34, %48, %61, %74, %ZSTDv07_loadEntropy.exit.i, %3 %.1 = phi i64 [ 0, %3 ], [ -30, %ZSTDv07_loadEntropy.exit.i ], [ -30, %74 ], [ -30, %61 ], [ -30, %48 ], [ -30, %34 ], [ -30, %79 ], [ -30, %82 ], [ -30, %85 ], [ -30, %90 ], [ -30, %.thread.i.i ], [ -30, %.thread106.i.i ], [ -30, %.thread110.i.i ], [ 0, %25 ], [ 0, %30 ], [ 0, %99 ] ret i64 %.1 }