From 963c45565fb29cca1ab1c82b4a98bc7eb4721d5c Mon Sep 17 00:00:00 2001 From: Yingwei Zheng Date: Tue, 20 Feb 2024 18:49:41 +0800 Subject: [PATCH 1/2] pre-commit: test PR82334 PR Link: https://github.com/llvm/llvm-project/pull/82334 --- 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 bba61ce1da6..fc3166e7fd3 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/82334" # Please rebase manually # git fetch origin From 6f96e12266910c6341676737ef9d12fd0ff7c6a6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 20 Feb 2024 19:31:00 +0800 Subject: [PATCH 2/2] pre-commit: Update --- bench/cvc5/optimized/cut_log.cpp.ll | 7 +- bench/harfbuzz/optimized/harfbuzz.cc.ll | 50 +- bench/harfbuzz/optimized/hb-subset-plan.cc.ll | 50 +- bench/libquic/optimized/p256-x86_64.c.ll | 316 +++++---- bench/mold/optimized/passes.cc.ARM32.cc.ll | 10 +- bench/mold/optimized/passes.cc.I386.cc.ll | 10 +- bench/node/optimized/simdutf.ll | 602 +++++++++--------- .../optimized/libcrypto-lib-ecp_nistz256.ll | 438 +++++++------ .../optimized/libcrypto-lib-params_dup.ll | 20 +- .../optimized/libcrypto-shlib-ecp_nistz256.ll | 438 +++++++------ .../optimized/libcrypto-shlib-params_dup.ll | 20 +- bench/protobuf/optimized/extension_set.cc.ll | 6 +- .../generated_message_reflection.cc.ll | 6 +- .../generated_message_tctable_lite.cc.ll | 4 +- bench/protobuf/optimized/message.cc.ll | 6 +- bench/protobuf/optimized/parse_context.cc.ll | 6 +- .../optimized/repeated_ptr_field.cc.ll | 2 +- bench/protobuf/optimized/wire_format.cc.ll | 26 +- bench/regex-rs/optimized/3i5c2elewnigtzfn.ll | 424 ++++++------ bench/regex-rs/optimized/5d10cjtvavkg3fib.ll | 141 ++-- 20 files changed, 1268 insertions(+), 1314 deletions(-) diff --git a/bench/cvc5/optimized/cut_log.cpp.ll b/bench/cvc5/optimized/cut_log.cpp.ll index 162e4c48d16..c897d35bcc6 100644 --- a/bench/cvc5/optimized/cut_log.cpp.ll +++ b/bench/cvc5/optimized/cut_log.cpp.ll @@ -1977,7 +1977,7 @@ _ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i.i: ; preds = %if.else.i.i to label %_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i.i unwind label %ehcleanup435 _ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i.i: ; preds = %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i.i - %add.ptr.i.i.i = getelementptr inbounds i32, ptr %call5.i.i.i.i.i.i22, i64 %sub.ptr.div.i.i.i.i.i + %add.ptr.i.i.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i.i22, i64 %sub.ptr.sub.i.i.i.i store i32 2147483647, ptr %add.ptr.i.i.i, align 4 br i1 %cmp.not.i.i.i, label %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit17.i.i.i, label %if.then.i.i.i.i.i.i @@ -1986,8 +1986,7 @@ if.then.i.i.i.i.i.i: ; preds = %_ZNSt12_Vector_base br label %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit17.i.i.i _ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit17.i.i.i: ; preds = %if.then.i.i.i.i.i.i, %_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i.i - %add.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i.i22, i64 %sub.ptr.sub.i.i.i.i - %incdec.ptr.i.i.i = getelementptr inbounds i8, ptr %add.ptr.i.i.i.i.i.i, i64 4 + %incdec.ptr.i.i.i = getelementptr inbounds i8, ptr %add.ptr.i.i.i, i64 4 %tobool.not.i.i.i.i = icmp eq ptr %sortedRemoved.sroa.0.0, null br i1 %tobool.not.i.i.i.i, label %invoke.cont7, label %if.then.i18.i.i.i @@ -2259,7 +2258,7 @@ while.cond197: ; preds = %while.cond197, %inv %headRemovedOrd.0.in = getelementptr inbounds i32, ptr %call5.i.i.i.i.i.i22, i64 %indvars.iv %headRemovedOrd.0 = load i32, ptr %headRemovedOrd.0.in, align 4 %cmp198 = icmp slt i32 %headRemovedOrd.0, %36 - %indvars.iv.next = add i64 %indvars.iv, 1 + %indvars.iv.next = add nsw i64 %indvars.iv, 1 br i1 %cmp198, label %while.cond197, label %while.end203, !llvm.loop !17 while.end203: ; preds = %while.cond197 diff --git a/bench/harfbuzz/optimized/harfbuzz.cc.ll b/bench/harfbuzz/optimized/harfbuzz.cc.ll index 57761072c72..cdfec15b3bf 100644 --- a/bench/harfbuzz/optimized/harfbuzz.cc.ll +++ b/bench/harfbuzz/optimized/harfbuzz.cc.ll @@ -269630,8 +269630,7 @@ if.end8.i.i.i: ; preds = %if.then5.i.i.i, %if br i1 %cmp.not.not.i.i.i, label %_ZNK2OT19CmapSubtableFormat413accelerator_t9get_glyphEjPj.exit, label %while.body.i.i.i, !llvm.loop !2654 if.end.i: ; preds = %_ZL14_hb_cmp_methodIjZNK2OT19CmapSubtableFormat413accelerator_t9get_glyphEjPjE11CustomRangeJjEEiPKvS6_DpT1_.exit.i.i.i - %sub.ptr.div.i = lshr exact i64 %mul.i.i.i, 1 - %arrayidx.i = getelementptr inbounds %"struct.OT::IntType", ptr %add.ptr12.i.i, i64 %sub.ptr.div.i + %arrayidx.i = getelementptr inbounds i8, ptr %add.ptr12.i.i, i64 %mul.i.i.i %11 = load i8, ptr %arrayidx.i, align 1 %conv.i.i.i = zext i8 %11 to i32 %shl.i.i.i = shl nuw nsw i32 %conv.i.i.i, 8 @@ -269643,45 +269642,38 @@ if.end.i: ; preds = %_ZL14_hb_cmp_method br i1 %cmp.i, label %if.end32.i, label %if.else.i if.else.i: ; preds = %if.end.i - %conv4.i = trunc i64 %sub.ptr.div.i to i32 %div12.i = lshr i32 %add.i.i13.i, 1 - %arrayidx12.i = getelementptr inbounds %"struct.OT::IntType", ptr %add.ptr4.i.i, i64 %sub.ptr.div.i - %13 = load i8, ptr %arrayidx12.i, align 1 - %conv.i.i19.i = zext i8 %13 to i32 - %shl.i.i20.neg.i = mul nsw i32 %conv.i.i19.i, -256 - %arrayidx3.i.i21.i = getelementptr inbounds i8, ptr %arrayidx12.i, i64 1 - %14 = load i8, ptr %arrayidx3.i.i21.i, align 1 - %conv4.i.i22.i = zext i8 %14 to i32 - %add.i.i23.neg38.i = sub nsw i32 %shl.i.i20.neg.i, %conv4.i.i22.i + %shl.i.i20.neg.i = mul nsw i32 %conv.i.i2.i.i.i.i.i, -256 + %add.i.i23.neg39.i = sub nsw i32 %shl.i.i20.neg.i, %conv4.i.i5.i.i.i.i.i %sub.i = sub i32 %codepoint, %div3.i.i - %add14.i = add i32 %sub.i, %conv4.i + %add14.i = add i32 %sub.i, %div9.i.i.i %add15.i = add i32 %add14.i, %div12.i - %sub17.i = add i32 %add15.i, %add.i.i23.neg38.i + %sub17.i = add i32 %add15.i, %add.i.i23.neg39.i %cmp18.not.i = icmp ult i32 %sub17.i, %div204.i.i br i1 %cmp18.not.i, label %if.end20.i, label %_ZNK2OT19CmapSubtableFormat413accelerator_t9get_glyphEjPj.exit if.end20.i: ; preds = %if.else.i %idxprom21.i = zext i32 %sub17.i to i64 %arrayidx22.i = getelementptr inbounds %"struct.OT::IntType", ptr %add.ptr16.i.i, i64 %idxprom21.i - %15 = load i8, ptr %arrayidx22.i, align 1 - %conv.i.i24.i = zext i8 %15 to i32 + %13 = load i8, ptr %arrayidx22.i, align 1 + %conv.i.i24.i = zext i8 %13 to i32 %shl.i.i25.i = shl nuw nsw i32 %conv.i.i24.i, 8 %arrayidx3.i.i26.i = getelementptr inbounds i8, ptr %arrayidx22.i, i64 1 - %16 = load i8, ptr %arrayidx3.i.i26.i, align 1 - %conv4.i.i27.i = zext i8 %16 to i32 + %14 = load i8, ptr %arrayidx3.i.i26.i, align 1 + %conv4.i.i27.i = zext i8 %14 to i32 %add.i.i28.i = or disjoint i32 %shl.i.i25.i, %conv4.i.i27.i %tobool24.not.i = icmp eq i32 %add.i.i28.i, 0 br i1 %tobool24.not.i, label %_ZNK2OT19CmapSubtableFormat413accelerator_t9get_glyphEjPj.exit, label %if.end32.i if.end32.i: ; preds = %if.end20.i, %if.end.i %add.i.i28.sink.i = phi i32 [ %codepoint, %if.end.i ], [ %add.i.i28.i, %if.end20.i ] - %arrayidx29.i = getelementptr inbounds %"struct.OT::IntType", ptr %add.ptr8.i.i, i64 %sub.ptr.div.i - %17 = load i8, ptr %arrayidx29.i, align 1 - %conv.i.i29.i = zext i8 %17 to i32 + %arrayidx29.i = getelementptr inbounds i8, ptr %add.ptr8.i.i, i64 %mul.i.i.i + %15 = load i8, ptr %arrayidx29.i, align 1 + %conv.i.i29.i = zext i8 %15 to i32 %shl.i.i30.i = shl nuw nsw i32 %conv.i.i29.i, 8 %arrayidx3.i.i31.i = getelementptr inbounds i8, ptr %arrayidx29.i, i64 1 - %18 = load i8, ptr %arrayidx3.i.i31.i, align 1 - %conv4.i.i32.i = zext i8 %18 to i32 + %16 = load i8, ptr %arrayidx3.i.i31.i, align 1 + %conv4.i.i32.i = zext i8 %16 to i32 %add.i.i33.i = or disjoint i32 %shl.i.i30.i, %conv4.i.i32.i %add31.i = add nuw nsw i32 %add.i.i33.i, %add.i.i28.sink.i %and.i = and i32 %add31.i, 65535 @@ -269927,10 +269919,9 @@ if.end8.i.i: ; preds = %if.then5.i.i, %if.t br i1 %cmp.not.not.i.i, label %return, label %while.body.i.i, !llvm.loop !2654 if.end: ; preds = %_ZL14_hb_cmp_methodIjZNK2OT19CmapSubtableFormat413accelerator_t9get_glyphEjPjE11CustomRangeJjEEiPKvS6_DpT1_.exit.i.i - %sub.ptr.div = lshr exact i64 %mul.i.i, 1 %idRangeOffset = getelementptr inbounds i8, ptr %this, i64 24 %7 = load ptr, ptr %idRangeOffset, align 8 - %arrayidx = getelementptr inbounds %"struct.OT::IntType", ptr %7, i64 %sub.ptr.div + %arrayidx = getelementptr inbounds i8, ptr %7, i64 %mul.i.i %8 = load i8, ptr %arrayidx, align 1 %conv.i.i = zext i8 %8 to i32 %shl.i.i = shl nuw nsw i32 %conv.i.i, 8 @@ -269942,22 +269933,21 @@ if.end: ; preds = %_ZL14_hb_cmp_method br i1 %cmp, label %if.end32, label %if.else if.else: ; preds = %if.end - %conv4 = trunc i64 %sub.ptr.div to i32 %div12 = lshr i32 %add.i.i13, 1 %startCount = getelementptr inbounds i8, ptr %this, i64 8 %10 = load ptr, ptr %startCount, align 8 - %arrayidx12 = getelementptr inbounds %"struct.OT::IntType", ptr %10, i64 %sub.ptr.div + %arrayidx12 = getelementptr inbounds i8, ptr %10, i64 %mul.i.i %11 = load i8, ptr %arrayidx12, align 1 %conv.i.i19 = zext i8 %11 to i32 %shl.i.i20.neg = mul nsw i32 %conv.i.i19, -256 %arrayidx3.i.i21 = getelementptr inbounds i8, ptr %arrayidx12, i64 1 %12 = load i8, ptr %arrayidx3.i.i21, align 1 %conv4.i.i22 = zext i8 %12 to i32 - %add.i.i23.neg38 = sub nsw i32 %shl.i.i20.neg, %conv4.i.i22 + %add.i.i23.neg39 = sub nsw i32 %shl.i.i20.neg, %conv4.i.i22 %sub = sub i32 %codepoint, %1 - %add14 = add i32 %sub, %conv4 + %add14 = add i32 %sub, %div9.i.i %add15 = add i32 %add14, %div12 - %sub17 = add i32 %add15, %add.i.i23.neg38 + %sub17 = add i32 %add15, %add.i.i23.neg39 %glyphIdArrayLength = getelementptr inbounds i8, ptr %this, i64 44 %13 = load i32, ptr %glyphIdArrayLength, align 4 %cmp18.not = icmp ult i32 %sub17, %13 @@ -269982,7 +269972,7 @@ if.end32: ; preds = %if.end20, %if.end %add.i.i28.sink = phi i32 [ %codepoint, %if.end ], [ %add.i.i28, %if.end20 ] %idDelta27 = getelementptr inbounds i8, ptr %this, i64 16 %17 = load ptr, ptr %idDelta27, align 8 - %arrayidx29 = getelementptr inbounds %"struct.OT::IntType", ptr %17, i64 %sub.ptr.div + %arrayidx29 = getelementptr inbounds i8, ptr %17, i64 %mul.i.i %18 = load i8, ptr %arrayidx29, align 1 %conv.i.i29 = zext i8 %18 to i32 %shl.i.i30 = shl nuw nsw i32 %conv.i.i29, 8 diff --git a/bench/harfbuzz/optimized/hb-subset-plan.cc.ll b/bench/harfbuzz/optimized/hb-subset-plan.cc.ll index 66d96c59e2a..bafd1de365e 100644 --- a/bench/harfbuzz/optimized/hb-subset-plan.cc.ll +++ b/bench/harfbuzz/optimized/hb-subset-plan.cc.ll @@ -24525,8 +24525,7 @@ if.end8.i.i.i: ; preds = %if.then5.i.i.i, %if br i1 %cmp.not.not.i.i.i, label %_ZNK2OT19CmapSubtableFormat413accelerator_t9get_glyphEjPj.exit, label %while.body.i.i.i, !llvm.loop !145 if.end.i: ; preds = %_ZL14_hb_cmp_methodIjZNK2OT19CmapSubtableFormat413accelerator_t9get_glyphEjPjE11CustomRangeJjEEiPKvS6_DpT1_.exit.i.i.i - %sub.ptr.div.i = lshr exact i64 %mul.i.i.i, 1 - %arrayidx.i = getelementptr inbounds %"struct.OT::IntType.3", ptr %add.ptr12.i.i, i64 %sub.ptr.div.i + %arrayidx.i = getelementptr inbounds i8, ptr %add.ptr12.i.i, i64 %mul.i.i.i %11 = load i8, ptr %arrayidx.i, align 1 %conv.i.i.i = zext i8 %11 to i32 %shl.i.i.i = shl nuw nsw i32 %conv.i.i.i, 8 @@ -24538,45 +24537,38 @@ if.end.i: ; preds = %_ZL14_hb_cmp_method br i1 %cmp.i, label %if.end32.i, label %if.else.i if.else.i: ; preds = %if.end.i - %conv4.i = trunc i64 %sub.ptr.div.i to i32 %div12.i = lshr i32 %add.i.i13.i, 1 - %arrayidx12.i = getelementptr inbounds %"struct.OT::IntType.3", ptr %add.ptr4.i.i, i64 %sub.ptr.div.i - %13 = load i8, ptr %arrayidx12.i, align 1 - %conv.i.i19.i = zext i8 %13 to i32 - %shl.i.i20.neg.i = mul nsw i32 %conv.i.i19.i, -256 - %arrayidx3.i.i21.i = getelementptr inbounds i8, ptr %arrayidx12.i, i64 1 - %14 = load i8, ptr %arrayidx3.i.i21.i, align 1 - %conv4.i.i22.i = zext i8 %14 to i32 - %add.i.i23.neg38.i = sub nsw i32 %shl.i.i20.neg.i, %conv4.i.i22.i + %shl.i.i20.neg.i = mul nsw i32 %conv.i.i2.i.i.i.i.i, -256 + %add.i.i23.neg39.i = sub nsw i32 %shl.i.i20.neg.i, %conv4.i.i5.i.i.i.i.i %sub.i = sub i32 %codepoint, %div3.i.i - %add14.i = add i32 %sub.i, %conv4.i + %add14.i = add i32 %sub.i, %div9.i.i.i %add15.i = add i32 %add14.i, %div12.i - %sub17.i = add i32 %add15.i, %add.i.i23.neg38.i + %sub17.i = add i32 %add15.i, %add.i.i23.neg39.i %cmp18.not.i = icmp ult i32 %sub17.i, %div204.i.i br i1 %cmp18.not.i, label %if.end20.i, label %_ZNK2OT19CmapSubtableFormat413accelerator_t9get_glyphEjPj.exit if.end20.i: ; preds = %if.else.i %idxprom21.i = zext i32 %sub17.i to i64 %arrayidx22.i = getelementptr inbounds %"struct.OT::IntType.3", ptr %add.ptr16.i.i, i64 %idxprom21.i - %15 = load i8, ptr %arrayidx22.i, align 1 - %conv.i.i24.i = zext i8 %15 to i32 + %13 = load i8, ptr %arrayidx22.i, align 1 + %conv.i.i24.i = zext i8 %13 to i32 %shl.i.i25.i = shl nuw nsw i32 %conv.i.i24.i, 8 %arrayidx3.i.i26.i = getelementptr inbounds i8, ptr %arrayidx22.i, i64 1 - %16 = load i8, ptr %arrayidx3.i.i26.i, align 1 - %conv4.i.i27.i = zext i8 %16 to i32 + %14 = load i8, ptr %arrayidx3.i.i26.i, align 1 + %conv4.i.i27.i = zext i8 %14 to i32 %add.i.i28.i = or disjoint i32 %shl.i.i25.i, %conv4.i.i27.i %tobool24.not.i = icmp eq i32 %add.i.i28.i, 0 br i1 %tobool24.not.i, label %_ZNK2OT19CmapSubtableFormat413accelerator_t9get_glyphEjPj.exit, label %if.end32.i if.end32.i: ; preds = %if.end20.i, %if.end.i %add.i.i28.sink.i = phi i32 [ %codepoint, %if.end.i ], [ %add.i.i28.i, %if.end20.i ] - %arrayidx29.i = getelementptr inbounds %"struct.OT::IntType.3", ptr %add.ptr8.i.i, i64 %sub.ptr.div.i - %17 = load i8, ptr %arrayidx29.i, align 1 - %conv.i.i29.i = zext i8 %17 to i32 + %arrayidx29.i = getelementptr inbounds i8, ptr %add.ptr8.i.i, i64 %mul.i.i.i + %15 = load i8, ptr %arrayidx29.i, align 1 + %conv.i.i29.i = zext i8 %15 to i32 %shl.i.i30.i = shl nuw nsw i32 %conv.i.i29.i, 8 %arrayidx3.i.i31.i = getelementptr inbounds i8, ptr %arrayidx29.i, i64 1 - %18 = load i8, ptr %arrayidx3.i.i31.i, align 1 - %conv4.i.i32.i = zext i8 %18 to i32 + %16 = load i8, ptr %arrayidx3.i.i31.i, align 1 + %conv4.i.i32.i = zext i8 %16 to i32 %add.i.i33.i = or disjoint i32 %shl.i.i30.i, %conv4.i.i32.i %add31.i = add nuw nsw i32 %add.i.i33.i, %add.i.i28.sink.i %and.i = and i32 %add31.i, 65535 @@ -24822,10 +24814,9 @@ if.end8.i.i: ; preds = %if.then5.i.i, %if.t br i1 %cmp.not.not.i.i, label %return, label %while.body.i.i, !llvm.loop !145 if.end: ; preds = %_ZL14_hb_cmp_methodIjZNK2OT19CmapSubtableFormat413accelerator_t9get_glyphEjPjE11CustomRangeJjEEiPKvS6_DpT1_.exit.i.i - %sub.ptr.div = lshr exact i64 %mul.i.i, 1 %idRangeOffset = getelementptr inbounds i8, ptr %this, i64 24 %7 = load ptr, ptr %idRangeOffset, align 8 - %arrayidx = getelementptr inbounds %"struct.OT::IntType.3", ptr %7, i64 %sub.ptr.div + %arrayidx = getelementptr inbounds i8, ptr %7, i64 %mul.i.i %8 = load i8, ptr %arrayidx, align 1 %conv.i.i = zext i8 %8 to i32 %shl.i.i = shl nuw nsw i32 %conv.i.i, 8 @@ -24837,22 +24828,21 @@ if.end: ; preds = %_ZL14_hb_cmp_method br i1 %cmp, label %if.end32, label %if.else if.else: ; preds = %if.end - %conv4 = trunc i64 %sub.ptr.div to i32 %div12 = lshr i32 %add.i.i13, 1 %startCount = getelementptr inbounds i8, ptr %this, i64 8 %10 = load ptr, ptr %startCount, align 8 - %arrayidx12 = getelementptr inbounds %"struct.OT::IntType.3", ptr %10, i64 %sub.ptr.div + %arrayidx12 = getelementptr inbounds i8, ptr %10, i64 %mul.i.i %11 = load i8, ptr %arrayidx12, align 1 %conv.i.i19 = zext i8 %11 to i32 %shl.i.i20.neg = mul nsw i32 %conv.i.i19, -256 %arrayidx3.i.i21 = getelementptr inbounds i8, ptr %arrayidx12, i64 1 %12 = load i8, ptr %arrayidx3.i.i21, align 1 %conv4.i.i22 = zext i8 %12 to i32 - %add.i.i23.neg38 = sub nsw i32 %shl.i.i20.neg, %conv4.i.i22 + %add.i.i23.neg39 = sub nsw i32 %shl.i.i20.neg, %conv4.i.i22 %sub = sub i32 %codepoint, %1 - %add14 = add i32 %sub, %conv4 + %add14 = add i32 %sub, %div9.i.i %add15 = add i32 %add14, %div12 - %sub17 = add i32 %add15, %add.i.i23.neg38 + %sub17 = add i32 %add15, %add.i.i23.neg39 %glyphIdArrayLength = getelementptr inbounds i8, ptr %this, i64 44 %13 = load i32, ptr %glyphIdArrayLength, align 4 %cmp18.not = icmp ult i32 %sub17, %13 @@ -24877,7 +24867,7 @@ if.end32: ; preds = %if.end20, %if.end %add.i.i28.sink = phi i32 [ %codepoint, %if.end ], [ %add.i.i28, %if.end20 ] %idDelta27 = getelementptr inbounds i8, ptr %this, i64 16 %17 = load ptr, ptr %idDelta27, align 8 - %arrayidx29 = getelementptr inbounds %"struct.OT::IntType.3", ptr %17, i64 %sub.ptr.div + %arrayidx29 = getelementptr inbounds i8, ptr %17, i64 %mul.i.i %18 = load i8, ptr %arrayidx29, align 1 %conv.i.i29 = zext i8 %18 to i32 %shl.i.i30 = shl nuw nsw i32 %conv.i.i29, 8 diff --git a/bench/libquic/optimized/p256-x86_64.c.ll b/bench/libquic/optimized/p256-x86_64.c.ll index 38189f87e42..697b2cc083b 100644 --- a/bench/libquic/optimized/p256-x86_64.c.ll +++ b/bench/libquic/optimized/p256-x86_64.c.ll @@ -340,54 +340,53 @@ for.body68.preheader: ; preds = %if.end18, %for.cond for.body: ; preds = %for.body.lr.ph, %for.body %indvars.iv = phi i64 [ 0, %for.body.lr.ph ], [ %indvars.iv.next, %for.body ] - %8 = lshr exact i64 %indvars.iv, 3 - %arrayidx = getelementptr inbounds i64, ptr %1, i64 %8 - %9 = load i64, ptr %arrayidx, align 8 - %conv = trunc i64 %9 to i8 + %arrayidx = getelementptr inbounds i8, ptr %1, i64 %indvars.iv + %8 = load i64, ptr %arrayidx, align 8 + %conv = trunc i64 %8 to i8 %arrayidx22 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %indvars.iv store i8 %conv, ptr %arrayidx22, align 8 - %shr = lshr i64 %9, 8 + %shr = lshr i64 %8, 8 %conv24 = trunc i64 %shr to i8 - %10 = or disjoint i64 %indvars.iv, 1 - %arrayidx27 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %10 + %9 = or disjoint i64 %indvars.iv, 1 + %arrayidx27 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %9 store i8 %conv24, ptr %arrayidx27, align 1 - %shr28 = lshr i64 %9, 16 + %shr28 = lshr i64 %8, 16 %conv30 = trunc i64 %shr28 to i8 - %11 = or disjoint i64 %indvars.iv, 2 - %arrayidx33 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %11 + %10 = or disjoint i64 %indvars.iv, 2 + %arrayidx33 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %10 store i8 %conv30, ptr %arrayidx33, align 2 - %shr34 = lshr i64 %9, 24 + %shr34 = lshr i64 %8, 24 %conv36 = trunc i64 %shr34 to i8 - %12 = or disjoint i64 %indvars.iv, 3 - %arrayidx39 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %12 + %11 = or disjoint i64 %indvars.iv, 3 + %arrayidx39 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %11 store i8 %conv36, ptr %arrayidx39, align 1 - %shr40 = lshr i64 %9, 32 + %shr40 = lshr i64 %8, 32 %conv42 = trunc i64 %shr40 to i8 - %13 = or disjoint i64 %indvars.iv, 4 - %arrayidx45 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %13 + %12 = or disjoint i64 %indvars.iv, 4 + %arrayidx45 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %12 store i8 %conv42, ptr %arrayidx45, align 4 - %shr46 = lshr i64 %9, 40 + %shr46 = lshr i64 %8, 40 %conv48 = trunc i64 %shr46 to i8 - %14 = or disjoint i64 %indvars.iv, 5 - %arrayidx51 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %14 + %13 = or disjoint i64 %indvars.iv, 5 + %arrayidx51 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %13 store i8 %conv48, ptr %arrayidx51, align 1 - %shr52 = lshr i64 %9, 48 + %shr52 = lshr i64 %8, 48 %conv54 = trunc i64 %shr52 to i8 - %15 = or disjoint i64 %indvars.iv, 6 - %arrayidx57 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %15 + %14 = or disjoint i64 %indvars.iv, 6 + %arrayidx57 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %14 store i8 %conv54, ptr %arrayidx57, align 2 - %shr58 = lshr i64 %9, 56 + %shr58 = lshr i64 %8, 56 %conv60 = trunc i64 %shr58 to i8 - %16 = or disjoint i64 %indvars.iv, 7 - %arrayidx63 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %16 + %15 = or disjoint i64 %indvars.iv, 7 + %arrayidx63 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %15 store i8 %conv60, ptr %arrayidx63, align 1 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 8 %cmp19 = icmp ult i64 %indvars.iv.next, %2 br i1 %cmp19, label %for.body, label %for.cond65.preheader, !llvm.loop !15 for.end72: ; preds = %for.body68.preheader, %for.cond65.preheader - %17 = load i8, ptr %p_str, align 16 - %conv74 = zext i8 %17 to i32 + %16 = load i8, ptr %p_str, align 16 + %conv74 = zext i8 %16 to i32 %shl = shl nuw nsw i32 %conv74, 1 %and75 = and i32 %shl, 254 %shr.i = lshr i32 %and75, 7 @@ -409,24 +408,24 @@ for.end72: ; preds = %for.body68.preheade %conv84 = zext nneg i32 %and7.i to i64 %sub.i56 = sub nsw i64 0, %conv84 %not.i57 = add nsw i64 %conv84, -1 - %18 = load <2 x i64>, ptr %Z, align 32 - %19 = insertelement <2 x i64> poison, i64 %sub.i56, i64 0 - %20 = shufflevector <2 x i64> %19, <2 x i64> poison, <2 x i32> zeroinitializer - %21 = and <2 x i64> %18, %20 - %22 = load <2 x i64>, ptr %Y, align 32 - %23 = insertelement <2 x i64> poison, i64 %not.i57, i64 0 - %24 = shufflevector <2 x i64> %23, <2 x i64> poison, <2 x i32> zeroinitializer - %25 = and <2 x i64> %24, %22 - %26 = xor <2 x i64> %25, %21 - store <2 x i64> %26, ptr %Y, align 32 + %17 = load <2 x i64>, ptr %Z, align 32 + %18 = insertelement <2 x i64> poison, i64 %sub.i56, i64 0 + %19 = shufflevector <2 x i64> %18, <2 x i64> poison, <2 x i32> zeroinitializer + %20 = and <2 x i64> %17, %19 + %21 = load <2 x i64>, ptr %Y, align 32 + %22 = insertelement <2 x i64> poison, i64 %not.i57, i64 0 + %23 = shufflevector <2 x i64> %22, <2 x i64> poison, <2 x i32> zeroinitializer + %24 = and <2 x i64> %23, %21 + %25 = xor <2 x i64> %24, %20 + store <2 x i64> %25, ptr %Y, align 32 %arrayidx10.i = getelementptr inbounds i8, ptr %p, i64 80 %arrayidx12.i = getelementptr inbounds i8, ptr %p, i64 48 - %27 = load <2 x i64>, ptr %arrayidx10.i, align 16 - %28 = and <2 x i64> %27, %20 - %29 = load <2 x i64>, ptr %arrayidx12.i, align 16 - %30 = and <2 x i64> %29, %24 - %31 = xor <2 x i64> %30, %28 - store <2 x i64> %31, ptr %arrayidx12.i, align 16 + %26 = load <2 x i64>, ptr %arrayidx10.i, align 16 + %27 = and <2 x i64> %26, %19 + %28 = load <2 x i64>, ptr %arrayidx12.i, align 16 + %29 = and <2 x i64> %28, %23 + %30 = xor <2 x i64> %29, %27 + store <2 x i64> %30, ptr %arrayidx12.i, align 16 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 32 dereferenceable(32) %Z, ptr noundef nonnull align 16 dereferenceable(32) @ONE, i64 32, i1 false) %Z109 = getelementptr inbounds i8, ptr %t, i64 64 %Y111 = getelementptr inbounds i8, ptr %t, i64 32 @@ -441,13 +440,13 @@ for.body90: ; preds = %for.end72, %for.bod %div9155 = lshr i32 %sub, 3 %idxprom92 = zext nneg i32 %div9155 to i64 %arrayidx93 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %idxprom92 - %32 = load i8, ptr %arrayidx93, align 1 - %conv94 = zext i8 %32 to i32 + %31 = load i8, ptr %arrayidx93, align 1 + %conv94 = zext i8 %31 to i32 %add95 = add nuw nsw i32 %div9155, 1 %idxprom96 = zext nneg i32 %add95 to i64 %arrayidx97 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %idxprom96 - %33 = load i8, ptr %arrayidx97, align 1 - %conv98 = zext i8 %33 to i32 + %32 = load i8, ptr %arrayidx97, align 1 + %conv98 = zext i8 %32 to i32 %shl99 = shl nuw nsw i32 %conv98, 8 %or = or disjoint i32 %shl99, %conv94 %rem = and i32 %sub, 7 @@ -472,22 +471,22 @@ for.body90: ; preds = %for.end72, %for.bod %conv118 = zext nneg i32 %and7.i71 to i64 %sub.i73 = sub nsw i64 0, %conv118 %not.i74 = add nsw i64 %conv118, -1 - %34 = load <2 x i64>, ptr %Z109, align 32 - %35 = insertelement <2 x i64> poison, i64 %sub.i73, i64 0 - %36 = shufflevector <2 x i64> %35, <2 x i64> poison, <2 x i32> zeroinitializer - %37 = and <2 x i64> %34, %36 - %38 = load <2 x i64>, ptr %Y111, align 32 - %39 = insertelement <2 x i64> poison, i64 %not.i74, i64 0 - %40 = shufflevector <2 x i64> %39, <2 x i64> poison, <2 x i32> zeroinitializer - %41 = and <2 x i64> %40, %38 - %42 = xor <2 x i64> %41, %37 - store <2 x i64> %42, ptr %Y111, align 32 - %43 = load <2 x i64>, ptr %arrayidx10.i83, align 16 - %44 = and <2 x i64> %43, %36 - %45 = load <2 x i64>, ptr %arrayidx12.i85, align 16 - %46 = and <2 x i64> %45, %40 - %47 = xor <2 x i64> %46, %44 - store <2 x i64> %47, ptr %arrayidx12.i85, align 16 + %33 = load <2 x i64>, ptr %Z109, align 32 + %34 = insertelement <2 x i64> poison, i64 %sub.i73, i64 0 + %35 = shufflevector <2 x i64> %34, <2 x i64> poison, <2 x i32> zeroinitializer + %36 = and <2 x i64> %33, %35 + %37 = load <2 x i64>, ptr %Y111, align 32 + %38 = insertelement <2 x i64> poison, i64 %not.i74, i64 0 + %39 = shufflevector <2 x i64> %38, <2 x i64> poison, <2 x i32> zeroinitializer + %40 = and <2 x i64> %39, %37 + %41 = xor <2 x i64> %40, %36 + store <2 x i64> %41, ptr %Y111, align 32 + %42 = load <2 x i64>, ptr %arrayidx10.i83, align 16 + %43 = and <2 x i64> %42, %35 + %44 = load <2 x i64>, ptr %arrayidx12.i85, align 16 + %45 = and <2 x i64> %44, %39 + %46 = xor <2 x i64> %45, %43 + store <2 x i64> %46, ptr %arrayidx12.i85, align 16 call void @ecp_nistz256_point_add_affine(ptr noundef nonnull %p, ptr noundef nonnull %p, ptr noundef nonnull %t) #6 %indvars.iv.next134 = add nuw nsw i64 %indvars.iv133, 1 %exitcond.not = icmp eq i64 %indvars.iv.next134, 37 @@ -561,107 +560,106 @@ if.end16.i: ; preds = %if.end11.i, %lor.lh %ctx.addr.1.i = phi ptr [ %ctx.addr.2, %lor.lhs.false.i ], [ %ctx.addr.0.i, %if.end11.i ] %p_scalar.addr.0.i = phi ptr [ %p_scalar, %lor.lhs.false.i ], [ %call8.i, %if.end11.i ] %top.i = getelementptr inbounds i8, ptr %p_scalar.addr.0.i, i64 8 - %48 = load i32, ptr %top.i, align 8 - %cmp17193.i = icmp sgt i32 %48, 0 + %47 = load i32, ptr %top.i, align 8 + %cmp17193.i = icmp sgt i32 %47, 0 br i1 %cmp17193.i, label %for.body.lr.ph.i, label %for.body66.preheader.i for.body.lr.ph.i: ; preds = %if.end16.i - %mul.i = shl nsw i32 %48, 3 - %49 = load ptr, ptr %p_scalar.addr.0.i, align 8 - %50 = zext nneg i32 %mul.i to i64 + %mul.i = shl nsw i32 %47, 3 + %48 = load ptr, ptr %p_scalar.addr.0.i, align 8 + %49 = zext nneg i32 %mul.i to i64 br label %for.body.i for.cond63.preheader.i: ; preds = %for.body.i - %51 = trunc i64 %indvars.iv.next.i to i32 - %cmp64195.i = icmp ult i32 %51, 33 + %50 = trunc i64 %indvars.iv.next.i to i32 + %cmp64195.i = icmp ult i32 %50, 33 br i1 %cmp64195.i, label %for.body66.preheader.i, label %for.end70.i for.body66.preheader.i: ; preds = %for.cond63.preheader.i, %if.end16.i - %j.0.lcssa212.i = phi i32 [ %51, %for.cond63.preheader.i ], [ 0, %if.end16.i ] - %52 = zext nneg i32 %j.0.lcssa212.i to i64 - %scevgep.i = getelementptr i8, ptr %p_str.i, i64 %52 - %53 = sub nuw nsw i32 32, %j.0.lcssa212.i - %54 = zext nneg i32 %53 to i64 - %55 = add nuw nsw i64 %54, 1 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %scevgep.i, i8 0, i64 %55, i1 false) + %j.0.lcssa212.i = phi i32 [ %50, %for.cond63.preheader.i ], [ 0, %if.end16.i ] + %51 = zext nneg i32 %j.0.lcssa212.i to i64 + %scevgep.i = getelementptr i8, ptr %p_str.i, i64 %51 + %52 = sub nuw nsw i32 32, %j.0.lcssa212.i + %53 = zext nneg i32 %52 to i64 + %54 = add nuw nsw i64 %53, 1 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %scevgep.i, i8 0, i64 %54, i1 false) br label %for.end70.i for.body.i: ; preds = %for.body.i, %for.body.lr.ph.i %indvars.iv.i = phi i64 [ 0, %for.body.lr.ph.i ], [ %indvars.iv.next.i, %for.body.i ] - %56 = lshr exact i64 %indvars.iv.i, 3 - %arrayidx.i = getelementptr inbounds i64, ptr %49, i64 %56 - %57 = load i64, ptr %arrayidx.i, align 8 - %conv.i = trunc i64 %57 to i8 + %arrayidx.i = getelementptr inbounds i8, ptr %48, i64 %indvars.iv.i + %55 = load i64, ptr %arrayidx.i, align 8 + %conv.i = trunc i64 %55 to i8 %arrayidx20.i = getelementptr inbounds [33 x i8], ptr %p_str.i, i64 0, i64 %indvars.iv.i store i8 %conv.i, ptr %arrayidx20.i, align 8 - %shr.i95 = lshr i64 %57, 8 + %shr.i95 = lshr i64 %55, 8 %conv22.i = trunc i64 %shr.i95 to i8 - %58 = or disjoint i64 %indvars.iv.i, 1 - %arrayidx25.i = getelementptr inbounds [33 x i8], ptr %p_str.i, i64 0, i64 %58 + %56 = or disjoint i64 %indvars.iv.i, 1 + %arrayidx25.i = getelementptr inbounds [33 x i8], ptr %p_str.i, i64 0, i64 %56 store i8 %conv22.i, ptr %arrayidx25.i, align 1 - %shr26.i = lshr i64 %57, 16 + %shr26.i = lshr i64 %55, 16 %conv28.i = trunc i64 %shr26.i to i8 - %59 = or disjoint i64 %indvars.iv.i, 2 - %arrayidx31.i = getelementptr inbounds [33 x i8], ptr %p_str.i, i64 0, i64 %59 + %57 = or disjoint i64 %indvars.iv.i, 2 + %arrayidx31.i = getelementptr inbounds [33 x i8], ptr %p_str.i, i64 0, i64 %57 store i8 %conv28.i, ptr %arrayidx31.i, align 2 - %shr32.i = lshr i64 %57, 24 + %shr32.i = lshr i64 %55, 24 %conv34.i = trunc i64 %shr32.i to i8 - %60 = or disjoint i64 %indvars.iv.i, 3 - %arrayidx37.i = getelementptr inbounds [33 x i8], ptr %p_str.i, i64 0, i64 %60 + %58 = or disjoint i64 %indvars.iv.i, 3 + %arrayidx37.i = getelementptr inbounds [33 x i8], ptr %p_str.i, i64 0, i64 %58 store i8 %conv34.i, ptr %arrayidx37.i, align 1 - %shr38.i = lshr i64 %57, 32 + %shr38.i = lshr i64 %55, 32 %conv40.i = trunc i64 %shr38.i to i8 - %61 = or disjoint i64 %indvars.iv.i, 4 - %arrayidx43.i = getelementptr inbounds [33 x i8], ptr %p_str.i, i64 0, i64 %61 + %59 = or disjoint i64 %indvars.iv.i, 4 + %arrayidx43.i = getelementptr inbounds [33 x i8], ptr %p_str.i, i64 0, i64 %59 store i8 %conv40.i, ptr %arrayidx43.i, align 4 - %shr44.i = lshr i64 %57, 40 + %shr44.i = lshr i64 %55, 40 %conv46.i = trunc i64 %shr44.i to i8 - %62 = or disjoint i64 %indvars.iv.i, 5 - %arrayidx49.i = getelementptr inbounds [33 x i8], ptr %p_str.i, i64 0, i64 %62 + %60 = or disjoint i64 %indvars.iv.i, 5 + %arrayidx49.i = getelementptr inbounds [33 x i8], ptr %p_str.i, i64 0, i64 %60 store i8 %conv46.i, ptr %arrayidx49.i, align 1 - %shr50.i = lshr i64 %57, 48 + %shr50.i = lshr i64 %55, 48 %conv52.i = trunc i64 %shr50.i to i8 - %63 = or disjoint i64 %indvars.iv.i, 6 - %arrayidx55.i = getelementptr inbounds [33 x i8], ptr %p_str.i, i64 0, i64 %63 + %61 = or disjoint i64 %indvars.iv.i, 6 + %arrayidx55.i = getelementptr inbounds [33 x i8], ptr %p_str.i, i64 0, i64 %61 store i8 %conv52.i, ptr %arrayidx55.i, align 2 - %shr56.i = lshr i64 %57, 56 + %shr56.i = lshr i64 %55, 56 %conv58.i = trunc i64 %shr56.i to i8 - %64 = or disjoint i64 %indvars.iv.i, 7 - %arrayidx61.i = getelementptr inbounds [33 x i8], ptr %p_str.i, i64 0, i64 %64 + %62 = or disjoint i64 %indvars.iv.i, 7 + %arrayidx61.i = getelementptr inbounds [33 x i8], ptr %p_str.i, i64 0, i64 %62 store i8 %conv58.i, ptr %arrayidx61.i, align 1 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 8 - %cmp17.i = icmp ult i64 %indvars.iv.next.i, %50 + %cmp17.i = icmp ult i64 %indvars.iv.next.i, %49 br i1 %cmp17.i, label %for.body.i, label %for.cond63.preheader.i, !llvm.loop !17 for.end70.i: ; preds = %for.body66.preheader.i, %for.cond63.preheader.i %top.i.i = getelementptr inbounds i8, ptr %p_, i64 16 - %65 = load i32, ptr %top.i.i, align 8 - %cmp.i.i = icmp sgt i32 %65, 4 + %63 = load i32, ptr %top.i.i, align 8 + %cmp.i.i = icmp sgt i32 %63, 4 br i1 %cmp.i.i, label %if.then88.i, label %lor.lhs.false76.i lor.lhs.false76.i: ; preds = %for.end70.i %X73.i = getelementptr inbounds i8, ptr %p_, i64 8 call void @llvm.memset.p0.i64(ptr noundef nonnull align 64 dereferenceable(32) %table.i, i8 0, i64 32, i1 false) - %66 = load ptr, ptr %X73.i, align 8 - %conv.i.i = sext i32 %65 to i64 + %64 = load ptr, ptr %X73.i, align 8 + %conv.i.i = sext i32 %63 to i64 %mul.i.i = shl nsw i64 %conv.i.i, 3 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 64 %table.i, ptr align 8 %66, i64 %mul.i.i, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 64 %table.i, ptr align 8 %64, i64 %mul.i.i, i1 false) %top.i107.i = getelementptr inbounds i8, ptr %p_, i64 40 - %67 = load i32, ptr %top.i107.i, align 8 - %cmp.i108.i = icmp sgt i32 %67, 4 + %65 = load i32, ptr %top.i107.i, align 8 + %cmp.i108.i = icmp sgt i32 %65, 4 br i1 %cmp.i108.i, label %if.then88.i, label %lor.lhs.false82.i lor.lhs.false82.i: ; preds = %lor.lhs.false76.i %Y79.i = getelementptr inbounds i8, ptr %p_, i64 32 %Y.i = getelementptr inbounds i8, ptr %table.i, i64 32 call void @llvm.memset.p0.i64(ptr noundef nonnull align 32 dereferenceable(32) %Y.i, i8 0, i64 32, i1 false) - %68 = load ptr, ptr %Y79.i, align 8 - %conv.i110.i = sext i32 %67 to i64 + %66 = load ptr, ptr %Y79.i, align 8 + %conv.i110.i = sext i32 %65 to i64 %mul.i111.i = shl nsw i64 %conv.i110.i, 3 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 32 %Y.i, ptr align 8 %68, i64 %mul.i111.i, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 32 %Y.i, ptr align 8 %66, i64 %mul.i111.i, i1 false) %top.i114.i = getelementptr inbounds i8, ptr %p_, i64 64 - %69 = load i32, ptr %top.i114.i, align 8 - %cmp.i115.i = icmp sgt i32 %69, 4 + %67 = load i32, ptr %top.i114.i, align 8 + %cmp.i115.i = icmp sgt i32 %67, 4 br i1 %cmp.i115.i, label %if.then88.i, label %if.end89.i if.then88.i: ; preds = %lor.lhs.false82.i, %lor.lhs.false76.i, %for.end70.i @@ -672,10 +670,10 @@ if.end89.i: ; preds = %lor.lhs.false82.i %Z85.i = getelementptr inbounds i8, ptr %p_, i64 56 %Z.i = getelementptr inbounds i8, ptr %table.i, i64 64 call void @llvm.memset.p0.i64(ptr noundef nonnull align 64 dereferenceable(32) %Z.i, i8 0, i64 32, i1 false) - %70 = load ptr, ptr %Z85.i, align 8 - %conv.i117.i = sext i32 %69 to i64 + %68 = load ptr, ptr %Z85.i, align 8 + %conv.i117.i = sext i32 %67 to i64 %mul.i118.i = shl nsw i64 %conv.i117.i, 3 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 64 %Z.i, ptr align 8 %70, i64 %mul.i118.i, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 64 %Z.i, ptr align 8 %68, i64 %mul.i118.i, i1 false) %arrayidx90.i = getelementptr inbounds i8, ptr %table.i, i64 96 call void @ecp_nistz256_point_double(ptr noundef nonnull %arrayidx90.i, ptr noundef nonnull %table.i) #6 %arrayidx92.i = getelementptr inbounds i8, ptr %table.i, i64 192 @@ -707,9 +705,9 @@ if.end89.i: ; preds = %lor.lhs.false82.i %arrayidx125.i = getelementptr inbounds i8, ptr %table.i, i64 1440 call void @ecp_nistz256_point_add(ptr noundef nonnull %arrayidx125.i, ptr noundef nonnull %arrayidx119.i, ptr noundef nonnull %table.i) #6 %arrayidx130.i = getelementptr inbounds i8, ptr %p_str.i, i64 31 - %71 = load i8, ptr %arrayidx130.i, align 1 - %72 = lshr i8 %71, 6 - %shr133.i = zext nneg i8 %72 to i32 + %69 = load i8, ptr %arrayidx130.i, align 1 + %70 = lshr i8 %69, 6 + %shr133.i = zext nneg i8 %70 to i32 %and6.i.i = shl nuw nsw i32 %shr133.i, 1 %add9.i.i = and i32 %and6.i.i, 2 %shr510.i.i = add nuw nsw i32 %add9.i.i, %shr133.i @@ -730,13 +728,13 @@ if.then142.i: ; preds = %while.body.i %div144106.i = lshr i32 %sub143.i, 3 %idxprom145.i = zext nneg i32 %div144106.i to i64 %arrayidx146.i = getelementptr inbounds [33 x i8], ptr %p_str.i, i64 0, i64 %idxprom145.i - %73 = load i8, ptr %arrayidx146.i, align 1 - %conv147.i = zext i8 %73 to i32 + %71 = load i8, ptr %arrayidx146.i, align 1 + %conv147.i = zext i8 %71 to i32 %add148.i = add nuw nsw i32 %div144106.i, 1 %idxprom149.i = zext nneg i32 %add148.i to i64 %arrayidx150.i = getelementptr inbounds [33 x i8], ptr %p_str.i, i64 0, i64 %idxprom149.i - %74 = load i8, ptr %arrayidx150.i, align 1 - %conv151.i = zext i8 %74 to i32 + %72 = load i8, ptr %arrayidx150.i, align 1 + %conv151.i = zext i8 %72 to i32 %shl.i93 = shl nuw nsw i32 %conv151.i, 8 %or.i94 = or disjoint i32 %shl.i93, %conv147.i %rem153.i = and i32 %sub143.i, 7 @@ -759,22 +757,22 @@ if.then142.i: ; preds = %while.body.i %conv166.i = zext nneg i32 %and7.i132.i to i64 %sub.i134.i = sub nsw i64 0, %conv166.i %not.i135.i = add nsw i64 %conv166.i, -1 - %75 = load <2 x i64>, ptr %tmp.i, align 16 - %76 = insertelement <2 x i64> poison, i64 %sub.i134.i, i64 0 - %77 = shufflevector <2 x i64> %76, <2 x i64> poison, <2 x i32> zeroinitializer - %78 = and <2 x i64> %75, %77 - %79 = load <2 x i64>, ptr %Y160.i, align 32 - %80 = insertelement <2 x i64> poison, i64 %not.i135.i, i64 0 - %81 = shufflevector <2 x i64> %80, <2 x i64> poison, <2 x i32> zeroinitializer - %82 = and <2 x i64> %81, %79 - %83 = xor <2 x i64> %82, %78 - store <2 x i64> %83, ptr %Y160.i, align 32 - %84 = load <2 x i64>, ptr %arrayidx10.i.i, align 16 - %85 = and <2 x i64> %84, %77 - %86 = load <2 x i64>, ptr %arrayidx12.i.i, align 16 - %87 = and <2 x i64> %86, %81 - %88 = xor <2 x i64> %87, %85 - store <2 x i64> %88, ptr %arrayidx12.i.i, align 16 + %73 = load <2 x i64>, ptr %tmp.i, align 16 + %74 = insertelement <2 x i64> poison, i64 %sub.i134.i, i64 0 + %75 = shufflevector <2 x i64> %74, <2 x i64> poison, <2 x i32> zeroinitializer + %76 = and <2 x i64> %73, %75 + %77 = load <2 x i64>, ptr %Y160.i, align 32 + %78 = insertelement <2 x i64> poison, i64 %not.i135.i, i64 0 + %79 = shufflevector <2 x i64> %78, <2 x i64> poison, <2 x i32> zeroinitializer + %80 = and <2 x i64> %79, %77 + %81 = xor <2 x i64> %80, %76 + store <2 x i64> %81, ptr %Y160.i, align 32 + %82 = load <2 x i64>, ptr %arrayidx10.i.i, align 16 + %83 = and <2 x i64> %82, %75 + %84 = load <2 x i64>, ptr %arrayidx12.i.i, align 16 + %85 = and <2 x i64> %84, %79 + %86 = xor <2 x i64> %85, %83 + store <2 x i64> %86, ptr %arrayidx12.i.i, align 16 call void @ecp_nistz256_point_add(ptr noundef nonnull %spec.store.select, ptr noundef nonnull %spec.store.select, ptr noundef nonnull %h.i) #6 br label %if.end167.i @@ -789,8 +787,8 @@ if.end167.i: ; preds = %if.then142.i, %whil br i1 %cmp138.i, label %while.body.i, label %while.end.i, !llvm.loop !18 while.end.i: ; preds = %if.end167.i - %89 = load i8, ptr %p_str.i, align 16 - %conv170.i = zext i8 %89 to i32 + %87 = load i8, ptr %p_str.i, align 16 + %conv170.i = zext i8 %87 to i32 %shl171.i = shl nuw nsw i32 %conv170.i, 1 %and172.i = and i32 %shl171.i, 62 %shr.i138.i = lshr i32 %and172.i, 5 @@ -810,22 +808,22 @@ while.end.i: ; preds = %if.end167.i %conv183.i = zext nneg i32 %and7.i149.i to i64 %sub.i151.i = sub nsw i64 0, %conv183.i %not.i152.i = add nsw i64 %conv183.i, -1 - %90 = load <2 x i64>, ptr %tmp.i, align 16 - %91 = insertelement <2 x i64> poison, i64 %sub.i151.i, i64 0 - %92 = shufflevector <2 x i64> %91, <2 x i64> poison, <2 x i32> zeroinitializer - %93 = and <2 x i64> %90, %92 - %94 = load <2 x i64>, ptr %Y160.i, align 32 - %95 = insertelement <2 x i64> poison, i64 %not.i152.i, i64 0 - %96 = shufflevector <2 x i64> %95, <2 x i64> poison, <2 x i32> zeroinitializer - %97 = and <2 x i64> %96, %94 - %98 = xor <2 x i64> %97, %93 - store <2 x i64> %98, ptr %Y160.i, align 32 - %99 = load <2 x i64>, ptr %arrayidx10.i.i, align 16 - %100 = and <2 x i64> %99, %92 - %101 = load <2 x i64>, ptr %arrayidx12.i.i, align 16 - %102 = and <2 x i64> %101, %96 - %103 = xor <2 x i64> %102, %100 - store <2 x i64> %103, ptr %arrayidx12.i.i, align 16 + %88 = load <2 x i64>, ptr %tmp.i, align 16 + %89 = insertelement <2 x i64> poison, i64 %sub.i151.i, i64 0 + %90 = shufflevector <2 x i64> %89, <2 x i64> poison, <2 x i32> zeroinitializer + %91 = and <2 x i64> %88, %90 + %92 = load <2 x i64>, ptr %Y160.i, align 32 + %93 = insertelement <2 x i64> poison, i64 %not.i152.i, i64 0 + %94 = shufflevector <2 x i64> %93, <2 x i64> poison, <2 x i32> zeroinitializer + %95 = and <2 x i64> %94, %92 + %96 = xor <2 x i64> %95, %91 + store <2 x i64> %96, ptr %Y160.i, align 32 + %97 = load <2 x i64>, ptr %arrayidx10.i.i, align 16 + %98 = and <2 x i64> %97, %90 + %99 = load <2 x i64>, ptr %arrayidx12.i.i, align 16 + %100 = and <2 x i64> %99, %94 + %101 = xor <2 x i64> %100, %98 + store <2 x i64> %101, ptr %arrayidx12.i.i, align 16 call void @ecp_nistz256_point_add(ptr noundef nonnull %spec.store.select, ptr noundef nonnull %spec.store.select, ptr noundef nonnull %h.i) #6 br label %err.i diff --git a/bench/mold/optimized/passes.cc.ARM32.cc.ll b/bench/mold/optimized/passes.cc.ARM32.cc.ll index b935655907c..e7c658d6266 100644 --- a/bench/mold/optimized/passes.cc.ARM32.cc.ll +++ b/bench/mold/optimized/passes.cc.ARM32.cc.ll @@ -187,8 +187,6 @@ target triple = "x86_64-unknown-linux-gnu" %"class.std::unordered_set.440" = type { %"class.std::_Hashtable.441" } %"class.std::_Hashtable.441" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr } %"struct.mold::elf::ElfShdr" = type { %"class.mold::LittleEndian", %"class.mold::LittleEndian", %"class.mold::LittleEndian", %"class.mold::LittleEndian", %"class.mold::LittleEndian", %"class.mold::LittleEndian", %"class.mold::LittleEndian", %"class.mold::LittleEndian", %"class.mold::LittleEndian", %"class.mold::LittleEndian" } -%"struct.mold::elf::ElfRel" = type { %"class.mold::LittleEndian", i8, %"class.mold::LittleEndian.462" } -%"class.mold::LittleEndian.462" = type { [3 x i8] } %"struct.std::__detail::_AllocNode.1192" = type { ptr } %"class.std::unique_ptr.471" = type { %"struct.std::__uniq_ptr_data.472" } %"struct.std::__uniq_ptr_data.472" = type { %"class.std::__uniq_ptr_impl.473" } @@ -547,6 +545,8 @@ target triple = "x86_64-unknown-linux-gnu" %"class.tbb::detail::d2::for_each_root_task.1586" = type { %"class.tbb::detail::d2::for_each_root_task_base.base.1590", [23 x i8] } %"class.tbb::detail::d2::for_each_root_task_base.base.1590" = type <{ %"class.tbb::detail::d1::task", %"class.__gnu_cxx::__normal_iterator.306", %"class.__gnu_cxx::__normal_iterator.306", ptr, ptr, ptr, %"struct.tbb::detail::d2::feeder_holder.1588" }> %"struct.tbb::detail::d2::feeder_holder.1588" = type { i8 } +%"struct.mold::elf::ElfRel" = type { %"class.mold::LittleEndian", i8, %"class.mold::LittleEndian.462" } +%"class.mold::LittleEndian.462" = type { [3 x i8] } %"class.tbb::detail::d2::for_each_root_task.1595" = type { %"class.tbb::detail::d2::for_each_root_task_base.base.1599", [23 x i8] } %"class.tbb::detail::d2::for_each_root_task_base.base.1599" = type <{ %"class.tbb::detail::d1::task", %"class.__gnu_cxx::__normal_iterator.306", %"class.__gnu_cxx::__normal_iterator.306", ptr, ptr, ptr, %"struct.tbb::detail::d2::feeder_holder.1597" }> %"struct.tbb::detail::d2::feeder_holder.1597" = type { i8 } @@ -15074,9 +15074,8 @@ if.then.i58: ; preds = %_ZN4mold3elf9InputF unreachable _ZNK4mold3elf12InputSectionINS0_5ARM32EE8get_relsERNS0_7ContextIS2_EE.exit: ; preds = %_ZN4mold3elf9InputFileINS0_5ARM32EE10get_stringERNS0_7ContextIS2_EERKNS0_7ElfShdrIS2_EE.exit.i - %div2.i = lshr exact i64 %idx.ext3.i.i, 3 call void @llvm.lifetime.end.p0(i64 400, ptr nonnull %ref.tmp.i) - %add.ptr.i38 = getelementptr inbounds %"struct.mold::elf::ElfRel", ptr %add.ptr.i.i56, i64 %div2.i + %add.ptr.i38 = getelementptr inbounds i8, ptr %add.ptr.i.i56, i64 %idx.ext3.i.i %cmp.i39101 = icmp eq i32 %x.0.copyload.i6.i.i, 0 br i1 %cmp.i39101, label %_ZNSt10_HashtableIPvS0_SaIS0_ENSt8__detail9_IdentityESt8equal_toIS0_ESt4hashIS0_ENS2_18_Mod_range_hashingENS2_20_Default_ranged_hashENS2_20_Prime_rehash_policyENS2_17_Hashtable_traitsILb0ELb1ELb1EEEE5clearEv.exit.i.i, label %for.body30 @@ -19408,9 +19407,8 @@ if.then.i129: ; preds = %_ZN4mold3elf9InputF unreachable _ZNK4mold3elf12InputSectionINS0_5ARM32EE8get_relsERNS0_7ContextIS2_EE.exit: ; preds = %_ZN4mold3elf9InputFileINS0_5ARM32EE10get_stringERNS0_7ContextIS2_EERKNS0_7ElfShdrIS2_EE.exit.i - %div2.i = lshr exact i64 %idx.ext3.i.i, 3 call void @llvm.lifetime.end.p0(i64 400, ptr nonnull %ref.tmp.i123) - %add.ptr.i98 = getelementptr inbounds %"struct.mold::elf::ElfRel", ptr %add.ptr.i.i126, i64 %div2.i + %add.ptr.i98 = getelementptr inbounds i8, ptr %add.ptr.i.i126, i64 %idx.ext3.i.i %cmp.i99152 = icmp eq i32 %x.0.copyload.i6.i.i, 0 br i1 %cmp.i99152, label %for.inc67, label %for.body49 diff --git a/bench/mold/optimized/passes.cc.I386.cc.ll b/bench/mold/optimized/passes.cc.I386.cc.ll index 0f01f36603b..924149bbaad 100644 --- a/bench/mold/optimized/passes.cc.I386.cc.ll +++ b/bench/mold/optimized/passes.cc.I386.cc.ll @@ -187,8 +187,6 @@ target triple = "x86_64-unknown-linux-gnu" %"class.std::unordered_set.435" = type { %"class.std::_Hashtable.436" } %"class.std::_Hashtable.436" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr } %"struct.mold::elf::ElfShdr" = type { %"class.mold::LittleEndian", %"class.mold::LittleEndian", %"class.mold::LittleEndian", %"class.mold::LittleEndian", %"class.mold::LittleEndian", %"class.mold::LittleEndian", %"class.mold::LittleEndian", %"class.mold::LittleEndian", %"class.mold::LittleEndian", %"class.mold::LittleEndian" } -%"struct.mold::elf::ElfRel" = type { %"class.mold::LittleEndian", i8, %"class.mold::LittleEndian.457" } -%"class.mold::LittleEndian.457" = type { [3 x i8] } %"struct.std::__detail::_AllocNode.1179" = type { ptr } %"class.std::unique_ptr.466" = type { %"struct.std::__uniq_ptr_data.467" } %"struct.std::__uniq_ptr_data.467" = type { %"class.std::__uniq_ptr_impl.468" } @@ -547,6 +545,8 @@ target triple = "x86_64-unknown-linux-gnu" %"class.tbb::detail::d2::for_each_root_task.1573" = type { %"class.tbb::detail::d2::for_each_root_task_base.base.1577", [23 x i8] } %"class.tbb::detail::d2::for_each_root_task_base.base.1577" = type <{ %"class.tbb::detail::d1::task", %"class.__gnu_cxx::__normal_iterator.306", %"class.__gnu_cxx::__normal_iterator.306", ptr, ptr, ptr, %"struct.tbb::detail::d2::feeder_holder.1575" }> %"struct.tbb::detail::d2::feeder_holder.1575" = type { i8 } +%"struct.mold::elf::ElfRel" = type { %"class.mold::LittleEndian", i8, %"class.mold::LittleEndian.457" } +%"class.mold::LittleEndian.457" = type { [3 x i8] } %"class.tbb::detail::d2::for_each_root_task.1582" = type { %"class.tbb::detail::d2::for_each_root_task_base.base.1586", [23 x i8] } %"class.tbb::detail::d2::for_each_root_task_base.base.1586" = type <{ %"class.tbb::detail::d1::task", %"class.__gnu_cxx::__normal_iterator.306", %"class.__gnu_cxx::__normal_iterator.306", ptr, ptr, ptr, %"struct.tbb::detail::d2::feeder_holder.1584" }> %"struct.tbb::detail::d2::feeder_holder.1584" = type { i8 } @@ -15050,9 +15050,8 @@ if.then.i58: ; preds = %_ZN4mold3elf9InputF unreachable _ZNK4mold3elf12InputSectionINS0_4I386EE8get_relsERNS0_7ContextIS2_EE.exit: ; preds = %_ZN4mold3elf9InputFileINS0_4I386EE10get_stringERNS0_7ContextIS2_EERKNS0_7ElfShdrIS2_EE.exit.i - %div2.i = lshr exact i64 %idx.ext3.i.i, 3 call void @llvm.lifetime.end.p0(i64 400, ptr nonnull %ref.tmp.i) - %add.ptr.i38 = getelementptr inbounds %"struct.mold::elf::ElfRel", ptr %add.ptr.i.i56, i64 %div2.i + %add.ptr.i38 = getelementptr inbounds i8, ptr %add.ptr.i.i56, i64 %idx.ext3.i.i %cmp.i39101 = icmp eq i32 %x.0.copyload.i6.i.i, 0 br i1 %cmp.i39101, label %_ZNSt10_HashtableIPvS0_SaIS0_ENSt8__detail9_IdentityESt8equal_toIS0_ESt4hashIS0_ENS2_18_Mod_range_hashingENS2_20_Default_ranged_hashENS2_20_Prime_rehash_policyENS2_17_Hashtable_traitsILb0ELb1ELb1EEEE5clearEv.exit.i.i, label %for.body30 @@ -19384,9 +19383,8 @@ if.then.i129: ; preds = %_ZN4mold3elf9InputF unreachable _ZNK4mold3elf12InputSectionINS0_4I386EE8get_relsERNS0_7ContextIS2_EE.exit: ; preds = %_ZN4mold3elf9InputFileINS0_4I386EE10get_stringERNS0_7ContextIS2_EERKNS0_7ElfShdrIS2_EE.exit.i - %div2.i = lshr exact i64 %idx.ext3.i.i, 3 call void @llvm.lifetime.end.p0(i64 400, ptr nonnull %ref.tmp.i123) - %add.ptr.i98 = getelementptr inbounds %"struct.mold::elf::ElfRel", ptr %add.ptr.i.i126, i64 %div2.i + %add.ptr.i98 = getelementptr inbounds i8, ptr %add.ptr.i.i126, i64 %idx.ext3.i.i %cmp.i99152 = icmp eq i32 %x.0.copyload.i6.i.i, 0 br i1 %cmp.i99152, label %for.inc67, label %for.body49 diff --git a/bench/node/optimized/simdutf.ll b/bench/node/optimized/simdutf.ll index 03de9bbb34c..c6404b3fc12 100644 --- a/bench/node/optimized/simdutf.ll +++ b/bench/node/optimized/simdutf.ll @@ -9295,24 +9295,24 @@ if.end: ; preds = %land.lhs.true56.i.i %rem = and i64 %length, 1 %cmp2 = icmp eq i64 %rem, 0 %add.ptr = getelementptr inbounds i8, ptr %input, i64 %length - %cmp6.not993 = icmp slt i64 %length, 64 + %cmp6.not994 = icmp slt i64 %length, 64 br i1 %cmp2, label %if.then3, label %if.else99 if.then3: ; preds = %if.end - br i1 %cmp6.not993, label %if.then52, label %while.body.preheader + br i1 %cmp6.not994, label %if.then52, label %while.body.preheader while.body.preheader: ; preds = %if.then3 - %add.ptr5992 = getelementptr inbounds i8, ptr %input, i64 64 + %add.ptr5993 = getelementptr inbounds i8, ptr %input, i64 64 br label %while.body while.body: ; preds = %while.body.preheader, %_ZN7simdutf7icelake12_GLOBAL__N_119avx512_utf8_checker16check_next_inputEDv8_x.exit214 - %add.ptr5998 = phi ptr [ %add.ptr5, %_ZN7simdutf7icelake12_GLOBAL__N_119avx512_utf8_checker16check_next_inputEDv8_x.exit214 ], [ %add.ptr5992, %while.body.preheader ] - %buf.0997 = phi ptr [ %add.ptr5998, %_ZN7simdutf7icelake12_GLOBAL__N_119avx512_utf8_checker16check_next_inputEDv8_x.exit214 ], [ %input, %while.body.preheader ] + %add.ptr5999 = phi ptr [ %add.ptr5, %_ZN7simdutf7icelake12_GLOBAL__N_119avx512_utf8_checker16check_next_inputEDv8_x.exit214 ], [ %add.ptr5993, %while.body.preheader ] + %buf.0998 = phi ptr [ %add.ptr5999, %_ZN7simdutf7icelake12_GLOBAL__N_119avx512_utf8_checker16check_next_inputEDv8_x.exit214 ], [ %input, %while.body.preheader ] %10 = phi <16 x i32> [ %elt.max.i186, %_ZN7simdutf7icelake12_GLOBAL__N_119avx512_utf8_checker16check_next_inputEDv8_x.exit214 ], [ zeroinitializer, %while.body.preheader ] - %checker.sroa.0.0996 = phi <8 x i64> [ %checker.sroa.0.1, %_ZN7simdutf7icelake12_GLOBAL__N_119avx512_utf8_checker16check_next_inputEDv8_x.exit214 ], [ zeroinitializer, %while.body.preheader ] - %checker.sroa.13.0995 = phi <8 x i64> [ %checker.sroa.13.1, %_ZN7simdutf7icelake12_GLOBAL__N_119avx512_utf8_checker16check_next_inputEDv8_x.exit214 ], [ zeroinitializer, %while.body.preheader ] - %checker.sroa.18.0994 = phi <8 x i64> [ %checker.sroa.18.1, %_ZN7simdutf7icelake12_GLOBAL__N_119avx512_utf8_checker16check_next_inputEDv8_x.exit214 ], [ zeroinitializer, %while.body.preheader ] - %11 = load <8 x i64>, ptr %buf.0997, align 1 + %checker.sroa.0.0997 = phi <8 x i64> [ %checker.sroa.0.1, %_ZN7simdutf7icelake12_GLOBAL__N_119avx512_utf8_checker16check_next_inputEDv8_x.exit214 ], [ zeroinitializer, %while.body.preheader ] + %checker.sroa.13.0996 = phi <8 x i64> [ %checker.sroa.13.1, %_ZN7simdutf7icelake12_GLOBAL__N_119avx512_utf8_checker16check_next_inputEDv8_x.exit214 ], [ zeroinitializer, %while.body.preheader ] + %checker.sroa.18.0995 = phi <8 x i64> [ %checker.sroa.18.1, %_ZN7simdutf7icelake12_GLOBAL__N_119avx512_utf8_checker16check_next_inputEDv8_x.exit214 ], [ zeroinitializer, %while.body.preheader ] + %11 = load <8 x i64>, ptr %buf.0998, align 1 %12 = bitcast <8 x i64> %11 to <32 x i16> %sub.i = add <32 x i16> %12, %13 = icmp ult <32 x i16> %sub.i, @@ -9334,14 +9334,14 @@ if.then14: ; preds = %if.then12 br i1 %cmp16.not, label %if.end18, label %return if.end18: ; preds = %if.then14 - %add.ptr23 = getelementptr inbounds i8, ptr %buf.0997, i64 62 - %cmp20.not983 = icmp slt i32 %16, 0 - %buf.1 = select i1 %cmp20.not983, ptr %add.ptr23, ptr %add.ptr5998 + %add.ptr23 = getelementptr inbounds i8, ptr %buf.0998, i64 62 + %cmp20.not984 = icmp slt i32 %16, 0 + %buf.1 = select i1 %cmp20.not984, ptr %add.ptr23, ptr %add.ptr5999 %sub.ptr.lhs.cast = ptrtoint ptr %add.ptr to i64 %sub.ptr.rhs.cast = ptrtoint ptr %buf.1 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %add.ptr.idx.i = and i64 %sub.ptr.sub, -2 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf.1, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf.1, i64 %add.ptr.idx.i %cmp.not208.i = icmp ult i64 %sub.ptr.sub, 64 br i1 %cmp.not208.i, label %for.end.i, label %for.body.preheader.i @@ -9376,16 +9376,16 @@ if.end.i: ; preds = %if.then.i953 if.end18.i: ; preds = %if.end.i, %for.body.i %buf.addr.1.i = phi ptr [ %add.ptr2210.i, %for.body.i ], [ %spec.select.i, %if.end.i ] %add.ptr2.i = getelementptr inbounds i8, ptr %buf.addr.1.i, i64 64 - %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.i br i1 %cmp.not.i, label %for.end.i, label %for.body.i, !llvm.loop !106 for.end.i: ; preds = %if.end18.i, %if.end18 %buf.addr.0.lcssa.i = phi ptr [ %buf.1, %if.end18 ], [ %buf.addr.1.i, %if.end18.i ] - %cmp19.i = icmp ult ptr %buf.addr.0.lcssa.i, %add.ptr.ptr.i + %cmp19.i = icmp ult ptr %buf.addr.0.lcssa.i, %add.ptr.i br i1 %cmp19.i, label %if.then20.i, label %return if.then20.i: ; preds = %for.end.i - %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.ptr.i to i64 + %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.i to i64 %sub.ptr.rhs.cast.i = ptrtoint ptr %buf.addr.0.lcssa.i to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i = lshr exact i64 %sub.ptr.sub.i, 1 @@ -9417,13 +9417,11 @@ if.else31: ; preds = %if.then12 br i1 %cmp33, label %if.then34, label %if.end43 if.then34: ; preds = %if.else31 - %div35949 = lshr exact i64 %length, 2 - %add.ptr36 = getelementptr inbounds i32, ptr %input, i64 %div35949 - %sub.ptr.lhs.cast37 = ptrtoint ptr %add.ptr36 to i64 - %sub.ptr.rhs.cast38 = ptrtoint ptr %buf.0997 to i64 + %sub.ptr.lhs.cast37 = ptrtoint ptr %add.ptr to i64 + %sub.ptr.rhs.cast38 = ptrtoint ptr %buf.0998 to i64 %sub.ptr.sub39 = sub i64 %sub.ptr.lhs.cast37, %sub.ptr.rhs.cast38 %sub.ptr.div = ashr exact i64 %sub.ptr.sub39, 2 - %call40 = tail call noundef zeroext i1 @_ZNK7simdutf7icelake14implementation14validate_utf32EPKDim(ptr nonnull align 8 poison, ptr noundef nonnull %buf.0997, i64 noundef %sub.ptr.div) #54 + %call40 = tail call noundef zeroext i1 @_ZNK7simdutf7icelake14implementation14validate_utf32EPKDim(ptr nonnull align 8 poison, ptr noundef nonnull %buf.0998, i64 noundef %sub.ptr.div) #54 br i1 %call40, label %return, label %if.end43 if.end43: ; preds = %if.then34, %if.else31 @@ -9439,7 +9437,7 @@ if.end44: ; preds = %while.body br i1 %cmp.i205, label %_ZN7simdutf7icelake12_GLOBAL__N_119avx512_utf8_checker16check_next_inputEDv8_x.exit214, label %if.else.i206 if.else.i206: ; preds = %if.end44 - %32 = bitcast <8 x i64> %checker.sroa.13.0995 to <16 x i32> + %32 = bitcast <8 x i64> %checker.sroa.13.0996 to <16 x i32> %33 = tail call <16 x i32> @llvm.x86.avx512.vpermi2var.d.512(<16 x i32> %28, <16 x i32> , <16 x i32> %32) %34 = bitcast <16 x i32> %33 to <64 x i8> %palignr.i = shufflevector <64 x i8> %34, <64 x i8> %29, <64 x i32> @@ -9473,11 +9471,11 @@ if.else.i206: ; preds = %if.end44 br label %_ZN7simdutf7icelake12_GLOBAL__N_119avx512_utf8_checker16check_next_inputEDv8_x.exit214 _ZN7simdutf7icelake12_GLOBAL__N_119avx512_utf8_checker16check_next_inputEDv8_x.exit214: ; preds = %if.end44, %if.else.i206 - %checker.sroa.18.1 = phi <8 x i64> [ %54, %if.else.i206 ], [ %checker.sroa.18.0994, %if.end44 ] - %checker.sroa.13.1 = phi <8 x i64> [ %11, %if.else.i206 ], [ %checker.sroa.13.0995, %if.end44 ] - %checker.sroa.18.0.pn = phi <8 x i64> [ %53, %if.else.i206 ], [ %checker.sroa.18.0994, %if.end44 ] - %checker.sroa.0.1 = or <8 x i64> %checker.sroa.18.0.pn, %checker.sroa.0.0996 - %add.ptr5 = getelementptr inbounds i8, ptr %add.ptr5998, i64 64 + %checker.sroa.18.1 = phi <8 x i64> [ %54, %if.else.i206 ], [ %checker.sroa.18.0995, %if.end44 ] + %checker.sroa.13.1 = phi <8 x i64> [ %11, %if.else.i206 ], [ %checker.sroa.13.0996, %if.end44 ] + %checker.sroa.18.0.pn = phi <8 x i64> [ %53, %if.else.i206 ], [ %checker.sroa.18.0995, %if.end44 ] + %checker.sroa.0.1 = or <8 x i64> %checker.sroa.18.0.pn, %checker.sroa.0.0997 + %add.ptr5 = getelementptr inbounds i8, ptr %add.ptr5999, i64 64 %cmp6.not = icmp ugt ptr %add.ptr5, %add.ptr br i1 %cmp6.not, label %if.then52.loopexit, label %while.body, !llvm.loop !107 @@ -9490,7 +9488,7 @@ if.then52: ; preds = %if.then52.loopexit, %checker.sroa.13.0.lcssa = phi <16 x i32> [ zeroinitializer, %if.then3 ], [ %55, %if.then52.loopexit ] %checker.sroa.0.0.lcssa = phi <8 x i64> [ zeroinitializer, %if.then3 ], [ %checker.sroa.0.1, %if.then52.loopexit ] %.lcssa = phi <16 x i32> [ zeroinitializer, %if.then3 ], [ %elt.max.i186, %if.then52.loopexit ] - %buf.0.lcssa = phi ptr [ %input, %if.then3 ], [ %add.ptr5998, %if.then52.loopexit ] + %buf.0.lcssa = phi ptr [ %input, %if.then3 ], [ %add.ptr5999, %if.then52.loopexit ] %sub.ptr.lhs.cast53 = ptrtoint ptr %buf.0.lcssa to i64 %sub.ptr.rhs.cast54 = ptrtoint ptr %input to i64 %sub.ptr.sub55 = sub i64 %sub.ptr.lhs.cast53, %sub.ptr.rhs.cast54 @@ -9596,11 +9594,11 @@ if.end30.i: ; preds = %if.end28.i, %cond.e br i1 %cmp.not.i960, label %cond.end.i, label %.loopexit, !llvm.loop !8 .loopexit: ; preds = %if.end30.i, %if.end63 - %or76981 = or disjoint i32 %spec.select, 2 + %or76982 = or disjoint i32 %spec.select, 2 br label %_ZN7simdutf6scalar12_GLOBAL__N_15utf168validateILNS_10endiannessE0EEEbPKDsm.exit _ZN7simdutf6scalar12_GLOBAL__N_15utf168validateILNS_10endiannessE0EEEbPKDsm.exit: ; preds = %cond.end20.i, %if.then.i961, %.loopexit - %92 = phi i32 [ %or76981, %.loopexit ], [ %spec.select, %if.then.i961 ], [ %spec.select, %cond.end20.i ] + %92 = phi i32 [ %or76982, %.loopexit ], [ %spec.select, %if.then.i961 ], [ %spec.select, %cond.end20.i ] %rem80 = and i64 %length, 2 %cmp81 = icmp eq i64 %rem80, 0 br i1 %cmp81, label %if.then82, label %return @@ -9620,18 +9618,18 @@ if.then82: ; preds = %_ZN7simdutf6scalar1 br label %return if.else99: ; preds = %if.end - br i1 %cmp6.not993, label %for.end.i966, label %for.body.preheader.i962 + br i1 %cmp6.not994, label %for.end.i967, label %for.body.preheader.i963 -for.body.preheader.i962: ; preds = %if.else99 +for.body.preheader.i963: ; preds = %if.else99 %add.ptr2807.i = getelementptr inbounds i8, ptr %input, i64 64 - br label %for.body.i963 - -for.body.i963: ; preds = %for.inc.i, %for.body.preheader.i962 - %add.ptr2813.i = phi ptr [ %add.ptr2.i964, %for.inc.i ], [ %add.ptr2807.i, %for.body.preheader.i962 ] - %ptr.0812.i = phi ptr [ %add.ptr2813.i, %for.inc.i ], [ %input, %for.body.preheader.i962 ] - %checker.sroa.0.0811.i = phi <8 x i64> [ %checker.sroa.0.1.i, %for.inc.i ], [ zeroinitializer, %for.body.preheader.i962 ] - %checker.sroa.13.0810.i = phi <8 x i64> [ %checker.sroa.13.1.i, %for.inc.i ], [ zeroinitializer, %for.body.preheader.i962 ] - %checker.sroa.18.0809.i = phi <8 x i64> [ %checker.sroa.18.1.i, %for.inc.i ], [ zeroinitializer, %for.body.preheader.i962 ] + br label %for.body.i964 + +for.body.i964: ; preds = %for.inc.i, %for.body.preheader.i963 + %add.ptr2813.i = phi ptr [ %add.ptr2.i965, %for.inc.i ], [ %add.ptr2807.i, %for.body.preheader.i963 ] + %ptr.0812.i = phi ptr [ %add.ptr2813.i, %for.inc.i ], [ %input, %for.body.preheader.i963 ] + %checker.sroa.0.0811.i = phi <8 x i64> [ %checker.sroa.0.1.i, %for.inc.i ], [ zeroinitializer, %for.body.preheader.i963 ] + %checker.sroa.13.0810.i = phi <8 x i64> [ %checker.sroa.13.1.i, %for.inc.i ], [ zeroinitializer, %for.body.preheader.i963 ] + %checker.sroa.18.0809.i = phi <8 x i64> [ %checker.sroa.18.1.i, %for.inc.i ], [ zeroinitializer, %for.body.preheader.i963 ] %98 = load <8 x i64>, ptr %ptr.0812.i, align 1 %99 = bitcast <8 x i64> %98 to <64 x i8> %100 = icmp slt <64 x i8> %99, zeroinitializer @@ -9639,7 +9637,7 @@ for.body.i963: ; preds = %for.inc.i, %for.bod %cmp.i28.i = icmp eq i64 %101, 0 br i1 %cmp.i28.i, label %for.inc.i, label %if.else.i29.i -if.else.i29.i: ; preds = %for.body.i963 +if.else.i29.i: ; preds = %for.body.i964 %102 = bitcast <8 x i64> %checker.sroa.13.0810.i to <16 x i32> %103 = bitcast <8 x i64> %98 to <16 x i32> %104 = tail call <16 x i32> @llvm.x86.avx512.vpermi2var.d.512(<16 x i32> %103, <16 x i32> , <16 x i32> %102) @@ -9675,37 +9673,37 @@ if.else.i29.i: ; preds = %for.body.i963 %126 = bitcast <64 x i8> %elt.sat.i943.i to <8 x i64> br label %for.inc.i -for.inc.i: ; preds = %if.else.i29.i, %for.body.i963 - %checker.sroa.18.1.i = phi <8 x i64> [ %126, %if.else.i29.i ], [ %checker.sroa.18.0809.i, %for.body.i963 ] - %checker.sroa.13.1.i = phi <8 x i64> [ %98, %if.else.i29.i ], [ %checker.sroa.13.0810.i, %for.body.i963 ] - %checker.sroa.18.0.pn798.i = phi <8 x i64> [ %125, %if.else.i29.i ], [ %checker.sroa.18.0809.i, %for.body.i963 ] +for.inc.i: ; preds = %if.else.i29.i, %for.body.i964 + %checker.sroa.18.1.i = phi <8 x i64> [ %126, %if.else.i29.i ], [ %checker.sroa.18.0809.i, %for.body.i964 ] + %checker.sroa.13.1.i = phi <8 x i64> [ %98, %if.else.i29.i ], [ %checker.sroa.13.0810.i, %for.body.i964 ] + %checker.sroa.18.0.pn798.i = phi <8 x i64> [ %125, %if.else.i29.i ], [ %checker.sroa.18.0809.i, %for.body.i964 ] %checker.sroa.0.1.i = or <8 x i64> %checker.sroa.18.0.pn798.i, %checker.sroa.0.0811.i - %add.ptr2.i964 = getelementptr inbounds i8, ptr %add.ptr2813.i, i64 64 - %cmp.not.i965 = icmp ugt ptr %add.ptr2.i964, %add.ptr - br i1 %cmp.not.i965, label %for.end.loopexit.i, label %for.body.i963, !llvm.loop !108 + %add.ptr2.i965 = getelementptr inbounds i8, ptr %add.ptr2813.i, i64 64 + %cmp.not.i966 = icmp ugt ptr %add.ptr2.i965, %add.ptr + br i1 %cmp.not.i966, label %for.end.loopexit.i, label %for.body.i964, !llvm.loop !108 for.end.loopexit.i: ; preds = %for.inc.i %127 = bitcast <8 x i64> %checker.sroa.13.1.i to <16 x i32> - br label %for.end.i966 + br label %for.end.i967 -for.end.i966: ; preds = %for.end.loopexit.i, %if.else99 +for.end.i967: ; preds = %for.end.loopexit.i, %if.else99 %checker.sroa.18.0.lcssa.i = phi <8 x i64> [ zeroinitializer, %if.else99 ], [ %checker.sroa.18.1.i, %for.end.loopexit.i ] %checker.sroa.13.0.lcssa.i = phi <16 x i32> [ zeroinitializer, %if.else99 ], [ %127, %for.end.loopexit.i ] %checker.sroa.0.0.lcssa.i = phi <8 x i64> [ zeroinitializer, %if.else99 ], [ %checker.sroa.0.1.i, %for.end.loopexit.i ] %ptr.0.lcssa.i = phi ptr [ %input, %if.else99 ], [ %add.ptr2813.i, %for.end.loopexit.i ] - %sub.ptr.lhs.cast.i967 = ptrtoint ptr %add.ptr to i64 - %sub.ptr.rhs.cast.i968 = ptrtoint ptr %ptr.0.lcssa.i to i64 - %sub.ptr.sub.i969 = sub i64 %sub.ptr.lhs.cast.i967, %sub.ptr.rhs.cast.i968 - %notmask.i970 = shl nsw i64 -1, %sub.ptr.sub.i969 - %sub.i971 = xor i64 %notmask.i970, -1 - %128 = bitcast i64 %sub.i971 to <64 x i1> + %sub.ptr.lhs.cast.i968 = ptrtoint ptr %add.ptr to i64 + %sub.ptr.rhs.cast.i969 = ptrtoint ptr %ptr.0.lcssa.i to i64 + %sub.ptr.sub.i970 = sub i64 %sub.ptr.lhs.cast.i968, %sub.ptr.rhs.cast.i969 + %notmask.i971 = shl nsw i64 -1, %sub.ptr.sub.i970 + %sub.i972 = xor i64 %notmask.i971, -1 + %128 = bitcast i64 %sub.i972 to <64 x i1> %129 = tail call <64 x i8> @llvm.masked.load.v64i8.p0(ptr %ptr.0.lcssa.i, i32 1, <64 x i1> %128, <64 x i8> zeroinitializer) %130 = icmp slt <64 x i8> %129, zeroinitializer %131 = bitcast <64 x i1> %130 to i64 - %cmp.i.i972 = icmp eq i64 %131, 0 - br i1 %cmp.i.i972, label %_ZNK7simdutf7icelake14implementation13validate_utf8EPKcm.exit, label %if.else.i.i973 + %cmp.i.i973 = icmp eq i64 %131, 0 + br i1 %cmp.i.i973, label %_ZNK7simdutf7icelake14implementation13validate_utf8EPKcm.exit, label %if.else.i.i974 -if.else.i.i973: ; preds = %for.end.i966 +if.else.i.i974: ; preds = %for.end.i967 %132 = bitcast <64 x i8> %129 to <16 x i32> %133 = tail call <16 x i32> @llvm.x86.avx512.vpermi2var.d.512(<16 x i32> %132, <16 x i32> , <16 x i32> %checker.sroa.13.0.lcssa.i) %134 = bitcast <16 x i32> %133 to <64 x i8> @@ -9740,9 +9738,9 @@ if.else.i.i973: ; preds = %for.end.i966 %155 = bitcast <64 x i8> %elt.sat.i936.i to <8 x i64> br label %_ZNK7simdutf7icelake14implementation13validate_utf8EPKcm.exit -_ZNK7simdutf7icelake14implementation13validate_utf8EPKcm.exit: ; preds = %for.end.i966, %if.else.i.i973 - %checker.sroa.18.2.i = phi <8 x i64> [ %155, %if.else.i.i973 ], [ %checker.sroa.18.0.lcssa.i, %for.end.i966 ] - %checker.sroa.18.0.pn.i = phi <8 x i64> [ %154, %if.else.i.i973 ], [ %checker.sroa.18.0.lcssa.i, %for.end.i966 ] +_ZNK7simdutf7icelake14implementation13validate_utf8EPKcm.exit: ; preds = %for.end.i967, %if.else.i.i974 + %checker.sroa.18.2.i = phi <8 x i64> [ %155, %if.else.i.i974 ], [ %checker.sroa.18.0.lcssa.i, %for.end.i967 ] + %checker.sroa.18.0.pn.i = phi <8 x i64> [ %154, %if.else.i.i974 ], [ %checker.sroa.18.0.lcssa.i, %for.end.i967 ] %156 = or <8 x i64> %checker.sroa.18.2.i, %checker.sroa.0.0.lcssa.i %or.i.i = or <8 x i64> %156, %checker.sroa.18.0.pn.i %157 = bitcast <8 x i64> %or.i.i to <64 x i8> @@ -9761,7 +9759,7 @@ return: ; preds = %land.lhs.true56.i.i define dso_local noundef zeroext i1 @_ZNK7simdutf7icelake14implementation16validate_utf16leEPKDsm(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len) unnamed_addr #9 align 2 { entry: %add.ptr.idx = shl nsw i64 %len, 1 - %add.ptr.ptr = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx + %add.ptr = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx %cmp.not208 = icmp slt i64 %len, 32 br i1 %cmp.not208, label %for.end, label %for.body.preheader @@ -9796,16 +9794,16 @@ if.end: ; preds = %if.then if.end18: ; preds = %if.end, %for.body %buf.addr.1 = phi ptr [ %add.ptr2210, %for.body ], [ %spec.select, %if.end ] %add.ptr2 = getelementptr inbounds i8, ptr %buf.addr.1, i64 64 - %cmp.not = icmp ugt ptr %add.ptr2, %add.ptr.ptr + %cmp.not = icmp ugt ptr %add.ptr2, %add.ptr br i1 %cmp.not, label %for.end, label %for.body, !llvm.loop !106 for.end: ; preds = %if.end18, %entry %buf.addr.0.lcssa = phi ptr [ %buf, %entry ], [ %buf.addr.1, %if.end18 ] - %cmp19 = icmp ult ptr %buf.addr.0.lcssa, %add.ptr.ptr + %cmp19 = icmp ult ptr %buf.addr.0.lcssa, %add.ptr br i1 %cmp19, label %if.then20, label %if.end42 if.then20: ; preds = %for.end - %sub.ptr.lhs.cast = ptrtoint ptr %add.ptr.ptr to i64 + %sub.ptr.lhs.cast = ptrtoint ptr %add.ptr to i64 %sub.ptr.rhs.cast = ptrtoint ptr %buf.addr.0.lcssa to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.div = lshr exact i64 %sub.ptr.sub, 1 @@ -10382,7 +10380,7 @@ return: ; preds = %for.end, %if.then13 define dso_local noundef zeroext i1 @_ZNK7simdutf7icelake14implementation16validate_utf16beEPKDsm(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len) unnamed_addr #9 align 2 { entry: %add.ptr.idx = shl nsw i64 %len, 1 - %add.ptr.ptr = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx + %add.ptr = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx %cmp.not209 = icmp slt i64 %len, 32 br i1 %cmp.not209, label %for.end, label %for.body.preheader @@ -10419,16 +10417,16 @@ if.end: ; preds = %if.then if.end22: ; preds = %if.end, %for.body %buf.addr.1 = phi ptr [ %add.ptr2211, %for.body ], [ %spec.select, %if.end ] %add.ptr2 = getelementptr inbounds i8, ptr %buf.addr.1, i64 64 - %cmp.not = icmp ugt ptr %add.ptr2, %add.ptr.ptr + %cmp.not = icmp ugt ptr %add.ptr2, %add.ptr br i1 %cmp.not, label %for.end, label %for.body, !llvm.loop !115 for.end: ; preds = %if.end22, %entry %buf.addr.0.lcssa = phi ptr [ %buf, %entry ], [ %buf.addr.1, %if.end22 ] - %cmp23 = icmp ult ptr %buf.addr.0.lcssa, %add.ptr.ptr + %cmp23 = icmp ult ptr %buf.addr.0.lcssa, %add.ptr br i1 %cmp23, label %if.then24, label %if.end49 if.then24: ; preds = %for.end - %sub.ptr.lhs.cast = ptrtoint ptr %add.ptr.ptr to i64 + %sub.ptr.lhs.cast = ptrtoint ptr %add.ptr to i64 %sub.ptr.rhs.cast = ptrtoint ptr %buf.addr.0.lcssa to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.div = lshr exact i64 %sub.ptr.sub, 1 @@ -10466,7 +10464,7 @@ return: ; preds = %if.then, %if.then39 define dso_local { i32, i64 } @_ZNK7simdutf7icelake14implementation28validate_utf16le_with_errorsEPKDsm(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len) unnamed_addr #9 align 2 { entry: %add.ptr.idx = shl nsw i64 %len, 1 - %add.ptr.ptr = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx + %add.ptr = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx %cmp.not225 = icmp slt i64 %len, 32 br i1 %cmp.not225, label %for.end, label %for.body.preheader @@ -10518,16 +10516,16 @@ if.end: ; preds = %if.then if.end25: ; preds = %if.end, %for.body %buf.addr.1 = phi ptr [ %add.ptr2227, %for.body ], [ %spec.select, %if.end ] %add.ptr2 = getelementptr inbounds i8, ptr %buf.addr.1, i64 64 - %cmp.not = icmp ugt ptr %add.ptr2, %add.ptr.ptr + %cmp.not = icmp ugt ptr %add.ptr2, %add.ptr br i1 %cmp.not, label %for.end, label %for.body, !llvm.loop !117 for.end: ; preds = %if.end25, %entry %buf.addr.0.lcssa = phi ptr [ %buf, %entry ], [ %buf.addr.1, %if.end25 ] - %cmp26 = icmp ult ptr %buf.addr.0.lcssa, %add.ptr.ptr + %cmp26 = icmp ult ptr %buf.addr.0.lcssa, %add.ptr br i1 %cmp26, label %if.then27, label %return if.then27: ; preds = %for.end - %sub.ptr.lhs.cast29 = ptrtoint ptr %add.ptr.ptr to i64 + %sub.ptr.lhs.cast29 = ptrtoint ptr %add.ptr to i64 %sub.ptr.rhs.cast30 = ptrtoint ptr %buf.addr.0.lcssa to i64 %sub.ptr.sub31 = sub i64 %sub.ptr.lhs.cast29, %sub.ptr.rhs.cast30 %sub.ptr.div32 = lshr exact i64 %sub.ptr.sub31, 1 @@ -10578,7 +10576,7 @@ return: ; preds = %for.end, %if.then43 define dso_local { i32, i64 } @_ZNK7simdutf7icelake14implementation28validate_utf16be_with_errorsEPKDsm(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len) unnamed_addr #9 align 2 { entry: %add.ptr.idx = shl nsw i64 %len, 1 - %add.ptr.ptr = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx + %add.ptr = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx %cmp.not226 = icmp slt i64 %len, 32 br i1 %cmp.not226, label %for.end, label %for.body.preheader @@ -10632,16 +10630,16 @@ if.end: ; preds = %if.then if.end29: ; preds = %if.end, %for.body %buf.addr.1 = phi ptr [ %add.ptr2228, %for.body ], [ %spec.select, %if.end ] %add.ptr2 = getelementptr inbounds i8, ptr %buf.addr.1, i64 64 - %cmp.not = icmp ugt ptr %add.ptr2, %add.ptr.ptr + %cmp.not = icmp ugt ptr %add.ptr2, %add.ptr br i1 %cmp.not, label %for.end, label %for.body, !llvm.loop !118 for.end: ; preds = %if.end29, %entry %buf.addr.0.lcssa = phi ptr [ %buf, %entry ], [ %buf.addr.1, %if.end29 ] - %cmp30 = icmp ult ptr %buf.addr.0.lcssa, %add.ptr.ptr + %cmp30 = icmp ult ptr %buf.addr.0.lcssa, %add.ptr br i1 %cmp30, label %if.then31, label %return if.then31: ; preds = %for.end - %sub.ptr.lhs.cast33 = ptrtoint ptr %add.ptr.ptr to i64 + %sub.ptr.lhs.cast33 = ptrtoint ptr %add.ptr to i64 %sub.ptr.rhs.cast34 = ptrtoint ptr %buf.addr.0.lcssa to i64 %sub.ptr.sub35 = sub i64 %sub.ptr.lhs.cast33, %sub.ptr.rhs.cast34 %sub.ptr.div36 = lshr exact i64 %sub.ptr.sub35, 1 @@ -17336,7 +17334,7 @@ return: ; preds = %while.body, %if.the define dso_local noundef i64 @_ZNK7simdutf7icelake14implementation25convert_utf16le_to_latin1EPKDsmPc(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr nocapture noundef writeonly %latin1_output) unnamed_addr #13 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not53.i = icmp slt i64 %len, 32 br i1 %cmp.not53.i, label %while.end.i, label %while.body.preheader.i @@ -17363,17 +17361,17 @@ if.end.i: ; preds = %while.body.i store <4 x i64> %shuffle.i86.i, ptr %latin1_output.addr.054.i, align 1 %add.ptr10.i = getelementptr inbounds i8, ptr %latin1_output.addr.054.i, i64 32 %add.ptr3.i = getelementptr inbounds i8, ptr %add.ptr356.i, i64 64 - %cmp.not.i = icmp ugt ptr %add.ptr3.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr3.i, %add.ptr.i br i1 %cmp.not.i, label %while.end.i, label %while.body.i, !llvm.loop !146 while.end.i: ; preds = %if.end.i, %entry %latin1_output.addr.0.lcssa.i = phi ptr [ %latin1_output, %entry ], [ %add.ptr10.i, %if.end.i ] %buf.addr.0.lcssa.i = phi ptr [ %buf, %entry ], [ %add.ptr356.i, %if.end.i ] - %cmp12.i = icmp ult ptr %buf.addr.0.lcssa.i, %add.ptr.ptr.i + %cmp12.i = icmp ult ptr %buf.addr.0.lcssa.i, %add.ptr.i br i1 %cmp12.i, label %if.then13.i, label %_ZN7simdutf7icelake12_GLOBAL__N_131icelake_convert_utf16_to_latin1ILNS_10endiannessE0EEEmPKDsmPc.exit if.then13.i: ; preds = %while.end.i - %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.ptr.i to i64 + %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.i to i64 %sub.ptr.rhs.cast.i = ptrtoint ptr %buf.addr.0.lcssa.i to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i = lshr exact i64 %sub.ptr.sub.i, 1 @@ -17401,7 +17399,7 @@ _ZN7simdutf7icelake12_GLOBAL__N_131icelake_convert_utf16_to_latin1ILNS_10endiann define dso_local noundef i64 @_ZNK7simdutf7icelake14implementation25convert_utf16be_to_latin1EPKDsmPc(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr nocapture noundef writeonly %latin1_output) unnamed_addr #13 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not56.i = icmp slt i64 %len, 32 br i1 %cmp.not56.i, label %while.end.i, label %while.body.preheader.i @@ -17428,17 +17426,17 @@ if.end.i: ; preds = %while.body.i store <4 x i64> %shuffle.i104.i, ptr %latin1_output.addr.057.i, align 1 %add.ptr13.i = getelementptr inbounds i8, ptr %latin1_output.addr.057.i, i64 32 %add.ptr3.i = getelementptr inbounds i8, ptr %add.ptr359.i, i64 64 - %cmp.not.i = icmp ugt ptr %add.ptr3.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr3.i, %add.ptr.i br i1 %cmp.not.i, label %while.end.i, label %while.body.i, !llvm.loop !147 while.end.i: ; preds = %if.end.i, %entry %latin1_output.addr.0.lcssa.i = phi ptr [ %latin1_output, %entry ], [ %add.ptr13.i, %if.end.i ] %buf.addr.0.lcssa.i = phi ptr [ %buf, %entry ], [ %add.ptr359.i, %if.end.i ] - %cmp15.i = icmp ult ptr %buf.addr.0.lcssa.i, %add.ptr.ptr.i + %cmp15.i = icmp ult ptr %buf.addr.0.lcssa.i, %add.ptr.i br i1 %cmp15.i, label %if.then16.i, label %_ZN7simdutf7icelake12_GLOBAL__N_131icelake_convert_utf16_to_latin1ILNS_10endiannessE1EEEmPKDsmPc.exit if.then16.i: ; preds = %while.end.i - %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.ptr.i to i64 + %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.i to i64 %sub.ptr.rhs.cast.i = ptrtoint ptr %buf.addr.0.lcssa.i to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i = lshr exact i64 %sub.ptr.sub.i, 1 @@ -17469,7 +17467,7 @@ _ZN7simdutf7icelake12_GLOBAL__N_131icelake_convert_utf16_to_latin1ILNS_10endiann define dso_local { i32, i64 } @_ZNK7simdutf7icelake14implementation37convert_utf16le_to_latin1_with_errorsEPKDsmPc(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr nocapture noundef writeonly %latin1_output) unnamed_addr #13 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not70.i = icmp slt i64 %len, 32 br i1 %cmp.not70.i, label %while.end17.i, label %while.body.preheader.i @@ -17521,17 +17519,17 @@ if.end.i: ; preds = %while.body.i store <4 x i64> %shuffle.i121.i, ptr %latin1_output.addr.071.i, align 1, !noalias !148 %add.ptr15.i = getelementptr inbounds i8, ptr %latin1_output.addr.071.i, i64 32 %add.ptr3.i = getelementptr inbounds i8, ptr %add.ptr373.i, i64 64 - %cmp.not.i = icmp ugt ptr %add.ptr3.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr3.i, %add.ptr.i br i1 %cmp.not.i, label %while.end17.i, label %while.body.i, !llvm.loop !152 while.end17.i: ; preds = %if.end.i, %entry %latin1_output.addr.0.lcssa.i = phi ptr [ %latin1_output, %entry ], [ %add.ptr15.i, %if.end.i ] %buf.addr.0.lcssa.i = phi ptr [ %buf, %entry ], [ %add.ptr373.i, %if.end.i ] - %cmp18.i = icmp ult ptr %buf.addr.0.lcssa.i, %add.ptr.ptr.i + %cmp18.i = icmp ult ptr %buf.addr.0.lcssa.i, %add.ptr.i br i1 %cmp18.i, label %if.then19.i, label %_ZN7simdutf7icelake12_GLOBAL__N_143icelake_convert_utf16_to_latin1_with_errorsILNS_10endiannessE0EEESt4pairINS_6resultEPcEPKDsmS6_.exit if.then19.i: ; preds = %while.end17.i - %sub.ptr.lhs.cast20.i = ptrtoint ptr %add.ptr.ptr.i to i64 + %sub.ptr.lhs.cast20.i = ptrtoint ptr %add.ptr.i to i64 %sub.ptr.rhs.cast21.i = ptrtoint ptr %buf.addr.0.lcssa.i to i64 %sub.ptr.sub22.i = sub i64 %sub.ptr.lhs.cast20.i, %sub.ptr.rhs.cast21.i %sub.ptr.div23.i = lshr exact i64 %sub.ptr.sub22.i, 1 @@ -17593,7 +17591,7 @@ declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias define dso_local { i32, i64 } @_ZNK7simdutf7icelake14implementation37convert_utf16be_to_latin1_with_errorsEPKDsmPc(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr nocapture noundef writeonly %latin1_output) unnamed_addr #13 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not74.i = icmp slt i64 %len, 32 br i1 %cmp.not74.i, label %while.end21.i, label %while.body.preheader.i @@ -17648,17 +17646,17 @@ if.end.i: ; preds = %while.body.i store <4 x i64> %shuffle.i141.i, ptr %latin1_output.addr.075.i, align 1, !noalias !154 %add.ptr19.i = getelementptr inbounds i8, ptr %latin1_output.addr.075.i, i64 32 %add.ptr3.i = getelementptr inbounds i8, ptr %add.ptr377.i, i64 64 - %cmp.not.i = icmp ugt ptr %add.ptr3.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr3.i, %add.ptr.i br i1 %cmp.not.i, label %while.end21.i, label %while.body.i, !llvm.loop !158 while.end21.i: ; preds = %if.end.i, %entry %latin1_output.addr.0.lcssa.i = phi ptr [ %latin1_output, %entry ], [ %add.ptr19.i, %if.end.i ] %buf.addr.0.lcssa.i = phi ptr [ %buf, %entry ], [ %add.ptr377.i, %if.end.i ] - %cmp22.i = icmp ult ptr %buf.addr.0.lcssa.i, %add.ptr.ptr.i + %cmp22.i = icmp ult ptr %buf.addr.0.lcssa.i, %add.ptr.i br i1 %cmp22.i, label %if.then23.i, label %_ZN7simdutf7icelake12_GLOBAL__N_143icelake_convert_utf16_to_latin1_with_errorsILNS_10endiannessE1EEESt4pairINS_6resultEPcEPKDsmS6_.exit if.then23.i: ; preds = %while.end21.i - %sub.ptr.lhs.cast24.i = ptrtoint ptr %add.ptr.ptr.i to i64 + %sub.ptr.lhs.cast24.i = ptrtoint ptr %add.ptr.i to i64 %sub.ptr.rhs.cast25.i = ptrtoint ptr %buf.addr.0.lcssa.i to i64 %sub.ptr.sub26.i = sub i64 %sub.ptr.lhs.cast24.i, %sub.ptr.rhs.cast25.i %sub.ptr.div27.i = lshr exact i64 %sub.ptr.sub26.i, 1 @@ -17722,7 +17720,7 @@ _ZN7simdutf7icelake12_GLOBAL__N_143icelake_convert_utf16_to_latin1_with_errorsIL define dso_local noundef i64 @_ZNK7simdutf7icelake14implementation31convert_valid_utf16be_to_latin1EPKDsmPc(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr nocapture noundef writeonly %latin1_output) unnamed_addr #13 align 2 { entry: %add.ptr.idx.i.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i.i + %add.ptr.i.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i.i %cmp.not56.i.i = icmp slt i64 %len, 32 br i1 %cmp.not56.i.i, label %while.end.i.i, label %while.body.preheader.i.i @@ -17749,17 +17747,17 @@ if.end.i.i: ; preds = %while.body.i.i store <4 x i64> %shuffle.i104.i.i, ptr %latin1_output.addr.057.i.i, align 1 %add.ptr13.i.i = getelementptr inbounds i8, ptr %latin1_output.addr.057.i.i, i64 32 %add.ptr3.i.i = getelementptr inbounds i8, ptr %add.ptr359.i.i, i64 64 - %cmp.not.i.i = icmp ugt ptr %add.ptr3.i.i, %add.ptr.ptr.i.i + %cmp.not.i.i = icmp ugt ptr %add.ptr3.i.i, %add.ptr.i.i br i1 %cmp.not.i.i, label %while.end.i.i, label %while.body.i.i, !llvm.loop !147 while.end.i.i: ; preds = %if.end.i.i, %entry %latin1_output.addr.0.lcssa.i.i = phi ptr [ %latin1_output, %entry ], [ %add.ptr13.i.i, %if.end.i.i ] %buf.addr.0.lcssa.i.i = phi ptr [ %buf, %entry ], [ %add.ptr359.i.i, %if.end.i.i ] - %cmp15.i.i = icmp ult ptr %buf.addr.0.lcssa.i.i, %add.ptr.ptr.i.i + %cmp15.i.i = icmp ult ptr %buf.addr.0.lcssa.i.i, %add.ptr.i.i br i1 %cmp15.i.i, label %if.then16.i.i, label %_ZNK7simdutf7icelake14implementation25convert_utf16be_to_latin1EPKDsmPc.exit if.then16.i.i: ; preds = %while.end.i.i - %sub.ptr.lhs.cast.i.i = ptrtoint ptr %add.ptr.ptr.i.i to i64 + %sub.ptr.lhs.cast.i.i = ptrtoint ptr %add.ptr.i.i to i64 %sub.ptr.rhs.cast.i.i = ptrtoint ptr %buf.addr.0.lcssa.i.i to i64 %sub.ptr.sub.i.i = sub i64 %sub.ptr.lhs.cast.i.i, %sub.ptr.rhs.cast.i.i %sub.ptr.div.i.i = lshr exact i64 %sub.ptr.sub.i.i, 1 @@ -17790,7 +17788,7 @@ _ZNK7simdutf7icelake14implementation25convert_utf16be_to_latin1EPKDsmPc.exit: ; define dso_local noundef i64 @_ZNK7simdutf7icelake14implementation31convert_valid_utf16le_to_latin1EPKDsmPc(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr nocapture noundef writeonly %latin1_output) unnamed_addr #13 align 2 { entry: %add.ptr.idx.i.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i.i + %add.ptr.i.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i.i %cmp.not53.i.i = icmp slt i64 %len, 32 br i1 %cmp.not53.i.i, label %while.end.i.i, label %while.body.preheader.i.i @@ -17817,17 +17815,17 @@ if.end.i.i: ; preds = %while.body.i.i store <4 x i64> %shuffle.i86.i.i, ptr %latin1_output.addr.054.i.i, align 1 %add.ptr10.i.i = getelementptr inbounds i8, ptr %latin1_output.addr.054.i.i, i64 32 %add.ptr3.i.i = getelementptr inbounds i8, ptr %add.ptr356.i.i, i64 64 - %cmp.not.i.i = icmp ugt ptr %add.ptr3.i.i, %add.ptr.ptr.i.i + %cmp.not.i.i = icmp ugt ptr %add.ptr3.i.i, %add.ptr.i.i br i1 %cmp.not.i.i, label %while.end.i.i, label %while.body.i.i, !llvm.loop !146 while.end.i.i: ; preds = %if.end.i.i, %entry %latin1_output.addr.0.lcssa.i.i = phi ptr [ %latin1_output, %entry ], [ %add.ptr10.i.i, %if.end.i.i ] %buf.addr.0.lcssa.i.i = phi ptr [ %buf, %entry ], [ %add.ptr356.i.i, %if.end.i.i ] - %cmp12.i.i = icmp ult ptr %buf.addr.0.lcssa.i.i, %add.ptr.ptr.i.i + %cmp12.i.i = icmp ult ptr %buf.addr.0.lcssa.i.i, %add.ptr.i.i br i1 %cmp12.i.i, label %if.then13.i.i, label %_ZNK7simdutf7icelake14implementation25convert_utf16le_to_latin1EPKDsmPc.exit if.then13.i.i: ; preds = %while.end.i.i - %sub.ptr.lhs.cast.i.i = ptrtoint ptr %add.ptr.ptr.i.i to i64 + %sub.ptr.lhs.cast.i.i = ptrtoint ptr %add.ptr.i.i to i64 %sub.ptr.rhs.cast.i.i = ptrtoint ptr %buf.addr.0.lcssa.i.i to i64 %sub.ptr.sub.i.i = sub i64 %sub.ptr.lhs.cast.i.i, %sub.ptr.rhs.cast.i.i %sub.ptr.div.i.i = lshr exact i64 %sub.ptr.sub.i.i, 1 @@ -19317,7 +19315,7 @@ entry: define dso_local noundef i64 @_ZNK7simdutf7icelake14implementation23convert_utf32_to_latin1EPKDimPc(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr nocapture noundef writeonly %latin1_output) unnamed_addr #13 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 2 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not37.i = icmp slt i64 %len, 16 br i1 %cmp.not37.i, label %while.end.i, label %while.body.preheader.i @@ -19344,17 +19342,17 @@ if.end.i: ; preds = %while.body.i store <2 x i64> %shuffle.i55.i, ptr %latin1_output.addr.038.i, align 1 %add.ptr8.i = getelementptr inbounds i8, ptr %latin1_output.addr.038.i, i64 16 %add.ptr2.i = getelementptr inbounds i8, ptr %add.ptr240.i, i64 64 - %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.i br i1 %cmp.not.i, label %while.end.i, label %while.body.i, !llvm.loop !162 while.end.i: ; preds = %if.end.i, %entry %latin1_output.addr.0.lcssa.i = phi ptr [ %latin1_output, %entry ], [ %add.ptr8.i, %if.end.i ] %buf.addr.0.lcssa.i = phi ptr [ %buf, %entry ], [ %add.ptr240.i, %if.end.i ] - %cmp10.i = icmp ult ptr %buf.addr.0.lcssa.i, %add.ptr.ptr.i + %cmp10.i = icmp ult ptr %buf.addr.0.lcssa.i, %add.ptr.i br i1 %cmp10.i, label %if.then11.i, label %_ZN7simdutf7icelake12_GLOBAL__N_131icelake_convert_utf32_to_latin1EPKDimPc.exit if.then11.i: ; preds = %while.end.i - %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.ptr.i to i64 + %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.i to i64 %sub.ptr.rhs.cast.i = ptrtoint ptr %buf.addr.0.lcssa.i to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i = lshr exact i64 %sub.ptr.sub.i, 2 @@ -19383,7 +19381,7 @@ _ZN7simdutf7icelake12_GLOBAL__N_131icelake_convert_utf32_to_latin1EPKDimPc.exit: define dso_local { i32, i64 } @_ZNK7simdutf7icelake14implementation35convert_utf32_to_latin1_with_errorsEPKDimPc(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr nocapture noundef writeonly %latin1_output) unnamed_addr #13 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 2 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not55.i = icmp slt i64 %len, 16 br i1 %cmp.not55.i, label %while.end14.i, label %while.body.preheader.i @@ -19435,17 +19433,17 @@ if.end.i: ; preds = %while.body.i store <2 x i64> %shuffle.i88.i, ptr %latin1_output.addr.056.i, align 1, !noalias !163 %add.ptr12.i = getelementptr inbounds i8, ptr %latin1_output.addr.056.i, i64 16 %add.ptr2.i = getelementptr inbounds i8, ptr %add.ptr258.i, i64 64 - %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.i br i1 %cmp.not.i, label %while.end14.i, label %while.body.i, !llvm.loop !167 while.end14.i: ; preds = %if.end.i, %entry %latin1_output.addr.0.lcssa.i = phi ptr [ %latin1_output, %entry ], [ %add.ptr12.i, %if.end.i ] %buf.addr.0.lcssa.i = phi ptr [ %buf, %entry ], [ %add.ptr258.i, %if.end.i ] - %cmp15.i = icmp ult ptr %buf.addr.0.lcssa.i, %add.ptr.ptr.i + %cmp15.i = icmp ult ptr %buf.addr.0.lcssa.i, %add.ptr.i br i1 %cmp15.i, label %if.then16.i, label %_ZN7simdutf7icelake12_GLOBAL__N_143icelake_convert_utf32_to_latin1_with_errorsEPKDimPc.exit if.then16.i: ; preds = %while.end14.i - %sub.ptr.lhs.cast17.i = ptrtoint ptr %add.ptr.ptr.i to i64 + %sub.ptr.lhs.cast17.i = ptrtoint ptr %add.ptr.i to i64 %sub.ptr.rhs.cast18.i = ptrtoint ptr %buf.addr.0.lcssa.i to i64 %sub.ptr.sub19.i = sub i64 %sub.ptr.lhs.cast17.i, %sub.ptr.rhs.cast18.i %sub.ptr.div20.i = lshr exact i64 %sub.ptr.sub19.i, 2 @@ -19505,7 +19503,7 @@ _ZN7simdutf7icelake12_GLOBAL__N_143icelake_convert_utf32_to_latin1_with_errorsEP define dso_local noundef i64 @_ZNK7simdutf7icelake14implementation29convert_valid_utf32_to_latin1EPKDimPc(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr nocapture noundef writeonly %latin1_output) unnamed_addr #13 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 2 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not37.i = icmp slt i64 %len, 16 br i1 %cmp.not37.i, label %while.end.i, label %while.body.preheader.i @@ -19532,17 +19530,17 @@ if.end.i: ; preds = %while.body.i store <2 x i64> %shuffle.i55.i, ptr %latin1_output.addr.038.i, align 1 %add.ptr8.i = getelementptr inbounds i8, ptr %latin1_output.addr.038.i, i64 16 %add.ptr2.i = getelementptr inbounds i8, ptr %add.ptr240.i, i64 64 - %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.i br i1 %cmp.not.i, label %while.end.i, label %while.body.i, !llvm.loop !162 while.end.i: ; preds = %if.end.i, %entry %latin1_output.addr.0.lcssa.i = phi ptr [ %latin1_output, %entry ], [ %add.ptr8.i, %if.end.i ] %buf.addr.0.lcssa.i = phi ptr [ %buf, %entry ], [ %add.ptr240.i, %if.end.i ] - %cmp10.i = icmp ult ptr %buf.addr.0.lcssa.i, %add.ptr.ptr.i + %cmp10.i = icmp ult ptr %buf.addr.0.lcssa.i, %add.ptr.i br i1 %cmp10.i, label %if.then11.i, label %_ZN7simdutf7icelake12_GLOBAL__N_131icelake_convert_utf32_to_latin1EPKDimPc.exit if.then11.i: ; preds = %while.end.i - %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.ptr.i to i64 + %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.i to i64 %sub.ptr.rhs.cast.i = ptrtoint ptr %buf.addr.0.lcssa.i to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i = lshr exact i64 %sub.ptr.sub.i, 2 @@ -19571,12 +19569,12 @@ _ZN7simdutf7icelake12_GLOBAL__N_131icelake_convert_utf32_to_latin1EPKDimPc.exit: define dso_local noundef i64 @_ZNK7simdutf7icelake14implementation21convert_utf32_to_utf8EPKDimPc(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf8_output) unnamed_addr #16 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 2 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not317333.i = icmp slt i64 %len, 28 br i1 %cmp.not317333.i, label %while.end.i, label %while.body.lr.ph.lr.ph.i while.body.lr.ph.lr.ph.i: ; preds = %entry - %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.ptr.i to i64 + %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.i to i64 br label %while.body.lr.ph.i while.body.lr.ph.i: ; preds = %if.end299.i, %while.body.lr.ph.lr.ph.i @@ -19620,7 +19618,7 @@ while.cond.backedge.i: ; preds = %if.then52.i, %if.th %utf8_output.addr.0.be.i = phi ptr [ %add.ptr99.i, %if.then52.i ], [ %add.ptr34.i, %if.then.i ] %buf.addr.0.be.i = getelementptr inbounds i8, ptr %buf.addr.0319.i, i64 64 %add.ptr9.i = getelementptr inbounds i8, ptr %buf.addr.0319.i, i64 176 - %cmp.not.i = icmp ugt ptr %add.ptr9.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr9.i, %add.ptr.i br i1 %cmp.not.i, label %while.end.i, label %while.body.i, !llvm.loop !169 if.end.i: ; preds = %while.body.i @@ -19879,7 +19877,7 @@ if.end299.i: ; preds = %for.end.i, %if.then %storemerge.i = phi ptr [ %add.ptr223.i, %if.then114.i ], [ %add.ptr298.i, %for.end.i ] %forbidden_bytemask.1.i = phi <4 x i64> [ %or.i563.i, %if.then114.i ], [ %forbidden_bytemask.0.ph336.i, %for.end.i ] %add.ptr9316.i = getelementptr inbounds i8, ptr %storemerge.i, i64 112 - %cmp.not317.i = icmp ugt ptr %add.ptr9316.i, %add.ptr.ptr.i + %cmp.not317.i = icmp ugt ptr %add.ptr9316.i, %add.ptr.i br i1 %cmp.not317.i, label %while.end.i, label %while.body.lr.ph.i, !llvm.loop !169 while.end.i: ; preds = %if.end299.i, %while.cond.backedge.i, %entry @@ -19931,12 +19929,12 @@ return: ; preds = %if.else271.i, %if.t define dso_local { i32, i64 } @_ZNK7simdutf7icelake14implementation33convert_utf32_to_utf8_with_errorsEPKDimPc(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf8_output) unnamed_addr #16 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 2 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not336.i = icmp slt i64 %len, 28 br i1 %cmp.not336.i, label %while.end.i, label %while.body.lr.ph.i while.body.lr.ph.i: ; preds = %entry - %sub.ptr.lhs.cast238.i = ptrtoint ptr %add.ptr.ptr.i to i64 + %sub.ptr.lhs.cast238.i = ptrtoint ptr %add.ptr.i to i64 br label %while.body.i while.body.i: ; preds = %while.cond.backedge.i, %while.body.lr.ph.i @@ -19988,7 +19986,7 @@ while.cond.backedge.i: ; preds = %for.end.i, %if.end1 %utf8_output.addr.0.be.i = phi ptr [ %add.ptr106.i, %if.then59.i ], [ %add.ptr40.i, %if.then35.i ], [ %add.ptr236.i, %if.end138.i ], [ %utf8_output.addr.1.lcssa.i, %for.end.i ] %buf.addr.0.be.i = phi ptr [ %add.ptr7339.i, %if.then59.i ], [ %add.ptr7339.i, %if.then35.i ], [ %add.ptr7339.i, %if.end138.i ], [ %add.ptr325.i, %for.end.i ] %add.ptr8.i = getelementptr inbounds i8, ptr %buf.addr.0.be.i, i64 112 - %cmp.not.i = icmp ugt ptr %add.ptr8.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr8.i, %add.ptr.i br i1 %cmp.not.i, label %while.end.i, label %while.body.i, !llvm.loop !174 if.end41.i: ; preds = %if.end.i @@ -20326,12 +20324,12 @@ entry: define dso_local noundef i64 @_ZNK7simdutf7icelake14implementation24convert_utf32_to_utf16leEPKDimPDs(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf16_output) unnamed_addr #16 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 2 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not67.i = icmp slt i64 %len, 20 br i1 %cmp.not67.i, label %_ZN7simdutf7icelake12_GLOBAL__N_129avx512_convert_utf32_to_utf16ILNS_10endiannessE0EEESt4pairIPKDiPDsES6_mS7_.exit, label %while.body.lr.ph.i while.body.lr.ph.i: ; preds = %entry - %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.ptr.i to i64 + %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.i to i64 br label %while.body.i while.body.i: ; preds = %if.end60.i, %while.body.lr.ph.i @@ -20426,7 +20424,7 @@ if.end60.i: ; preds = %for.end.i, %if.then %storemerge.i = phi ptr [ %add.ptr29.i, %if.then.i ], [ %add.ptr59.i, %for.end.i ] %forbidden_bytemask.1.i = phi <4 x i64> [ %or.i.i, %if.then.i ], [ %forbidden_bytemask.070.i, %for.end.i ] %add.ptr2.i = getelementptr inbounds i8, ptr %storemerge.i, i64 80 - %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.i br i1 %cmp.not.i, label %while.end.loopexit.i, label %while.body.i, !llvm.loop !177 while.end.loopexit.i: ; preds = %if.end60.i @@ -20524,12 +20522,12 @@ return: ; preds = %if.else44.i, %if.th define dso_local noundef i64 @_ZNK7simdutf7icelake14implementation24convert_utf32_to_utf16beEPKDimPDs(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf16_output) unnamed_addr #16 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 2 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not73.i = icmp slt i64 %len, 20 br i1 %cmp.not73.i, label %_ZN7simdutf7icelake12_GLOBAL__N_129avx512_convert_utf32_to_utf16ILNS_10endiannessE1EEESt4pairIPKDiPDsES6_mS7_.exit, label %while.body.lr.ph.i while.body.lr.ph.i: ; preds = %entry - %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.ptr.i to i64 + %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.i to i64 br label %while.body.i while.body.i: ; preds = %if.end79.i, %while.body.lr.ph.i @@ -20636,7 +20634,7 @@ if.end79.i: ; preds = %for.end.i, %if.then %storemerge.i = phi ptr [ %add.ptr31.i, %if.then.i ], [ %add.ptr78.i, %for.end.i ] %forbidden_bytemask.1.i = phi <4 x i64> [ %or.i.i, %if.then.i ], [ %forbidden_bytemask.076.i, %for.end.i ] %add.ptr2.i = getelementptr inbounds i8, ptr %storemerge.i, i64 80 - %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.i br i1 %cmp.not.i, label %while.end.loopexit.i, label %while.body.i, !llvm.loop !179 while.end.loopexit.i: ; preds = %if.end79.i @@ -20737,12 +20735,12 @@ return: ; preds = %if.else50.i, %if.th define dso_local { i32, i64 } @_ZNK7simdutf7icelake14implementation36convert_utf32_to_utf16le_with_errorsEPKDimPDs(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf16_output) unnamed_addr #16 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 2 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not87.i = icmp slt i64 %len, 20 br i1 %cmp.not87.i, label %while.end.i, label %while.body.lr.ph.i while.body.lr.ph.i: ; preds = %entry - %sub.ptr.lhs.cast30.i = ptrtoint ptr %add.ptr.ptr.i to i64 + %sub.ptr.lhs.cast30.i = ptrtoint ptr %add.ptr.i to i64 br label %while.body.i while.body.i: ; preds = %if.end74.i, %while.body.lr.ph.i @@ -20861,7 +20859,7 @@ if.end74.i: ; preds = %for.end.i, %if.end. %utf16_output.addr.3.i = phi ptr [ %add.ptr28.i, %if.end.i ], [ %utf16_output.addr.1.lcssa.i, %for.end.i ] %buf.addr.1.i = phi ptr [ %add.ptr190.i, %if.end.i ], [ %add.ptr73.i, %for.end.i ] %add.ptr2.i = getelementptr inbounds i8, ptr %buf.addr.1.i, i64 80 - %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.i br i1 %cmp.not.i, label %while.end.i, label %while.body.i, !llvm.loop !184 while.end.i: ; preds = %if.end74.i, %entry @@ -20961,12 +20959,12 @@ return: ; preds = %if.end13, %if.then6 define dso_local { i32, i64 } @_ZNK7simdutf7icelake14implementation36convert_utf32_to_utf16be_with_errorsEPKDimPDs(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf16_output) unnamed_addr #16 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 2 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not93.i = icmp slt i64 %len, 20 br i1 %cmp.not93.i, label %while.end.i, label %while.body.lr.ph.i while.body.lr.ph.i: ; preds = %entry - %sub.ptr.lhs.cast32.i = ptrtoint ptr %add.ptr.ptr.i to i64 + %sub.ptr.lhs.cast32.i = ptrtoint ptr %add.ptr.i to i64 br label %while.body.i while.body.i: ; preds = %if.end93.i, %while.body.lr.ph.i @@ -21097,7 +21095,7 @@ if.end93.i: ; preds = %for.end.i, %if.end. %utf16_output.addr.3.i = phi ptr [ %add.ptr30.i, %if.end.i ], [ %utf16_output.addr.1.lcssa.i, %for.end.i ] %buf.addr.1.i = phi ptr [ %add.ptr196.i, %if.end.i ], [ %add.ptr92.i, %for.end.i ] %add.ptr2.i = getelementptr inbounds i8, ptr %buf.addr.1.i, i64 80 - %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.i br i1 %cmp.not.i, label %while.end.i, label %while.body.i, !llvm.loop !189 while.end.i: ; preds = %if.end93.i, %entry @@ -21200,12 +21198,12 @@ return: ; preds = %if.end13, %if.then6 define dso_local noundef i64 @_ZNK7simdutf7icelake14implementation30convert_valid_utf32_to_utf16leEPKDimPDs(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf16_output) unnamed_addr #16 align 2 { entry: %add.ptr.idx.i.i = shl nsw i64 %len, 2 - %add.ptr.ptr.i.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i.i + %add.ptr.i.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i.i %cmp.not67.i.i = icmp slt i64 %len, 20 br i1 %cmp.not67.i.i, label %_ZN7simdutf7icelake12_GLOBAL__N_129avx512_convert_utf32_to_utf16ILNS_10endiannessE0EEESt4pairIPKDiPDsES6_mS7_.exit.i, label %while.body.lr.ph.i.i while.body.lr.ph.i.i: ; preds = %entry - %sub.ptr.lhs.cast.i.i = ptrtoint ptr %add.ptr.ptr.i.i to i64 + %sub.ptr.lhs.cast.i.i = ptrtoint ptr %add.ptr.i.i to i64 br label %while.body.i.i while.body.i.i: ; preds = %if.end60.i.i, %while.body.lr.ph.i.i @@ -21300,7 +21298,7 @@ if.end60.i.i: ; preds = %for.end.i.i, %if.th %storemerge.i.i = phi ptr [ %add.ptr29.i.i, %if.then.i.i ], [ %add.ptr59.i.i, %for.end.i.i ] %forbidden_bytemask.1.i.i = phi <4 x i64> [ %or.i.i.i, %if.then.i.i ], [ %forbidden_bytemask.070.i.i, %for.end.i.i ] %add.ptr2.i.i = getelementptr inbounds i8, ptr %storemerge.i.i, i64 80 - %cmp.not.i.i = icmp ugt ptr %add.ptr2.i.i, %add.ptr.ptr.i.i + %cmp.not.i.i = icmp ugt ptr %add.ptr2.i.i, %add.ptr.i.i br i1 %cmp.not.i.i, label %while.end.loopexit.i.i, label %while.body.i.i, !llvm.loop !177 while.end.loopexit.i.i: ; preds = %if.end60.i.i @@ -21398,12 +21396,12 @@ _ZNK7simdutf7icelake14implementation24convert_utf32_to_utf16leEPKDimPDs.exit: ; define dso_local noundef i64 @_ZNK7simdutf7icelake14implementation30convert_valid_utf32_to_utf16beEPKDimPDs(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf16_output) unnamed_addr #16 align 2 { entry: %add.ptr.idx.i.i = shl nsw i64 %len, 2 - %add.ptr.ptr.i.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i.i + %add.ptr.i.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i.i %cmp.not73.i.i = icmp slt i64 %len, 20 br i1 %cmp.not73.i.i, label %_ZN7simdutf7icelake12_GLOBAL__N_129avx512_convert_utf32_to_utf16ILNS_10endiannessE1EEESt4pairIPKDiPDsES6_mS7_.exit.i, label %while.body.lr.ph.i.i while.body.lr.ph.i.i: ; preds = %entry - %sub.ptr.lhs.cast.i.i = ptrtoint ptr %add.ptr.ptr.i.i to i64 + %sub.ptr.lhs.cast.i.i = ptrtoint ptr %add.ptr.i.i to i64 br label %while.body.i.i while.body.i.i: ; preds = %if.end79.i.i, %while.body.lr.ph.i.i @@ -21510,7 +21508,7 @@ if.end79.i.i: ; preds = %for.end.i.i, %if.th %storemerge.i.i = phi ptr [ %add.ptr31.i.i, %if.then.i.i ], [ %add.ptr78.i.i, %for.end.i.i ] %forbidden_bytemask.1.i.i = phi <4 x i64> [ %or.i.i.i, %if.then.i.i ], [ %forbidden_bytemask.076.i.i, %for.end.i.i ] %add.ptr2.i.i = getelementptr inbounds i8, ptr %storemerge.i.i, i64 80 - %cmp.not.i.i = icmp ugt ptr %add.ptr2.i.i, %add.ptr.ptr.i.i + %cmp.not.i.i = icmp ugt ptr %add.ptr2.i.i, %add.ptr.i.i br i1 %cmp.not.i.i, label %while.end.loopexit.i.i, label %while.body.i.i, !llvm.loop !179 while.end.loopexit.i.i: ; preds = %if.end79.i.i @@ -24117,8 +24115,6 @@ if.then.i: ; preds = %while.body.i br i1 %cmp10.not.i, label %if.else65.i, label %if.then11.i if.then11.i: ; preds = %if.then.i - %div1437.i = lshr exact i64 %length, 1 - %add.ptr12.i = getelementptr inbounds i16, ptr %input, i64 %div1437.i %not.i = xor i32 %27, -1 %28 = and <32 x i8> %25, %cmp.i9572.i = icmp eq <32 x i8> %28, @@ -24142,7 +24138,7 @@ if.then25.i: ; preds = %if.then11.i if.end28.i: ; preds = %if.then25.i, %if.then11.i %input.0.i = phi ptr [ %add.ptr26.i, %if.then25.i ], [ %add.ptr11493.i, %if.then11.i ] %add.ptr301499.i = getelementptr inbounds i8, ptr %input.0.i, i64 64 - %cmp311500.i = icmp ult ptr %add.ptr301499.i, %add.ptr12.i + %cmp311500.i = icmp ult ptr %add.ptr301499.i, %add.ptr.i br i1 %cmp311500.i, label %while.body32.i, label %if.end150.land.lhs.true_crit_edge.i while.body32.i: ; preds = %if.end28.i, %if.end64.i @@ -24196,7 +24192,7 @@ if.then59.i: ; preds = %if.else41.i if.end64.i: ; preds = %if.then59.i, %if.else41.i, %while.body32.i %input.2.i = phi ptr [ %add.ptr60.i, %if.then59.i ], [ %add.ptr301502.i, %while.body32.i ], [ %add.ptr301502.i, %if.else41.i ] %add.ptr30.i = getelementptr inbounds i8, ptr %input.2.i, i64 64 - %cmp31.i = icmp ult ptr %add.ptr30.i, %add.ptr12.i + %cmp31.i = icmp ult ptr %add.ptr30.i, %add.ptr.i br i1 %cmp31.i, label %while.body32.i, label %if.end150.i, !llvm.loop !232 if.else65.i: ; preds = %if.then.i @@ -24205,8 +24201,6 @@ if.else65.i: ; preds = %if.then.i br i1 %cmp66.i, label %if.then67.i, label %_ZN7simdutf7haswell12_GLOBAL__N_121avx2_detect_encodingsINS1_15utf8_validation12utf8_checkerEEEiPKcm.exit if.then67.i: ; preds = %if.else65.i - %div691436.i = lshr exact i64 %length, 2 - %add.ptr70.i = getelementptr inbounds i32, ptr %input, i64 %div691436.i %51 = bitcast <4 x i64> %11 to <8 x i32> %elt.max.i272.i = tail call <8 x i32> @llvm.umax.v8i32(<8 x i32> %51, <8 x i32> %10) %52 = bitcast <4 x i64> %12 to <8 x i32> @@ -24214,7 +24208,7 @@ if.then67.i: ; preds = %if.else65.i %add.i9328.i = add <8 x i32> %51, %add.i9321.i = add <8 x i32> %52, %elt.max.i251.i = tail call <8 x i32> @llvm.umax.v8i32(<8 x i32> %add.i9321.i, <8 x i32> %add.i9328.i) - %cmp941504.i = icmp ult ptr %add.ptr3.i.le, %add.ptr70.i + %cmp941504.i = icmp ult ptr %add.ptr3.i.le, %add.ptr.i br i1 %cmp941504.i, label %while.body95.i, label %while.end107.i while.body95.i: ; preds = %if.then67.i, %while.body95.i @@ -24227,7 +24221,7 @@ while.body95.i: ; preds = %if.then67.i, %while %add.i.i = add <8 x i32> %53, %elt.max.i237.i = tail call <8 x i32> @llvm.umax.v8i32(<8 x i32> %add.i.i, <8 x i32> %currentoffsetmax.0.in1505.i) %add.ptr93.i = getelementptr inbounds i8, ptr %add.ptr931508.i, i64 32 - %cmp94.i = icmp ult ptr %add.ptr93.i, %add.ptr70.i + %cmp94.i = icmp ult ptr %add.ptr93.i, %add.ptr.i br i1 %cmp94.i, label %while.body95.i, label %while.end107.i, !llvm.loop !233 while.end107.i: ; preds = %while.body95.i, %if.then67.i @@ -25444,7 +25438,7 @@ _ZN7simdutf7haswell12_GLOBAL__N_115utf8_validation34generic_validate_ascii_with_ define dso_local noundef zeroext i1 @_ZNK7simdutf7haswell14implementation16validate_utf16leEPKDsm(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len) unnamed_addr #22 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp147.i = icmp sgt i64 %len, 32 br i1 %cmp147.i, label %while.body.preheader.i, label %_ZN7simdutf7haswell12_GLOBAL__N_119avx2_validate_utf16ILNS_10endiannessE0EEEPKDsS5_m.exit @@ -25503,7 +25497,7 @@ if.then19.i: ; preds = %if.else.i if.end23.i: ; preds = %if.then19.i, %if.else.i, %while.body.i %input.addr.1.i = phi ptr [ %add.ptr20.i, %if.then19.i ], [ %add.ptr1149.i, %while.body.i ], [ %add.ptr1149.i, %if.else.i ] %add.ptr1.i = getelementptr inbounds i8, ptr %input.addr.1.i, i64 64 - %cmp.i = icmp ult ptr %add.ptr1.i, %add.ptr.ptr.i + %cmp.i = icmp ult ptr %add.ptr1.i, %add.ptr.i br i1 %cmp.i, label %while.body.i, label %if.then, !llvm.loop !311 _ZN7simdutf7haswell12_GLOBAL__N_119avx2_validate_utf16ILNS_10endiannessE0EEEPKDsS5_m.exit: ; preds = %entry @@ -25561,7 +25555,7 @@ return: ; preds = %if.else.i, %if.end3 define dso_local noundef zeroext i1 @_ZNK7simdutf7haswell14implementation16validate_utf16beEPKDsm(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len) unnamed_addr #22 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp149.i = icmp sgt i64 %len, 32 br i1 %cmp149.i, label %while.body.preheader.i, label %_ZN7simdutf7haswell12_GLOBAL__N_119avx2_validate_utf16ILNS_10endiannessE1EEEPKDsS5_m.exit @@ -25624,7 +25618,7 @@ if.then20.i: ; preds = %if.else.i if.end24.i: ; preds = %if.then20.i, %if.else.i, %while.body.i %input.addr.1.i = phi ptr [ %add.ptr21.i, %if.then20.i ], [ %add.ptr1151.i, %while.body.i ], [ %add.ptr1151.i, %if.else.i ] %add.ptr1.i = getelementptr inbounds i8, ptr %input.addr.1.i, i64 64 - %cmp.i = icmp ult ptr %add.ptr1.i, %add.ptr.ptr.i + %cmp.i = icmp ult ptr %add.ptr1.i, %add.ptr.i br i1 %cmp.i, label %while.body.i, label %if.then, !llvm.loop !318 _ZN7simdutf7haswell12_GLOBAL__N_119avx2_validate_utf16ILNS_10endiannessE1EEEPKDsS5_m.exit: ; preds = %entry @@ -25683,7 +25677,7 @@ return: ; preds = %if.else.i, %if.end3 define dso_local { i32, i64 } @_ZNK7simdutf7haswell14implementation28validate_utf16le_with_errorsEPKDsm(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len) unnamed_addr #22 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp151.i = icmp sgt i64 %len, 32 br i1 %cmp151.i, label %while.body.preheader.i, label %_ZN7simdutf7haswell12_GLOBAL__N_131avx2_validate_utf16_with_errorsILNS_10endiannessE0EEEKNS_6resultEPKDsm.exit @@ -25742,7 +25736,7 @@ if.then19.i: ; preds = %if.else.i if.end23.i: ; preds = %if.then19.i, %if.else.i, %while.body.i %input.addr.1.i = phi ptr [ %add.ptr20.i, %if.then19.i ], [ %add.ptr1153.i, %while.body.i ], [ %add.ptr1153.i, %if.else.i ] %add.ptr1.i = getelementptr inbounds i8, ptr %input.addr.1.i, i64 64 - %cmp.i = icmp ult ptr %add.ptr1.i, %add.ptr.ptr.i + %cmp.i = icmp ult ptr %add.ptr1.i, %add.ptr.i br i1 %cmp.i, label %while.body.i, label %_ZN7simdutf7haswell12_GLOBAL__N_131avx2_validate_utf16_with_errorsILNS_10endiannessE0EEEKNS_6resultEPKDsm.exit, !llvm.loop !325 _ZN7simdutf7haswell12_GLOBAL__N_131avx2_validate_utf16_with_errorsILNS_10endiannessE0EEEKNS_6resultEPKDsm.exit: ; preds = %if.else.i, %if.end23.i, %entry @@ -25810,7 +25804,7 @@ return: ; preds = %_ZN7simdutf7haswell define dso_local { i32, i64 } @_ZNK7simdutf7haswell14implementation28validate_utf16be_with_errorsEPKDsm(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len) unnamed_addr #22 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp153.i = icmp sgt i64 %len, 32 br i1 %cmp153.i, label %while.body.preheader.i, label %_ZN7simdutf7haswell12_GLOBAL__N_131avx2_validate_utf16_with_errorsILNS_10endiannessE1EEEKNS_6resultEPKDsm.exit @@ -25873,7 +25867,7 @@ if.then20.i: ; preds = %if.else.i if.end24.i: ; preds = %if.then20.i, %if.else.i, %while.body.i %input.addr.1.i = phi ptr [ %add.ptr21.i, %if.then20.i ], [ %add.ptr1155.i, %while.body.i ], [ %add.ptr1155.i, %if.else.i ] %add.ptr1.i = getelementptr inbounds i8, ptr %input.addr.1.i, i64 64 - %cmp.i = icmp ult ptr %add.ptr1.i, %add.ptr.ptr.i + %cmp.i = icmp ult ptr %add.ptr1.i, %add.ptr.i br i1 %cmp.i, label %while.body.i, label %_ZN7simdutf7haswell12_GLOBAL__N_131avx2_validate_utf16_with_errorsILNS_10endiannessE1EEEKNS_6resultEPKDsm.exit, !llvm.loop !332 _ZN7simdutf7haswell12_GLOBAL__N_131avx2_validate_utf16_with_errorsILNS_10endiannessE1EEEKNS_6resultEPKDsm.exit: ; preds = %if.else.i, %if.end24.i, %entry @@ -25942,7 +25936,7 @@ return: ; preds = %_ZN7simdutf7haswell define dso_local noundef zeroext i1 @_ZNK7simdutf7haswell14implementation14validate_utf32EPKDim(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len) unnamed_addr #22 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 2 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp36.i = icmp sgt i64 %len, 8 br i1 %cmp36.i, label %while.body.preheader.i, label %while.end.i @@ -25960,7 +25954,7 @@ while.body.i: ; preds = %while.body.i, %whil %add.i.i = add <8 x i32> %2, %elt.max.i71.i = tail call <8 x i32> @llvm.umax.v8i32(<8 x i32> %add.i.i, <8 x i32> %1) %add.ptr5.i = getelementptr inbounds i8, ptr %add.ptr538.i, i64 32 - %cmp.i = icmp ult ptr %add.ptr5.i, %add.ptr.ptr.i + %cmp.i = icmp ult ptr %add.ptr5.i, %add.ptr.i br i1 %cmp.i, label %while.body.i, label %while.end.i, !llvm.loop !333 while.end.i: ; preds = %while.body.i, %entry @@ -30646,7 +30640,7 @@ _ZN7simdutf7haswell12_GLOBAL__N_113utf8_to_utf3213convert_validEPKcmPDi.exit: ; define dso_local noundef i64 @_ZNK7simdutf7haswell14implementation25convert_utf16le_to_latin1EPKDsmPc(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %latin1_output) unnamed_addr #25 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not28.i = icmp slt i64 %len, 16 br i1 %cmp.not28.i, label %_ZN7simdutf7haswell12_GLOBAL__N_128avx2_convert_utf16_to_latin1ILNS_10endiannessE0EEESt4pairIPKDsPcES6_mS7_.exit, label %while.body.preheader.i @@ -30676,7 +30670,7 @@ if.then10.i: ; preds = %while.body.i store <2 x i64> %10, ptr %latin1_output.addr.029.i, align 1 %add.ptr16.i = getelementptr inbounds i8, ptr %latin1_output.addr.029.i, i64 16 %add.ptr1.i = getelementptr inbounds i8, ptr %add.ptr131.i, i64 32 - %cmp.not.i = icmp ugt ptr %add.ptr1.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr1.i, %add.ptr.i br i1 %cmp.not.i, label %if.end, label %while.body.i, !llvm.loop !446 _ZN7simdutf7haswell12_GLOBAL__N_128avx2_convert_utf16_to_latin1ILNS_10endiannessE0EEESt4pairIPKDsPcES6_mS7_.exit: ; preds = %entry @@ -30714,7 +30708,7 @@ return: ; preds = %while.body.i, %if.t define dso_local noundef i64 @_ZNK7simdutf7haswell14implementation25convert_utf16be_to_latin1EPKDsmPc(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %latin1_output) unnamed_addr #25 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not28.i = icmp slt i64 %len, 16 br i1 %cmp.not28.i, label %_ZN7simdutf7haswell12_GLOBAL__N_128avx2_convert_utf16_to_latin1ILNS_10endiannessE1EEESt4pairIPKDsPcES6_mS7_.exit, label %while.body.preheader.i @@ -30746,7 +30740,7 @@ if.then10.i: ; preds = %while.body.i store <2 x i64> %12, ptr %latin1_output.addr.029.i, align 1 %add.ptr16.i = getelementptr inbounds i8, ptr %latin1_output.addr.029.i, i64 16 %add.ptr1.i = getelementptr inbounds i8, ptr %add.ptr131.i, i64 32 - %cmp.not.i = icmp ugt ptr %add.ptr1.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr1.i, %add.ptr.i br i1 %cmp.not.i, label %if.end, label %while.body.i, !llvm.loop !447 _ZN7simdutf7haswell12_GLOBAL__N_128avx2_convert_utf16_to_latin1ILNS_10endiannessE1EEESt4pairIPKDsPcES6_mS7_.exit: ; preds = %entry @@ -30784,7 +30778,7 @@ return: ; preds = %while.body.i, %if.t define dso_local { i32, i64 } @_ZNK7simdutf7haswell14implementation37convert_utf16le_to_latin1_with_errorsEPKDsmPc(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %latin1_output) unnamed_addr #19 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not50.i = icmp slt i64 %len, 16 br i1 %cmp.not50.i, label %if.end, label %while.body.preheader.i @@ -30836,7 +30830,7 @@ if.then24.i: ; preds = %cond.end.i if.end29.i: ; preds = %if.then24.i, %if.then.i %latin1_output.addr.2.i = phi ptr [ %add.ptr14.i, %if.then.i ], [ %incdec.ptr.i, %if.then24.i ] %add.ptr1.i = getelementptr inbounds i8, ptr %add.ptr153.i, i64 32 - %cmp.not.i = icmp ugt ptr %add.ptr1.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr1.i, %add.ptr.i br i1 %cmp.not.i, label %if.end, label %while.body.i, !llvm.loop !452 if.then: ; preds = %cond.end.i @@ -30955,7 +30949,7 @@ return: ; preds = %if.end19, %if.then1 define dso_local { i32, i64 } @_ZNK7simdutf7haswell14implementation37convert_utf16be_to_latin1_with_errorsEPKDsmPc(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %latin1_output) unnamed_addr #19 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not49.i = icmp slt i64 %len, 16 br i1 %cmp.not49.i, label %if.end, label %while.body.preheader.i @@ -31006,7 +31000,7 @@ if.then20.i: ; preds = %cond.end.i if.end25.i: ; preds = %if.then20.i, %if.then.i %latin1_output.addr.2.i = phi ptr [ %add.ptr10.i, %if.then.i ], [ %incdec.ptr.i, %if.then20.i ] %add.ptr1.i = getelementptr inbounds i8, ptr %add.ptr152.i, i64 32 - %cmp.not.i = icmp ugt ptr %add.ptr1.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr1.i, %add.ptr.i br i1 %cmp.not.i, label %if.end, label %while.body.i, !llvm.loop !457 if.then: ; preds = %cond.end.i @@ -31131,7 +31125,7 @@ return: ; preds = %if.end19, %if.then1 define dso_local noundef i64 @_ZNK7simdutf7haswell14implementation31convert_valid_utf16be_to_latin1EPKDsmPc(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %latin1_output) unnamed_addr #25 align 2 { entry: %add.ptr.idx.i.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i.i + %add.ptr.i.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i.i %cmp.not28.i.i = icmp slt i64 %len, 16 br i1 %cmp.not28.i.i, label %_ZN7simdutf7haswell12_GLOBAL__N_128avx2_convert_utf16_to_latin1ILNS_10endiannessE1EEESt4pairIPKDsPcES6_mS7_.exit.i, label %while.body.preheader.i.i @@ -31163,7 +31157,7 @@ if.then10.i.i: ; preds = %while.body.i.i store <2 x i64> %12, ptr %latin1_output.addr.029.i.i, align 1 %add.ptr16.i.i = getelementptr inbounds i8, ptr %latin1_output.addr.029.i.i, i64 16 %add.ptr1.i.i = getelementptr inbounds i8, ptr %add.ptr131.i.i, i64 32 - %cmp.not.i.i = icmp ugt ptr %add.ptr1.i.i, %add.ptr.ptr.i.i + %cmp.not.i.i = icmp ugt ptr %add.ptr1.i.i, %add.ptr.i.i br i1 %cmp.not.i.i, label %if.end.i, label %while.body.i.i, !llvm.loop !447 _ZN7simdutf7haswell12_GLOBAL__N_128avx2_convert_utf16_to_latin1ILNS_10endiannessE1EEESt4pairIPKDsPcES6_mS7_.exit.i: ; preds = %entry @@ -31201,7 +31195,7 @@ _ZNK7simdutf7haswell14implementation25convert_utf16be_to_latin1EPKDsmPc.exit: ; define dso_local noundef i64 @_ZNK7simdutf7haswell14implementation31convert_valid_utf16le_to_latin1EPKDsmPc(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %latin1_output) unnamed_addr #25 align 2 { entry: %add.ptr.idx.i.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i.i + %add.ptr.i.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i.i %cmp.not28.i.i = icmp slt i64 %len, 16 br i1 %cmp.not28.i.i, label %_ZN7simdutf7haswell12_GLOBAL__N_128avx2_convert_utf16_to_latin1ILNS_10endiannessE0EEESt4pairIPKDsPcES6_mS7_.exit.i, label %while.body.preheader.i.i @@ -31231,7 +31225,7 @@ if.then10.i.i: ; preds = %while.body.i.i store <2 x i64> %10, ptr %latin1_output.addr.029.i.i, align 1 %add.ptr16.i.i = getelementptr inbounds i8, ptr %latin1_output.addr.029.i.i, i64 16 %add.ptr1.i.i = getelementptr inbounds i8, ptr %add.ptr131.i.i, i64 32 - %cmp.not.i.i = icmp ugt ptr %add.ptr1.i.i, %add.ptr.ptr.i.i + %cmp.not.i.i = icmp ugt ptr %add.ptr1.i.i, %add.ptr.i.i br i1 %cmp.not.i.i, label %if.end.i, label %while.body.i.i, !llvm.loop !446 _ZN7simdutf7haswell12_GLOBAL__N_128avx2_convert_utf16_to_latin1ILNS_10endiannessE0EEESt4pairIPKDsPcES6_mS7_.exit.i: ; preds = %entry @@ -31269,12 +31263,12 @@ _ZNK7simdutf7haswell14implementation25convert_utf16le_to_latin1EPKDsmPc.exit: ; define dso_local noundef i64 @_ZNK7simdutf7haswell14implementation23convert_utf16le_to_utf8EPKDsmPc(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf8_output) unnamed_addr #19 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not270.i = icmp slt i64 %len, 28 br i1 %cmp.not270.i, label %_ZN7simdutf7haswell12_GLOBAL__N_126avx2_convert_utf16_to_utf8ILNS_10endiannessE0EEESt4pairIPKDsPcES6_mS7_.exit, label %while.body.lr.ph.i while.body.lr.ph.i: ; preds = %entry - %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.ptr.i to i64 + %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.i to i64 br label %while.body.i while.body.i: ; preds = %while.cond.backedge.i, %while.body.lr.ph.i @@ -31300,7 +31294,7 @@ while.cond.backedge.i: ; preds = %for.end.i, %if.then %utf8_output.addr.0.be.i = phi ptr [ %add.ptr79.i, %if.then32.i ], [ %add.ptr14.i, %if.then.i ], [ %add.ptr189.i, %if.then91.i ], [ %utf8_output.addr.1.lcssa.i, %for.end.i ] %buf.addr.0.be.i = phi ptr [ %add.ptr80.i, %if.then32.i ], [ %add.ptr13.i, %if.then.i ], [ %add.ptr190.i, %if.then91.i ], [ %add.ptr287.i, %for.end.i ] %add.ptr5.i = getelementptr inbounds i8, ptr %buf.addr.0.be.i, i64 56 - %cmp.not.i = icmp ugt ptr %add.ptr5.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr5.i, %add.ptr.i br i1 %cmp.not.i, label %_ZN7simdutf7haswell12_GLOBAL__N_126avx2_convert_utf16_to_utf8ILNS_10endiannessE0EEESt4pairIPKDsPcES6_mS7_.exit, label %while.body.i, !llvm.loop !458 if.end.i: ; preds = %while.body.i @@ -31591,12 +31585,12 @@ return: ; preds = %if.else243.i, %if.t define dso_local noundef i64 @_ZNK7simdutf7haswell14implementation23convert_utf16be_to_utf8EPKDsmPc(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf8_output) unnamed_addr #19 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not274.i = icmp slt i64 %len, 28 br i1 %cmp.not274.i, label %_ZN7simdutf7haswell12_GLOBAL__N_126avx2_convert_utf16_to_utf8ILNS_10endiannessE1EEESt4pairIPKDsPcES6_mS7_.exit, label %while.body.lr.ph.i while.body.lr.ph.i: ; preds = %entry - %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.ptr.i to i64 + %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.i to i64 br label %while.body.i while.body.i: ; preds = %while.cond.backedge.i, %while.body.lr.ph.i @@ -31624,7 +31618,7 @@ while.cond.backedge.i: ; preds = %for.end.i, %if.then %utf8_output.addr.0.be.i = phi ptr [ %add.ptr83.i, %if.then36.i ], [ %add.ptr18.i, %if.then.i ], [ %add.ptr193.i, %if.then95.i ], [ %utf8_output.addr.1.lcssa.i, %for.end.i ] %buf.addr.0.be.i = phi ptr [ %add.ptr84.i, %if.then36.i ], [ %add.ptr17.i, %if.then.i ], [ %add.ptr194.i, %if.then95.i ], [ %add.ptr293.i, %for.end.i ] %add.ptr5.i = getelementptr inbounds i8, ptr %buf.addr.0.be.i, i64 56 - %cmp.not.i = icmp ugt ptr %add.ptr5.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr5.i, %add.ptr.i br i1 %cmp.not.i, label %_ZN7simdutf7haswell12_GLOBAL__N_126avx2_convert_utf16_to_utf8ILNS_10endiannessE1EEESt4pairIPKDsPcES6_mS7_.exit, label %while.body.i, !llvm.loop !460 if.end.i: ; preds = %while.body.i @@ -31916,12 +31910,12 @@ return: ; preds = %if.else248.i, %if.t define dso_local { i32, i64 } @_ZNK7simdutf7haswell14implementation35convert_utf16le_to_utf8_with_errorsEPKDsmPc(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf8_output) unnamed_addr #19 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not282.i = icmp slt i64 %len, 28 br i1 %cmp.not282.i, label %if.end, label %while.body.lr.ph.i while.body.lr.ph.i: ; preds = %entry - %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.ptr.i to i64 + %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.i to i64 br label %while.body.i while.body.i: ; preds = %while.cond.backedge.i, %while.body.lr.ph.i @@ -31947,7 +31941,7 @@ while.cond.backedge.i: ; preds = %for.end.i, %if.then %utf8_output.addr.0.be.i = phi ptr [ %add.ptr79.i, %if.then32.i ], [ %add.ptr14.i, %if.then.i ], [ %add.ptr189.i, %if.then91.i ], [ %utf8_output.addr.1.lcssa.i, %for.end.i ] %buf.addr.0.be.i = phi ptr [ %add.ptr4285.i, %if.then32.i ], [ %add.ptr4285.i, %if.then.i ], [ %add.ptr4285.i, %if.then91.i ], [ %add.ptr292.i, %for.end.i ] %add.ptr5.i = getelementptr inbounds i8, ptr %buf.addr.0.be.i, i64 56 - %cmp.not.i = icmp ugt ptr %add.ptr5.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr5.i, %add.ptr.i br i1 %cmp.not.i, label %if.end, label %while.body.i, !llvm.loop !465 if.end.i: ; preds = %while.body.i @@ -32254,12 +32248,12 @@ return: ; preds = %if.end19, %if.then1 define dso_local { i32, i64 } @_ZNK7simdutf7haswell14implementation35convert_utf16be_to_utf8_with_errorsEPKDsmPc(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf8_output) unnamed_addr #19 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not285.i = icmp slt i64 %len, 28 br i1 %cmp.not285.i, label %if.end, label %while.body.lr.ph.i while.body.lr.ph.i: ; preds = %entry - %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.ptr.i to i64 + %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.i to i64 br label %while.body.i while.body.i: ; preds = %while.cond.backedge.i, %while.body.lr.ph.i @@ -32287,7 +32281,7 @@ while.cond.backedge.i: ; preds = %for.end.i, %if.then %utf8_output.addr.0.be.i = phi ptr [ %add.ptr83.i, %if.then36.i ], [ %add.ptr18.i, %if.then.i ], [ %add.ptr193.i, %if.then95.i ], [ %utf8_output.addr.1.lcssa.i, %for.end.i ] %buf.addr.0.be.i = phi ptr [ %add.ptr4288.i, %if.then36.i ], [ %add.ptr4288.i, %if.then.i ], [ %add.ptr4288.i, %if.then95.i ], [ %add.ptr298.i, %for.end.i ] %add.ptr5.i = getelementptr inbounds i8, ptr %buf.addr.0.be.i, i64 56 - %cmp.not.i = icmp ugt ptr %add.ptr5.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr5.i, %add.ptr.i br i1 %cmp.not.i, label %if.end, label %while.body.i, !llvm.loop !470 if.end.i: ; preds = %while.body.i @@ -32609,12 +32603,12 @@ entry: define dso_local noundef i64 @_ZNK7simdutf7haswell14implementation21convert_utf32_to_utf8EPKDimPc(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf8_output) unnamed_addr #19 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 2 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not317333.i = icmp slt i64 %len, 28 br i1 %cmp.not317333.i, label %while.end.i, label %while.body.lr.ph.lr.ph.i while.body.lr.ph.lr.ph.i: ; preds = %entry - %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.ptr.i to i64 + %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.i to i64 br label %while.body.lr.ph.i while.body.lr.ph.i: ; preds = %if.end299.i, %while.body.lr.ph.lr.ph.i @@ -32658,7 +32652,7 @@ while.cond.backedge.i: ; preds = %if.then52.i, %if.th %utf8_output.addr.0.be.i = phi ptr [ %add.ptr99.i, %if.then52.i ], [ %add.ptr34.i, %if.then.i ] %buf.addr.0.be.i = getelementptr inbounds i8, ptr %buf.addr.0319.i, i64 64 %add.ptr9.i = getelementptr inbounds i8, ptr %buf.addr.0319.i, i64 176 - %cmp.not.i = icmp ugt ptr %add.ptr9.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr9.i, %add.ptr.i br i1 %cmp.not.i, label %while.end.i, label %while.body.i, !llvm.loop !472 if.end.i: ; preds = %while.body.i @@ -32917,7 +32911,7 @@ if.end299.i: ; preds = %for.end.i, %if.then %storemerge.i = phi ptr [ %add.ptr223.i, %if.then114.i ], [ %add.ptr298.i, %for.end.i ] %forbidden_bytemask.1.i = phi <4 x i64> [ %or.i563.i, %if.then114.i ], [ %forbidden_bytemask.0.ph336.i, %for.end.i ] %add.ptr9316.i = getelementptr inbounds i8, ptr %storemerge.i, i64 112 - %cmp.not317.i = icmp ugt ptr %add.ptr9316.i, %add.ptr.ptr.i + %cmp.not317.i = icmp ugt ptr %add.ptr9316.i, %add.ptr.i br i1 %cmp.not317.i, label %while.end.i, label %while.body.lr.ph.i, !llvm.loop !472 while.end.i: ; preds = %if.end299.i, %while.cond.backedge.i, %entry @@ -33218,12 +33212,12 @@ _ZNK7simdutf7haswell14implementation23convert_utf32_to_latin1EPKDimPc.exit: ; pr define dso_local { i32, i64 } @_ZNK7simdutf7haswell14implementation33convert_utf32_to_utf8_with_errorsEPKDimPc(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf8_output) unnamed_addr #19 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 2 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not336.i = icmp slt i64 %len, 28 br i1 %cmp.not336.i, label %while.end.i, label %while.body.lr.ph.i while.body.lr.ph.i: ; preds = %entry - %sub.ptr.lhs.cast238.i = ptrtoint ptr %add.ptr.ptr.i to i64 + %sub.ptr.lhs.cast238.i = ptrtoint ptr %add.ptr.i to i64 br label %while.body.i while.body.i: ; preds = %while.cond.backedge.i, %while.body.lr.ph.i @@ -33275,7 +33269,7 @@ while.cond.backedge.i: ; preds = %for.end.i, %if.end1 %utf8_output.addr.0.be.i = phi ptr [ %add.ptr106.i, %if.then59.i ], [ %add.ptr40.i, %if.then35.i ], [ %add.ptr236.i, %if.end138.i ], [ %utf8_output.addr.1.lcssa.i, %for.end.i ] %buf.addr.0.be.i = phi ptr [ %add.ptr7339.i, %if.then59.i ], [ %add.ptr7339.i, %if.then35.i ], [ %add.ptr7339.i, %if.end138.i ], [ %add.ptr325.i, %for.end.i ] %add.ptr8.i = getelementptr inbounds i8, ptr %buf.addr.0.be.i, i64 112 - %cmp.not.i = icmp ugt ptr %add.ptr8.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr8.i, %add.ptr.i br i1 %cmp.not.i, label %while.end.i, label %while.body.i, !llvm.loop !478 if.end41.i: ; preds = %if.end.i @@ -33606,13 +33600,13 @@ return: ; preds = %if.end13, %if.then6 define dso_local noundef i64 @_ZNK7simdutf7haswell14implementation24convert_utf16le_to_utf32EPKDsmPDi(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf32_output) unnamed_addr #19 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not66.i = icmp slt i64 %len, 16 br i1 %cmp.not66.i, label %_ZN7simdutf7haswell12_GLOBAL__N_127avx2_convert_utf16_to_utf32ILNS_10endiannessE0EEESt4pairIPKDsPDiES6_mS7_.exit, label %while.body.lr.ph.i while.body.lr.ph.i: ; preds = %entry %add.ptr265.i = getelementptr inbounds i8, ptr %buf, i64 32 - %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.ptr.i to i64 + %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.i to i64 br label %while.body.i while.body.i: ; preds = %if.end58.i, %while.body.lr.ph.i @@ -33700,7 +33694,7 @@ if.end58.i: ; preds = %for.end.i, %if.then %utf32_output.addr.3.i = phi ptr [ %add.ptr19.i, %if.then.i ], [ %utf32_output.addr.1.lcssa.i, %for.end.i ] %storemerge.i = phi ptr [ %add.ptr269.i, %if.then.i ], [ %add.ptr57.i, %for.end.i ] %add.ptr2.i = getelementptr inbounds i8, ptr %storemerge.i, i64 32 - %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.i br i1 %cmp.not.i, label %_ZN7simdutf7haswell12_GLOBAL__N_127avx2_convert_utf16_to_utf32ILNS_10endiannessE0EEESt4pairIPKDsPDiES6_mS7_.exit, label %while.body.i, !llvm.loop !481 _ZN7simdutf7haswell12_GLOBAL__N_127avx2_convert_utf16_to_utf32ILNS_10endiannessE0EEESt4pairIPKDsPDiES6_mS7_.exit: ; preds = %if.end58.i, %entry @@ -33787,13 +33781,13 @@ return: ; preds = %if.else33.i, %if.el define dso_local noundef i64 @_ZNK7simdutf7haswell14implementation24convert_utf16be_to_utf32EPKDsmPDi(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf32_output) unnamed_addr #19 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not69.i = icmp slt i64 %len, 16 br i1 %cmp.not69.i, label %_ZN7simdutf7haswell12_GLOBAL__N_127avx2_convert_utf16_to_utf32ILNS_10endiannessE1EEESt4pairIPKDsPDiES6_mS7_.exit, label %while.body.lr.ph.i while.body.lr.ph.i: ; preds = %entry %add.ptr268.i = getelementptr inbounds i8, ptr %buf, i64 32 - %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.ptr.i to i64 + %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.i to i64 br label %while.body.i while.body.i: ; preds = %if.end64.i, %while.body.lr.ph.i @@ -33884,7 +33878,7 @@ if.end64.i: ; preds = %for.end.i, %if.then %utf32_output.addr.3.i = phi ptr [ %add.ptr23.i, %if.then.i ], [ %utf32_output.addr.1.lcssa.i, %for.end.i ] %storemerge.i = phi ptr [ %add.ptr272.i, %if.then.i ], [ %add.ptr63.i, %for.end.i ] %add.ptr2.i = getelementptr inbounds i8, ptr %storemerge.i, i64 32 - %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.i br i1 %cmp.not.i, label %_ZN7simdutf7haswell12_GLOBAL__N_127avx2_convert_utf16_to_utf32ILNS_10endiannessE1EEESt4pairIPKDsPDiES6_mS7_.exit, label %while.body.i, !llvm.loop !483 _ZN7simdutf7haswell12_GLOBAL__N_127avx2_convert_utf16_to_utf32ILNS_10endiannessE1EEESt4pairIPKDsPDiES6_mS7_.exit: ; preds = %if.end64.i, %entry @@ -33973,13 +33967,13 @@ return: ; preds = %if.else38.i, %if.el define dso_local { i32, i64 } @_ZNK7simdutf7haswell14implementation36convert_utf16le_to_utf32_with_errorsEPKDsmPDi(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf32_output) unnamed_addr #19 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not76.i = icmp slt i64 %len, 16 br i1 %cmp.not76.i, label %if.end, label %while.body.lr.ph.i while.body.lr.ph.i: ; preds = %entry %add.ptr275.i = getelementptr inbounds i8, ptr %buf, i64 32 - %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.ptr.i to i64 + %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.i to i64 br label %while.body.i while.body.i: ; preds = %if.end63.i, %while.body.lr.ph.i @@ -34067,7 +34061,7 @@ if.end63.i: ; preds = %for.end.i, %if.then %utf32_output.addr.3.i = phi ptr [ %add.ptr19.i, %if.then.i ], [ %utf32_output.addr.1.lcssa.i, %for.end.i ] %buf.addr.1.i = phi ptr [ %add.ptr279.i, %if.then.i ], [ %add.ptr62.i, %for.end.i ] %add.ptr2.i = getelementptr inbounds i8, ptr %buf.addr.1.i, i64 32 - %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.i br i1 %cmp.not.i, label %if.end, label %while.body.i, !llvm.loop !488 if.then: ; preds = %if.else33.i @@ -34168,13 +34162,13 @@ return: ; preds = %if.end19, %if.then1 define dso_local { i32, i64 } @_ZNK7simdutf7haswell14implementation36convert_utf16be_to_utf32_with_errorsEPKDsmPDi(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf32_output) unnamed_addr #19 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not78.i = icmp slt i64 %len, 16 br i1 %cmp.not78.i, label %if.end, label %while.body.lr.ph.i while.body.lr.ph.i: ; preds = %entry %add.ptr277.i = getelementptr inbounds i8, ptr %buf, i64 32 - %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.ptr.i to i64 + %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.i to i64 br label %while.body.i while.body.i: ; preds = %if.end69.i, %while.body.lr.ph.i @@ -34265,7 +34259,7 @@ if.end69.i: ; preds = %for.end.i, %if.then %utf32_output.addr.3.i = phi ptr [ %add.ptr23.i, %if.then.i ], [ %utf32_output.addr.1.lcssa.i, %for.end.i ] %buf.addr.1.i = phi ptr [ %add.ptr281.i, %if.then.i ], [ %add.ptr68.i, %for.end.i ] %add.ptr2.i = getelementptr inbounds i8, ptr %buf.addr.1.i, i64 32 - %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.i br i1 %cmp.not.i, label %if.end, label %while.body.i, !llvm.loop !493 if.then: ; preds = %if.else38.i @@ -34375,12 +34369,12 @@ entry: define dso_local noundef i64 @_ZNK7simdutf7haswell14implementation24convert_utf32_to_utf16leEPKDimPDs(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf16_output) unnamed_addr #19 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 2 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not67.i = icmp slt i64 %len, 20 br i1 %cmp.not67.i, label %_ZN7simdutf7haswell12_GLOBAL__N_127avx2_convert_utf32_to_utf16ILNS_10endiannessE0EEESt4pairIPKDiPDsES6_mS7_.exit, label %while.body.lr.ph.i while.body.lr.ph.i: ; preds = %entry - %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.ptr.i to i64 + %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.i to i64 br label %while.body.i while.body.i: ; preds = %if.end60.i, %while.body.lr.ph.i @@ -34475,7 +34469,7 @@ if.end60.i: ; preds = %for.end.i, %if.then %storemerge.i = phi ptr [ %add.ptr29.i, %if.then.i ], [ %add.ptr59.i, %for.end.i ] %forbidden_bytemask.1.i = phi <4 x i64> [ %or.i.i, %if.then.i ], [ %forbidden_bytemask.070.i, %for.end.i ] %add.ptr2.i = getelementptr inbounds i8, ptr %storemerge.i, i64 80 - %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.i br i1 %cmp.not.i, label %while.end.loopexit.i, label %while.body.i, !llvm.loop !495 while.end.loopexit.i: ; preds = %if.end60.i @@ -34573,12 +34567,12 @@ return: ; preds = %if.else44.i, %if.th define dso_local noundef i64 @_ZNK7simdutf7haswell14implementation24convert_utf32_to_utf16beEPKDimPDs(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf16_output) unnamed_addr #19 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 2 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not73.i = icmp slt i64 %len, 20 br i1 %cmp.not73.i, label %_ZN7simdutf7haswell12_GLOBAL__N_127avx2_convert_utf32_to_utf16ILNS_10endiannessE1EEESt4pairIPKDiPDsES6_mS7_.exit, label %while.body.lr.ph.i while.body.lr.ph.i: ; preds = %entry - %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.ptr.i to i64 + %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.i to i64 br label %while.body.i while.body.i: ; preds = %if.end79.i, %while.body.lr.ph.i @@ -34685,7 +34679,7 @@ if.end79.i: ; preds = %for.end.i, %if.then %storemerge.i = phi ptr [ %add.ptr31.i, %if.then.i ], [ %add.ptr78.i, %for.end.i ] %forbidden_bytemask.1.i = phi <4 x i64> [ %or.i.i, %if.then.i ], [ %forbidden_bytemask.076.i, %for.end.i ] %add.ptr2.i = getelementptr inbounds i8, ptr %storemerge.i, i64 80 - %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.i br i1 %cmp.not.i, label %while.end.loopexit.i, label %while.body.i, !llvm.loop !497 while.end.loopexit.i: ; preds = %if.end79.i @@ -34786,12 +34780,12 @@ return: ; preds = %if.else50.i, %if.th define dso_local { i32, i64 } @_ZNK7simdutf7haswell14implementation36convert_utf32_to_utf16le_with_errorsEPKDimPDs(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf16_output) unnamed_addr #19 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 2 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not87.i = icmp slt i64 %len, 20 br i1 %cmp.not87.i, label %while.end.i, label %while.body.lr.ph.i while.body.lr.ph.i: ; preds = %entry - %sub.ptr.lhs.cast30.i = ptrtoint ptr %add.ptr.ptr.i to i64 + %sub.ptr.lhs.cast30.i = ptrtoint ptr %add.ptr.i to i64 br label %while.body.i while.body.i: ; preds = %if.end74.i, %while.body.lr.ph.i @@ -34910,7 +34904,7 @@ if.end74.i: ; preds = %for.end.i, %if.end. %utf16_output.addr.3.i = phi ptr [ %add.ptr28.i, %if.end.i ], [ %utf16_output.addr.1.lcssa.i, %for.end.i ] %buf.addr.1.i = phi ptr [ %add.ptr190.i, %if.end.i ], [ %add.ptr73.i, %for.end.i ] %add.ptr2.i = getelementptr inbounds i8, ptr %buf.addr.1.i, i64 80 - %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.i br i1 %cmp.not.i, label %while.end.i, label %while.body.i, !llvm.loop !502 while.end.i: ; preds = %if.end74.i, %entry @@ -35010,12 +35004,12 @@ return: ; preds = %if.end13, %if.then6 define dso_local { i32, i64 } @_ZNK7simdutf7haswell14implementation36convert_utf32_to_utf16be_with_errorsEPKDimPDs(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf16_output) unnamed_addr #19 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 2 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not93.i = icmp slt i64 %len, 20 br i1 %cmp.not93.i, label %while.end.i, label %while.body.lr.ph.i while.body.lr.ph.i: ; preds = %entry - %sub.ptr.lhs.cast32.i = ptrtoint ptr %add.ptr.ptr.i to i64 + %sub.ptr.lhs.cast32.i = ptrtoint ptr %add.ptr.i to i64 br label %while.body.i while.body.i: ; preds = %if.end93.i, %while.body.lr.ph.i @@ -35146,7 +35140,7 @@ if.end93.i: ; preds = %for.end.i, %if.end. %utf16_output.addr.3.i = phi ptr [ %add.ptr30.i, %if.end.i ], [ %utf16_output.addr.1.lcssa.i, %for.end.i ] %buf.addr.1.i = phi ptr [ %add.ptr196.i, %if.end.i ], [ %add.ptr92.i, %for.end.i ] %add.ptr2.i = getelementptr inbounds i8, ptr %buf.addr.1.i, i64 80 - %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.i br i1 %cmp.not.i, label %while.end.i, label %while.body.i, !llvm.loop !507 while.end.i: ; preds = %if.end93.i, %entry @@ -35249,12 +35243,12 @@ return: ; preds = %if.end13, %if.then6 define dso_local noundef i64 @_ZNK7simdutf7haswell14implementation30convert_valid_utf32_to_utf16leEPKDimPDs(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf16_output) unnamed_addr #19 align 2 { entry: %add.ptr.idx.i.i = shl nsw i64 %len, 2 - %add.ptr.ptr.i.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i.i + %add.ptr.i.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i.i %cmp.not67.i.i = icmp slt i64 %len, 20 br i1 %cmp.not67.i.i, label %_ZN7simdutf7haswell12_GLOBAL__N_127avx2_convert_utf32_to_utf16ILNS_10endiannessE0EEESt4pairIPKDiPDsES6_mS7_.exit.i, label %while.body.lr.ph.i.i while.body.lr.ph.i.i: ; preds = %entry - %sub.ptr.lhs.cast.i.i = ptrtoint ptr %add.ptr.ptr.i.i to i64 + %sub.ptr.lhs.cast.i.i = ptrtoint ptr %add.ptr.i.i to i64 br label %while.body.i.i while.body.i.i: ; preds = %if.end60.i.i, %while.body.lr.ph.i.i @@ -35349,7 +35343,7 @@ if.end60.i.i: ; preds = %for.end.i.i, %if.th %storemerge.i.i = phi ptr [ %add.ptr29.i.i, %if.then.i.i ], [ %add.ptr59.i.i, %for.end.i.i ] %forbidden_bytemask.1.i.i = phi <4 x i64> [ %or.i.i.i, %if.then.i.i ], [ %forbidden_bytemask.070.i.i, %for.end.i.i ] %add.ptr2.i.i = getelementptr inbounds i8, ptr %storemerge.i.i, i64 80 - %cmp.not.i.i = icmp ugt ptr %add.ptr2.i.i, %add.ptr.ptr.i.i + %cmp.not.i.i = icmp ugt ptr %add.ptr2.i.i, %add.ptr.i.i br i1 %cmp.not.i.i, label %while.end.loopexit.i.i, label %while.body.i.i, !llvm.loop !495 while.end.loopexit.i.i: ; preds = %if.end60.i.i @@ -35447,12 +35441,12 @@ _ZNK7simdutf7haswell14implementation24convert_utf32_to_utf16leEPKDimPDs.exit: ; define dso_local noundef i64 @_ZNK7simdutf7haswell14implementation30convert_valid_utf32_to_utf16beEPKDimPDs(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf16_output) unnamed_addr #19 align 2 { entry: %add.ptr.idx.i.i = shl nsw i64 %len, 2 - %add.ptr.ptr.i.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i.i + %add.ptr.i.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i.i %cmp.not73.i.i = icmp slt i64 %len, 20 br i1 %cmp.not73.i.i, label %_ZN7simdutf7haswell12_GLOBAL__N_127avx2_convert_utf32_to_utf16ILNS_10endiannessE1EEESt4pairIPKDiPDsES6_mS7_.exit.i, label %while.body.lr.ph.i.i while.body.lr.ph.i.i: ; preds = %entry - %sub.ptr.lhs.cast.i.i = ptrtoint ptr %add.ptr.ptr.i.i to i64 + %sub.ptr.lhs.cast.i.i = ptrtoint ptr %add.ptr.i.i to i64 br label %while.body.i.i while.body.i.i: ; preds = %if.end79.i.i, %while.body.lr.ph.i.i @@ -35559,7 +35553,7 @@ if.end79.i.i: ; preds = %for.end.i.i, %if.th %storemerge.i.i = phi ptr [ %add.ptr31.i.i, %if.then.i.i ], [ %add.ptr78.i.i, %for.end.i.i ] %forbidden_bytemask.1.i.i = phi <4 x i64> [ %or.i.i.i, %if.then.i.i ], [ %forbidden_bytemask.076.i.i, %for.end.i.i ] %add.ptr2.i.i = getelementptr inbounds i8, ptr %storemerge.i.i, i64 80 - %cmp.not.i.i = icmp ugt ptr %add.ptr2.i.i, %add.ptr.ptr.i.i + %cmp.not.i.i = icmp ugt ptr %add.ptr2.i.i, %add.ptr.i.i br i1 %cmp.not.i.i, label %while.end.loopexit.i.i, label %while.body.i.i, !llvm.loop !497 while.end.loopexit.i.i: ; preds = %if.end79.i.i @@ -35660,13 +35654,13 @@ _ZNK7simdutf7haswell14implementation24convert_utf32_to_utf16beEPKDimPDs.exit: ; define dso_local noundef i64 @_ZNK7simdutf7haswell14implementation30convert_valid_utf16le_to_utf32EPKDsmPDi(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf32_output) unnamed_addr #19 align 2 { entry: %add.ptr.idx.i.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i.i + %add.ptr.i.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i.i %cmp.not66.i.i = icmp slt i64 %len, 16 br i1 %cmp.not66.i.i, label %_ZN7simdutf7haswell12_GLOBAL__N_127avx2_convert_utf16_to_utf32ILNS_10endiannessE0EEESt4pairIPKDsPDiES6_mS7_.exit.i, label %while.body.lr.ph.i.i while.body.lr.ph.i.i: ; preds = %entry %add.ptr265.i.i = getelementptr inbounds i8, ptr %buf, i64 32 - %sub.ptr.lhs.cast.i.i = ptrtoint ptr %add.ptr.ptr.i.i to i64 + %sub.ptr.lhs.cast.i.i = ptrtoint ptr %add.ptr.i.i to i64 br label %while.body.i.i while.body.i.i: ; preds = %if.end58.i.i, %while.body.lr.ph.i.i @@ -35754,7 +35748,7 @@ if.end58.i.i: ; preds = %for.end.i.i, %if.th %utf32_output.addr.3.i.i = phi ptr [ %add.ptr19.i.i, %if.then.i.i ], [ %utf32_output.addr.1.lcssa.i.i, %for.end.i.i ] %storemerge.i.i = phi ptr [ %add.ptr269.i.i, %if.then.i.i ], [ %add.ptr57.i.i, %for.end.i.i ] %add.ptr2.i.i = getelementptr inbounds i8, ptr %storemerge.i.i, i64 32 - %cmp.not.i.i = icmp ugt ptr %add.ptr2.i.i, %add.ptr.ptr.i.i + %cmp.not.i.i = icmp ugt ptr %add.ptr2.i.i, %add.ptr.i.i br i1 %cmp.not.i.i, label %_ZN7simdutf7haswell12_GLOBAL__N_127avx2_convert_utf16_to_utf32ILNS_10endiannessE0EEESt4pairIPKDsPDiES6_mS7_.exit.i, label %while.body.i.i, !llvm.loop !481 _ZN7simdutf7haswell12_GLOBAL__N_127avx2_convert_utf16_to_utf32ILNS_10endiannessE0EEESt4pairIPKDsPDiES6_mS7_.exit.i: ; preds = %if.end58.i.i, %entry @@ -35841,13 +35835,13 @@ _ZNK7simdutf7haswell14implementation24convert_utf16le_to_utf32EPKDsmPDi.exit: ; define dso_local noundef i64 @_ZNK7simdutf7haswell14implementation30convert_valid_utf16be_to_utf32EPKDsmPDi(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf32_output) unnamed_addr #19 align 2 { entry: %add.ptr.idx.i.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i.i + %add.ptr.i.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i.i %cmp.not69.i.i = icmp slt i64 %len, 16 br i1 %cmp.not69.i.i, label %_ZN7simdutf7haswell12_GLOBAL__N_127avx2_convert_utf16_to_utf32ILNS_10endiannessE1EEESt4pairIPKDsPDiES6_mS7_.exit.i, label %while.body.lr.ph.i.i while.body.lr.ph.i.i: ; preds = %entry %add.ptr268.i.i = getelementptr inbounds i8, ptr %buf, i64 32 - %sub.ptr.lhs.cast.i.i = ptrtoint ptr %add.ptr.ptr.i.i to i64 + %sub.ptr.lhs.cast.i.i = ptrtoint ptr %add.ptr.i.i to i64 br label %while.body.i.i while.body.i.i: ; preds = %if.end64.i.i, %while.body.lr.ph.i.i @@ -35938,7 +35932,7 @@ if.end64.i.i: ; preds = %for.end.i.i, %if.th %utf32_output.addr.3.i.i = phi ptr [ %add.ptr23.i.i, %if.then.i.i ], [ %utf32_output.addr.1.lcssa.i.i, %for.end.i.i ] %storemerge.i.i = phi ptr [ %add.ptr272.i.i, %if.then.i.i ], [ %add.ptr63.i.i, %for.end.i.i ] %add.ptr2.i.i = getelementptr inbounds i8, ptr %storemerge.i.i, i64 32 - %cmp.not.i.i = icmp ugt ptr %add.ptr2.i.i, %add.ptr.ptr.i.i + %cmp.not.i.i = icmp ugt ptr %add.ptr2.i.i, %add.ptr.i.i br i1 %cmp.not.i.i, label %_ZN7simdutf7haswell12_GLOBAL__N_127avx2_convert_utf16_to_utf32ILNS_10endiannessE1EEESt4pairIPKDsPDiES6_mS7_.exit.i, label %while.body.i.i, !llvm.loop !483 _ZN7simdutf7haswell12_GLOBAL__N_127avx2_convert_utf16_to_utf32ILNS_10endiannessE1EEESt4pairIPKDsPDiES6_mS7_.exit.i: ; preds = %if.end64.i.i, %entry @@ -37196,8 +37190,6 @@ if.then.i: ; preds = %while.body.i if.then105.i: ; preds = %if.then.i %add.ptr14.i.le = getelementptr inbounds i8, ptr %buf.addr.01215.i, i64 32 - %div1132.i = lshr exact i64 %length, 1 - %add.ptr106.i = getelementptr inbounds i16, ptr %input, i64 %div1132.i %not.i = xor i16 %27, -1 %30 = and <16 x i8> %23, %cmp.i11508.i = icmp eq <16 x i8> %30, @@ -37221,7 +37213,7 @@ if.then168.i: ; preds = %if.then105.i if.end171.i: ; preds = %if.then168.i, %if.then105.i %input.0.i = phi ptr [ %add.ptr169.i, %if.then168.i ], [ %add.ptr14.i.le, %if.then105.i ] %add.ptr1731222.i = getelementptr inbounds i8, ptr %input.0.i, i64 64 - %cmp1741223.i = icmp ult ptr %add.ptr1731222.i, %add.ptr106.i + %cmp1741223.i = icmp ult ptr %add.ptr1731222.i, %add.ptr.i br i1 %cmp1741223.i, label %while.body175.i, label %if.end365.land.lhs.true_crit_edge.i while.body175.i: ; preds = %if.end171.i, %if.end283.i @@ -37262,7 +37254,7 @@ if.end283.i: ; preds = %if.then278.i, %if.e %.sink.i = phi i64 [ 30, %if.then278.i ], [ 32, %while.body175.i ], [ 32, %if.else222.i ] %add.ptr274.i = getelementptr inbounds i8, ptr %input.11224.i, i64 %.sink.i %add.ptr173.i = getelementptr inbounds i8, ptr %add.ptr274.i, i64 64 - %cmp174.i = icmp ult ptr %add.ptr173.i, %add.ptr106.i + %cmp174.i = icmp ult ptr %add.ptr173.i, %add.ptr.i br i1 %cmp174.i, label %while.body175.i, label %if.end365.land.lhs.true_crit_edge.i, !llvm.loop !586 if.else284.i: ; preds = %if.then.i @@ -37271,8 +37263,6 @@ if.else284.i: ; preds = %if.then.i br i1 %cmp285.i, label %if.then286.i, label %_ZN7simdutf8westmere12_GLOBAL__N_120sse_detect_encodingsINS1_15utf8_validation12utf8_checkerEEEiPKcm.exit if.then286.i: ; preds = %if.else284.i - %div2881131.i = lshr exact i64 %length, 2 - %add.ptr289.i = getelementptr inbounds i32, ptr %input, i64 %div2881131.i %47 = bitcast <2 x i64> %11 to <4 x i32> %elt.max.i11326.i = tail call <4 x i32> @llvm.umax.v4i32(<4 x i32> %47, <4 x i32> %10) %48 = bitcast <2 x i64> %12 to <4 x i32> @@ -37288,7 +37278,7 @@ if.then286.i: ; preds = %if.else284.i %elt.max.i11308.i = tail call <4 x i32> @llvm.umax.v4i32(<4 x i32> %add.i11334.i, <4 x i32> %elt.max.i11311.i) %add.i11331.i = add <4 x i32> %50, %elt.max.i11305.i = tail call <4 x i32> @llvm.umax.v4i32(<4 x i32> %add.i11331.i, <4 x i32> %elt.max.i11308.i) - %cmp3071228.i = icmp ult ptr %add.ptr12.i.le, %add.ptr289.i + %cmp3071228.i = icmp ult ptr %add.ptr12.i.le, %add.ptr.i br i1 %cmp3071228.i, label %while.body308.i, label %while.end314.i while.body308.i: ; preds = %if.then286.i, %while.body308.i @@ -37301,7 +37291,7 @@ while.body308.i: ; preds = %if.then286.i, %whil %add.i.i = add <4 x i32> %51, %elt.max.i11299.i = tail call <4 x i32> @llvm.umax.v4i32(<4 x i32> %add.i.i, <4 x i32> %currentoffsetmax.0.in1230.i) %add.ptr306.i = getelementptr inbounds i8, ptr %add.ptr3061232.i, i64 16 - %cmp307.i = icmp ult ptr %add.ptr306.i, %add.ptr289.i + %cmp307.i = icmp ult ptr %add.ptr306.i, %add.ptr.i br i1 %cmp307.i, label %while.body308.i, label %while.end314.i, !llvm.loop !587 while.end314.i: ; preds = %while.body308.i, %if.then286.i @@ -38712,7 +38702,7 @@ _ZN7simdutf8westmere12_GLOBAL__N_115utf8_validation34generic_validate_ascii_with define dso_local noundef zeroext i1 @_ZNK7simdutf8westmere14implementation16validate_utf16leEPKDsm(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len) unnamed_addr #33 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp78.i = icmp sgt i64 %len, 32 br i1 %cmp78.i, label %while.body.i, label %_ZN7simdutf8westmere12_GLOBAL__N_118sse_validate_utf16ILNS_10endiannessE0EEEPKDsS5_m.exit @@ -38754,7 +38744,7 @@ if.end117.i: ; preds = %if.then113.i, %if.e %.sink.i = phi i64 [ 30, %if.then113.i ], [ 32, %while.body.i ], [ 32, %if.else.i ] %add.ptr109.i = getelementptr inbounds i8, ptr %input.addr.079.i, i64 %.sink.i %add.ptr19.i = getelementptr inbounds i8, ptr %add.ptr109.i, i64 64 - %cmp.i = icmp ult ptr %add.ptr19.i, %add.ptr.ptr.i + %cmp.i = icmp ult ptr %add.ptr19.i, %add.ptr.i br i1 %cmp.i, label %while.body.i, label %if.then, !llvm.loop !593 _ZN7simdutf8westmere12_GLOBAL__N_118sse_validate_utf16ILNS_10endiannessE0EEEPKDsS5_m.exit: ; preds = %entry @@ -38812,7 +38802,7 @@ return: ; preds = %if.else.i, %if.end3 define dso_local noundef zeroext i1 @_ZNK7simdutf8westmere14implementation16validate_utf16beEPKDsm(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len) unnamed_addr #33 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp80.i = icmp sgt i64 %len, 32 br i1 %cmp80.i, label %while.body.i, label %_ZN7simdutf8westmere12_GLOBAL__N_118sse_validate_utf16ILNS_10endiannessE1EEEPKDsS5_m.exit @@ -38858,7 +38848,7 @@ if.end128.i: ; preds = %if.then124.i, %if.e %.sink.i = phi i64 [ 30, %if.then124.i ], [ 32, %while.body.i ], [ 32, %if.else.i ] %add.ptr120.i = getelementptr inbounds i8, ptr %input.addr.081.i, i64 %.sink.i %add.ptr19.i = getelementptr inbounds i8, ptr %add.ptr120.i, i64 64 - %cmp.i = icmp ult ptr %add.ptr19.i, %add.ptr.ptr.i + %cmp.i = icmp ult ptr %add.ptr19.i, %add.ptr.i br i1 %cmp.i, label %while.body.i, label %if.then, !llvm.loop !594 _ZN7simdutf8westmere12_GLOBAL__N_118sse_validate_utf16ILNS_10endiannessE1EEEPKDsS5_m.exit: ; preds = %entry @@ -38917,7 +38907,7 @@ return: ; preds = %if.else.i, %if.end3 define dso_local { i32, i64 } @_ZNK7simdutf8westmere14implementation28validate_utf16le_with_errorsEPKDsm(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len) unnamed_addr #33 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp82.i = icmp sgt i64 %len, 32 br i1 %cmp82.i, label %while.body.i, label %_ZN7simdutf8westmere12_GLOBAL__N_130sse_validate_utf16_with_errorsILNS_10endiannessE0EEEKNS_6resultEPKDsm.exit @@ -38959,7 +38949,7 @@ if.end117.i: ; preds = %if.then113.i, %if.e %.sink.i = phi i64 [ 30, %if.then113.i ], [ 32, %while.body.i ], [ 32, %if.else.i ] %add.ptr109.i = getelementptr inbounds i8, ptr %input.addr.083.i, i64 %.sink.i %add.ptr19.i = getelementptr inbounds i8, ptr %add.ptr109.i, i64 64 - %cmp.i = icmp ult ptr %add.ptr19.i, %add.ptr.ptr.i + %cmp.i = icmp ult ptr %add.ptr19.i, %add.ptr.i br i1 %cmp.i, label %while.body.i, label %_ZN7simdutf8westmere12_GLOBAL__N_130sse_validate_utf16_with_errorsILNS_10endiannessE0EEEKNS_6resultEPKDsm.exit, !llvm.loop !595 _ZN7simdutf8westmere12_GLOBAL__N_130sse_validate_utf16_with_errorsILNS_10endiannessE0EEEKNS_6resultEPKDsm.exit: ; preds = %if.else.i, %if.end117.i, %entry @@ -39027,7 +39017,7 @@ return: ; preds = %_ZN7simdutf8westmer define dso_local { i32, i64 } @_ZNK7simdutf8westmere14implementation28validate_utf16be_with_errorsEPKDsm(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len) unnamed_addr #33 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp84.i = icmp sgt i64 %len, 32 br i1 %cmp84.i, label %while.body.i, label %_ZN7simdutf8westmere12_GLOBAL__N_130sse_validate_utf16_with_errorsILNS_10endiannessE1EEEKNS_6resultEPKDsm.exit @@ -39073,7 +39063,7 @@ if.end128.i: ; preds = %if.then124.i, %if.e %.sink.i = phi i64 [ 30, %if.then124.i ], [ 32, %while.body.i ], [ 32, %if.else.i ] %add.ptr120.i = getelementptr inbounds i8, ptr %input.addr.085.i, i64 %.sink.i %add.ptr19.i = getelementptr inbounds i8, ptr %add.ptr120.i, i64 64 - %cmp.i = icmp ult ptr %add.ptr19.i, %add.ptr.ptr.i + %cmp.i = icmp ult ptr %add.ptr19.i, %add.ptr.i br i1 %cmp.i, label %while.body.i, label %_ZN7simdutf8westmere12_GLOBAL__N_130sse_validate_utf16_with_errorsILNS_10endiannessE1EEEKNS_6resultEPKDsm.exit, !llvm.loop !596 _ZN7simdutf8westmere12_GLOBAL__N_130sse_validate_utf16_with_errorsILNS_10endiannessE1EEEKNS_6resultEPKDsm.exit: ; preds = %if.else.i, %if.end128.i, %entry @@ -39142,7 +39132,7 @@ return: ; preds = %_ZN7simdutf8westmer define dso_local noundef zeroext i1 @_ZNK7simdutf8westmere14implementation14validate_utf32EPKDim(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len) unnamed_addr #33 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 2 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp24.i = icmp sgt i64 %len, 4 br i1 %cmp24.i, label %while.body.preheader.i, label %while.end.i @@ -39160,7 +39150,7 @@ while.body.i: ; preds = %while.body.i, %whil %add.i.i = add <4 x i32> %2, %elt.max.i36.i = tail call <4 x i32> @llvm.umax.v4i32(<4 x i32> %add.i.i, <4 x i32> %0) %add.ptr5.i = getelementptr inbounds i8, ptr %add.ptr526.i, i64 16 - %cmp.i = icmp ult ptr %add.ptr5.i, %add.ptr.ptr.i + %cmp.i = icmp ult ptr %add.ptr5.i, %add.ptr.i br i1 %cmp.i, label %while.body.i, label %while.end.i, !llvm.loop !597 while.end.i: ; preds = %while.body.i, %entry @@ -44804,7 +44794,7 @@ _ZN7simdutf8westmere12_GLOBAL__N_113utf8_to_utf3213convert_validEPKcmPDi.exit: ; define dso_local noundef i64 @_ZNK7simdutf8westmere14implementation25convert_utf16le_to_latin1EPKDsmPc(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %latin1_output) unnamed_addr #35 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not17.i = icmp slt i64 %len, 8 br i1 %cmp.not17.i, label %_ZN7simdutf8westmere12_GLOBAL__N_127sse_convert_utf16_to_latin1ILNS_10endiannessE0EEESt4pairIPKDsPcES6_mS7_.exit, label %while.body.preheader.i @@ -44829,7 +44819,7 @@ if.then7.i: ; preds = %while.body.i store i64 %vecext.i.i, ptr %latin1_output.addr.018.i, align 1 %add.ptr10.i = getelementptr inbounds i8, ptr %latin1_output.addr.018.i, i64 8 %add.ptr1.i = getelementptr inbounds i8, ptr %add.ptr120.i, i64 16 - %cmp.not.i = icmp ugt ptr %add.ptr1.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr1.i, %add.ptr.i br i1 %cmp.not.i, label %if.end, label %while.body.i, !llvm.loop !638 _ZN7simdutf8westmere12_GLOBAL__N_127sse_convert_utf16_to_latin1ILNS_10endiannessE0EEESt4pairIPKDsPcES6_mS7_.exit: ; preds = %entry @@ -44867,7 +44857,7 @@ return: ; preds = %while.body.i, %if.t define dso_local noundef i64 @_ZNK7simdutf8westmere14implementation25convert_utf16be_to_latin1EPKDsmPc(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %latin1_output) unnamed_addr #35 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not17.i = icmp slt i64 %len, 8 br i1 %cmp.not17.i, label %_ZN7simdutf8westmere12_GLOBAL__N_127sse_convert_utf16_to_latin1ILNS_10endiannessE1EEESt4pairIPKDsPcES6_mS7_.exit, label %while.body.preheader.i @@ -44894,7 +44884,7 @@ if.then7.i: ; preds = %while.body.i store i64 %vecext.i.i, ptr %latin1_output.addr.018.i, align 1 %add.ptr10.i = getelementptr inbounds i8, ptr %latin1_output.addr.018.i, i64 8 %add.ptr1.i = getelementptr inbounds i8, ptr %add.ptr120.i, i64 16 - %cmp.not.i = icmp ugt ptr %add.ptr1.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr1.i, %add.ptr.i br i1 %cmp.not.i, label %if.end, label %while.body.i, !llvm.loop !639 _ZN7simdutf8westmere12_GLOBAL__N_127sse_convert_utf16_to_latin1ILNS_10endiannessE1EEESt4pairIPKDsPcES6_mS7_.exit: ; preds = %entry @@ -44932,7 +44922,7 @@ return: ; preds = %while.body.i, %if.t define dso_local { i32, i64 } @_ZNK7simdutf8westmere14implementation37convert_utf16le_to_latin1_with_errorsEPKDsmPc(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %latin1_output) unnamed_addr #30 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not40.i = icmp slt i64 %len, 8 br i1 %cmp.not40.i, label %if.end, label %while.body.preheader.i @@ -44979,7 +44969,7 @@ if.then18.i: ; preds = %cond.end.i if.end23.i: ; preds = %if.then18.i, %if.then.i %latin1_output.addr.2.i = phi ptr [ %add.ptr8.i, %if.then.i ], [ %incdec.ptr.i, %if.then18.i ] %add.ptr1.i = getelementptr inbounds i8, ptr %add.ptr143.i, i64 16 - %cmp.not.i = icmp ugt ptr %add.ptr1.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr1.i, %add.ptr.i br i1 %cmp.not.i, label %if.end, label %while.body.i, !llvm.loop !644 if.then: ; preds = %cond.end.i @@ -45098,7 +45088,7 @@ return: ; preds = %if.end19, %if.then1 define dso_local { i32, i64 } @_ZNK7simdutf8westmere14implementation37convert_utf16be_to_latin1_with_errorsEPKDsmPc(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %latin1_output) unnamed_addr #30 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not39.i = icmp slt i64 %len, 8 br i1 %cmp.not39.i, label %if.end, label %while.body.preheader.i @@ -45144,7 +45134,7 @@ if.then16.i: ; preds = %cond.end.i if.end21.i: ; preds = %if.then16.i, %if.then.i %latin1_output.addr.2.i = phi ptr [ %add.ptr6.i, %if.then.i ], [ %incdec.ptr.i, %if.then16.i ] %add.ptr1.i = getelementptr inbounds i8, ptr %add.ptr142.i, i64 16 - %cmp.not.i = icmp ugt ptr %add.ptr1.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr1.i, %add.ptr.i br i1 %cmp.not.i, label %if.end, label %while.body.i, !llvm.loop !649 if.then: ; preds = %cond.end.i @@ -45269,7 +45259,7 @@ return: ; preds = %if.end19, %if.then1 define dso_local noundef i64 @_ZNK7simdutf8westmere14implementation31convert_valid_utf16be_to_latin1EPKDsmPc(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %latin1_output) unnamed_addr #35 align 2 { entry: %add.ptr.idx.i.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i.i + %add.ptr.i.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i.i %cmp.not17.i.i = icmp slt i64 %len, 8 br i1 %cmp.not17.i.i, label %_ZN7simdutf8westmere12_GLOBAL__N_127sse_convert_utf16_to_latin1ILNS_10endiannessE1EEESt4pairIPKDsPcES6_mS7_.exit.i, label %while.body.preheader.i.i @@ -45296,7 +45286,7 @@ if.then7.i.i: ; preds = %while.body.i.i store i64 %vecext.i.i.i, ptr %latin1_output.addr.018.i.i, align 1 %add.ptr10.i.i = getelementptr inbounds i8, ptr %latin1_output.addr.018.i.i, i64 8 %add.ptr1.i.i = getelementptr inbounds i8, ptr %add.ptr120.i.i, i64 16 - %cmp.not.i.i = icmp ugt ptr %add.ptr1.i.i, %add.ptr.ptr.i.i + %cmp.not.i.i = icmp ugt ptr %add.ptr1.i.i, %add.ptr.i.i br i1 %cmp.not.i.i, label %if.end.i, label %while.body.i.i, !llvm.loop !639 _ZN7simdutf8westmere12_GLOBAL__N_127sse_convert_utf16_to_latin1ILNS_10endiannessE1EEESt4pairIPKDsPcES6_mS7_.exit.i: ; preds = %entry @@ -45334,7 +45324,7 @@ _ZNK7simdutf8westmere14implementation25convert_utf16be_to_latin1EPKDsmPc.exit: ; define dso_local noundef i64 @_ZNK7simdutf8westmere14implementation31convert_valid_utf16le_to_latin1EPKDsmPc(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %latin1_output) unnamed_addr #35 align 2 { entry: %add.ptr.idx.i.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i.i + %add.ptr.i.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i.i %cmp.not17.i.i = icmp slt i64 %len, 8 br i1 %cmp.not17.i.i, label %_ZN7simdutf8westmere12_GLOBAL__N_127sse_convert_utf16_to_latin1ILNS_10endiannessE0EEESt4pairIPKDsPcES6_mS7_.exit.i, label %while.body.preheader.i.i @@ -45359,7 +45349,7 @@ if.then7.i.i: ; preds = %while.body.i.i store i64 %vecext.i.i.i, ptr %latin1_output.addr.018.i.i, align 1 %add.ptr10.i.i = getelementptr inbounds i8, ptr %latin1_output.addr.018.i.i, i64 8 %add.ptr1.i.i = getelementptr inbounds i8, ptr %add.ptr120.i.i, i64 16 - %cmp.not.i.i = icmp ugt ptr %add.ptr1.i.i, %add.ptr.ptr.i.i + %cmp.not.i.i = icmp ugt ptr %add.ptr1.i.i, %add.ptr.i.i br i1 %cmp.not.i.i, label %if.end.i, label %while.body.i.i, !llvm.loop !638 _ZN7simdutf8westmere12_GLOBAL__N_127sse_convert_utf16_to_latin1ILNS_10endiannessE0EEESt4pairIPKDsPcES6_mS7_.exit.i: ; preds = %entry @@ -45397,12 +45387,12 @@ _ZNK7simdutf8westmere14implementation25convert_utf16le_to_latin1EPKDsmPc.exit: ; define dso_local noundef i64 @_ZNK7simdutf8westmere14implementation23convert_utf16le_to_utf8EPKDsmPc(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf8_output) unnamed_addr #30 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not151.i = icmp slt i64 %len, 28 br i1 %cmp.not151.i, label %_ZN7simdutf8westmere12_GLOBAL__N_125sse_convert_utf16_to_utf8ILNS_10endiannessE0EEESt4pairIPKDsPcES6_mS7_.exit, label %while.body.lr.ph.i while.body.lr.ph.i: ; preds = %entry - %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.ptr.i to i64 + %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.i to i64 br label %while.body.i while.body.i: ; preds = %while.cond.backedge.i, %while.body.lr.ph.i @@ -45439,7 +45429,7 @@ while.cond.backedge.i: ; preds = %for.end.i, %if.end7 %utf8_output.addr.0.be.i = phi ptr [ %add.ptr21.i.i, %if.then30.i ], [ %add.ptr69.i, %if.then64.i ], [ %add.ptr19.i, %if.else.i ], [ %add.ptr93.i, %if.end71.i ], [ %utf8_output.addr.2.lcssa.i, %for.end.i ] %buf.addr.0.be.i = phi ptr [ %add.ptr31.i, %if.then30.i ], [ %add.ptr70.i, %if.then64.i ], [ %add.ptr18.i, %if.else.i ], [ %add.ptr94.i, %if.end71.i ], [ %add.ptr192.i, %for.end.i ] %add.ptr4.i = getelementptr inbounds i8, ptr %buf.addr.0.be.i, i64 56 - %cmp.not.i = icmp ugt ptr %add.ptr4.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr4.i, %add.ptr.i br i1 %cmp.not.i, label %_ZN7simdutf8westmere12_GLOBAL__N_125sse_convert_utf16_to_utf8ILNS_10endiannessE0EEESt4pairIPKDsPcES6_mS7_.exit, label %while.body.i, !llvm.loop !650 if.end20.i: ; preds = %if.then12.i, %while.body.i @@ -45705,12 +45695,12 @@ return: ; preds = %if.else148.i, %if.t define dso_local noundef i64 @_ZNK7simdutf8westmere14implementation23convert_utf16be_to_utf8EPKDsmPc(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf8_output) unnamed_addr #30 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not156.i = icmp slt i64 %len, 28 br i1 %cmp.not156.i, label %_ZN7simdutf8westmere12_GLOBAL__N_125sse_convert_utf16_to_utf8ILNS_10endiannessE1EEESt4pairIPKDsPcES6_mS7_.exit, label %while.body.lr.ph.i while.body.lr.ph.i: ; preds = %entry - %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.ptr.i to i64 + %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.i to i64 br label %while.body.i while.body.i: ; preds = %while.cond.backedge.i, %while.body.lr.ph.i @@ -45751,7 +45741,7 @@ while.cond.backedge.i: ; preds = %for.end.i, %if.end7 %utf8_output.addr.0.be.i = phi ptr [ %add.ptr21.i.i, %if.then35.i ], [ %add.ptr74.i, %if.then69.i ], [ %add.ptr24.i, %if.else.i ], [ %add.ptr98.i, %if.end76.i ], [ %utf8_output.addr.2.lcssa.i, %for.end.i ] %buf.addr.0.be.i = phi ptr [ %add.ptr36.i, %if.then35.i ], [ %add.ptr75.i, %if.then69.i ], [ %add.ptr23.i, %if.else.i ], [ %add.ptr99.i, %if.end76.i ], [ %add.ptr199.i, %for.end.i ] %add.ptr4.i = getelementptr inbounds i8, ptr %buf.addr.0.be.i, i64 56 - %cmp.not.i = icmp ugt ptr %add.ptr4.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr4.i, %add.ptr.i br i1 %cmp.not.i, label %_ZN7simdutf8westmere12_GLOBAL__N_125sse_convert_utf16_to_utf8ILNS_10endiannessE1EEESt4pairIPKDsPcES6_mS7_.exit, label %while.body.i, !llvm.loop !652 if.end25.i: ; preds = %if.then17.i, %while.body.i @@ -46019,12 +46009,12 @@ return: ; preds = %if.else154.i, %if.t define dso_local { i32, i64 } @_ZNK7simdutf8westmere14implementation35convert_utf16le_to_utf8_with_errorsEPKDsmPc(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf8_output) unnamed_addr #30 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not163.i = icmp slt i64 %len, 28 br i1 %cmp.not163.i, label %if.end, label %while.body.lr.ph.i while.body.lr.ph.i: ; preds = %entry - %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.ptr.i to i64 + %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.i to i64 br label %while.body.i while.body.i: ; preds = %while.cond.backedge.i, %while.body.lr.ph.i @@ -46061,7 +46051,7 @@ while.cond.backedge.i: ; preds = %for.end.i, %if.end7 %utf8_output.addr.0.be.i = phi ptr [ %add.ptr21.i.i, %if.then30.i ], [ %add.ptr69.i, %if.then64.i ], [ %add.ptr19.i, %if.else.i ], [ %add.ptr93.i, %if.end71.i ], [ %utf8_output.addr.2.lcssa.i, %for.end.i ] %buf.addr.0.be.i = phi ptr [ %add.ptr31.i, %if.then30.i ], [ %add.ptr70.i, %if.then64.i ], [ %add.ptr3166.i, %if.else.i ], [ %add.ptr94.i, %if.end71.i ], [ %add.ptr197.i, %for.end.i ] %add.ptr4.i = getelementptr inbounds i8, ptr %buf.addr.0.be.i, i64 56 - %cmp.not.i = icmp ugt ptr %add.ptr4.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr4.i, %add.ptr.i br i1 %cmp.not.i, label %if.end, label %while.body.i, !llvm.loop !657 if.end20.i: ; preds = %if.then12.i, %while.body.i @@ -46345,12 +46335,12 @@ return: ; preds = %if.end19, %if.then1 define dso_local { i32, i64 } @_ZNK7simdutf8westmere14implementation35convert_utf16be_to_utf8_with_errorsEPKDsmPc(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf8_output) unnamed_addr #30 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not167.i = icmp slt i64 %len, 28 br i1 %cmp.not167.i, label %if.end, label %while.body.lr.ph.i while.body.lr.ph.i: ; preds = %entry - %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.ptr.i to i64 + %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.i to i64 br label %while.body.i while.body.i: ; preds = %while.cond.backedge.i, %while.body.lr.ph.i @@ -46391,7 +46381,7 @@ while.cond.backedge.i: ; preds = %for.end.i, %if.end7 %utf8_output.addr.0.be.i = phi ptr [ %add.ptr21.i.i, %if.then35.i ], [ %add.ptr74.i, %if.then69.i ], [ %add.ptr24.i, %if.else.i ], [ %add.ptr98.i, %if.end76.i ], [ %utf8_output.addr.2.lcssa.i, %for.end.i ] %buf.addr.0.be.i = phi ptr [ %add.ptr36.i, %if.then35.i ], [ %add.ptr75.i, %if.then69.i ], [ %add.ptr3170.i, %if.else.i ], [ %add.ptr99.i, %if.end76.i ], [ %add.ptr204.i, %for.end.i ] %add.ptr4.i = getelementptr inbounds i8, ptr %buf.addr.0.be.i, i64 56 - %cmp.not.i = icmp ugt ptr %add.ptr4.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr4.i, %add.ptr.i br i1 %cmp.not.i, label %if.end, label %while.body.i, !llvm.loop !662 if.end25.i: ; preds = %if.then17.i, %while.body.i @@ -47068,12 +47058,12 @@ _ZNK7simdutf8westmere14implementation23convert_utf32_to_latin1EPKDimPc.exit: ; p define dso_local noundef i64 @_ZNK7simdutf8westmere14implementation21convert_utf32_to_utf8EPKDimPc(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf8_output) unnamed_addr #30 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 2 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not216232.i = icmp slt i64 %len, 28 br i1 %cmp.not216232.i, label %while.end.i, label %while.body.lr.ph.lr.ph.i while.body.lr.ph.lr.ph.i: ; preds = %entry - %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.ptr.i to i64 + %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.i to i64 br label %while.body.lr.ph.i while.body.lr.ph.i: ; preds = %while.cond.outer.backedge.i, %while.body.lr.ph.lr.ph.i @@ -47137,7 +47127,7 @@ while.cond.backedge.i: ; preds = %if.then48.i, %if.el %buf.addr.0.be.i = phi ptr [ %add.ptr70.i, %if.then48.i ], [ %add.ptr36.i, %if.else.i ] %.be.i = phi <4 x i32> [ %21, %if.then48.i ], [ %elt.max.i567.i, %if.else.i ] %add.ptr9.i = getelementptr inbounds i8, ptr %buf.addr.0.be.i, i64 112 - %cmp.not.i = icmp ugt ptr %add.ptr9.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr9.i, %add.ptr.i br i1 %cmp.not.i, label %while.end.i, label %while.body.i, !llvm.loop !670 if.end38.i: ; preds = %if.then30.i, %while.body.i @@ -47245,7 +47235,7 @@ while.cond.outer.backedge.i: ; preds = %for.end.i, %if.end1 %buf.addr.0.ph.be.i = phi ptr [ %add.ptr122.i, %if.then115.i ], [ %add.ptr150.i, %if.end123.i ], [ %add.ptr226.i, %for.end.i ] %forbidden_bytemask.0.ph.be.i = phi <2 x i64> [ %or.i366.i, %if.then115.i ], [ %or.i366.i, %if.end123.i ], [ %forbidden_bytemask.0.ph235.i, %for.end.i ] %add.ptr9215.i = getelementptr inbounds i8, ptr %buf.addr.0.ph.be.i, i64 112 - %cmp.not216.i = icmp ugt ptr %add.ptr9215.i, %add.ptr.ptr.i + %cmp.not216.i = icmp ugt ptr %add.ptr9215.i, %add.ptr.i br i1 %cmp.not216.i, label %while.end.i, label %while.body.lr.ph.i, !llvm.loop !670 if.end123.i: ; preds = %if.then80.i @@ -47427,12 +47417,12 @@ return: ; preds = %if.else199.i, %if.t define dso_local { i32, i64 } @_ZNK7simdutf8westmere14implementation33convert_utf32_to_utf8_with_errorsEPKDimPc(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf8_output) unnamed_addr #30 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 2 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not248.i = icmp slt i64 %len, 28 br i1 %cmp.not248.i, label %while.end.i, label %while.body.lr.ph.i while.body.lr.ph.i: ; preds = %entry - %sub.ptr.lhs.cast178.i = ptrtoint ptr %add.ptr.ptr.i to i64 + %sub.ptr.lhs.cast178.i = ptrtoint ptr %add.ptr.i to i64 br label %while.body.i while.body.i: ; preds = %while.cond.backedge.i, %while.body.lr.ph.i @@ -47514,7 +47504,7 @@ while.cond.backedge.i: ; preds = %for.end.i, %if.end1 %utf8_output.addr.0.be.i = phi ptr [ %add.ptr91.i, %if.then66.i ], [ %add.ptr147.i, %if.then141.i ], [ %add.ptr53.i, %if.else.i ], [ %add.ptr175.i, %if.end149.i ], [ %utf8_output.addr.2.lcssa.i, %for.end.i ] %buf.addr.0.be.i = phi ptr [ %add.ptr88.i, %if.then66.i ], [ %add.ptr148.i, %if.then141.i ], [ %add.ptr7251.i, %if.else.i ], [ %add.ptr176.i, %if.end149.i ], [ %add.ptr265.i, %for.end.i ] %add.ptr8.i = getelementptr inbounds i8, ptr %buf.addr.0.be.i, i64 112 - %cmp.not.i = icmp ugt ptr %add.ptr8.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr8.i, %add.ptr.i br i1 %cmp.not.i, label %while.end.i, label %while.body.i, !llvm.loop !675 if.end55.i: ; preds = %if.then32.i, %if.end.i @@ -47824,13 +47814,13 @@ return: ; preds = %if.end13, %if.then6 define dso_local noundef i64 @_ZNK7simdutf8westmere14implementation24convert_utf16le_to_utf32EPKDsmPDi(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf32_output) unnamed_addr #30 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not51.i = icmp slt i64 %len, 8 br i1 %cmp.not51.i, label %_ZN7simdutf8westmere12_GLOBAL__N_126sse_convert_utf16_to_utf32ILNS_10endiannessE0EEESt4pairIPKDsPDiES6_mS7_.exit, label %while.body.lr.ph.i while.body.lr.ph.i: ; preds = %entry %add.ptr250.i = getelementptr inbounds i8, ptr %buf, i64 16 - %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.ptr.i to i64 + %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.i to i64 br label %while.body.i while.body.i: ; preds = %if.end53.i, %while.body.lr.ph.i @@ -47917,7 +47907,7 @@ if.end53.i: ; preds = %for.end.i, %if.then %utf32_output.addr.3.i = phi ptr [ %add.ptr13.i, %if.then.i ], [ %utf32_output.addr.1.lcssa.i, %for.end.i ] %storemerge.i = phi ptr [ %add.ptr254.i, %if.then.i ], [ %add.ptr52.i, %for.end.i ] %add.ptr2.i = getelementptr inbounds i8, ptr %storemerge.i, i64 16 - %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.i br i1 %cmp.not.i, label %_ZN7simdutf8westmere12_GLOBAL__N_126sse_convert_utf16_to_utf32ILNS_10endiannessE0EEESt4pairIPKDsPDiES6_mS7_.exit, label %while.body.i, !llvm.loop !678 _ZN7simdutf8westmere12_GLOBAL__N_126sse_convert_utf16_to_utf32ILNS_10endiannessE0EEESt4pairIPKDsPDiES6_mS7_.exit: ; preds = %if.end53.i, %entry @@ -48004,13 +47994,13 @@ return: ; preds = %if.else28.i, %if.el define dso_local noundef i64 @_ZNK7simdutf8westmere14implementation24convert_utf16be_to_utf32EPKDsmPDi(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf32_output) unnamed_addr #30 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not54.i = icmp slt i64 %len, 8 br i1 %cmp.not54.i, label %_ZN7simdutf8westmere12_GLOBAL__N_126sse_convert_utf16_to_utf32ILNS_10endiannessE1EEESt4pairIPKDsPDiES6_mS7_.exit, label %while.body.lr.ph.i while.body.lr.ph.i: ; preds = %entry %add.ptr253.i = getelementptr inbounds i8, ptr %buf, i64 16 - %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.ptr.i to i64 + %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.i to i64 br label %while.body.i while.body.i: ; preds = %if.end57.i, %while.body.lr.ph.i @@ -48100,7 +48090,7 @@ if.end57.i: ; preds = %for.end.i, %if.then %utf32_output.addr.3.i = phi ptr [ %add.ptr15.i, %if.then.i ], [ %utf32_output.addr.1.lcssa.i, %for.end.i ] %storemerge.i = phi ptr [ %add.ptr257.i, %if.then.i ], [ %add.ptr56.i, %for.end.i ] %add.ptr2.i = getelementptr inbounds i8, ptr %storemerge.i, i64 16 - %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.i br i1 %cmp.not.i, label %_ZN7simdutf8westmere12_GLOBAL__N_126sse_convert_utf16_to_utf32ILNS_10endiannessE1EEESt4pairIPKDsPDiES6_mS7_.exit, label %while.body.i, !llvm.loop !680 _ZN7simdutf8westmere12_GLOBAL__N_126sse_convert_utf16_to_utf32ILNS_10endiannessE1EEESt4pairIPKDsPDiES6_mS7_.exit: ; preds = %if.end57.i, %entry @@ -48189,13 +48179,13 @@ return: ; preds = %if.else31.i, %if.el define dso_local { i32, i64 } @_ZNK7simdutf8westmere14implementation36convert_utf16le_to_utf32_with_errorsEPKDsmPDi(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf32_output) unnamed_addr #30 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not61.i = icmp slt i64 %len, 8 br i1 %cmp.not61.i, label %if.end, label %while.body.lr.ph.i while.body.lr.ph.i: ; preds = %entry %add.ptr260.i = getelementptr inbounds i8, ptr %buf, i64 16 - %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.ptr.i to i64 + %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.i to i64 br label %while.body.i while.body.i: ; preds = %if.end58.i, %while.body.lr.ph.i @@ -48282,7 +48272,7 @@ if.end58.i: ; preds = %for.end.i, %if.then %utf32_output.addr.3.i = phi ptr [ %add.ptr13.i, %if.then.i ], [ %utf32_output.addr.1.lcssa.i, %for.end.i ] %buf.addr.1.i = phi ptr [ %add.ptr264.i, %if.then.i ], [ %add.ptr57.i, %for.end.i ] %add.ptr2.i = getelementptr inbounds i8, ptr %buf.addr.1.i, i64 16 - %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.i br i1 %cmp.not.i, label %if.end, label %while.body.i, !llvm.loop !685 if.then: ; preds = %if.else28.i @@ -48383,13 +48373,13 @@ return: ; preds = %if.end19, %if.then1 define dso_local { i32, i64 } @_ZNK7simdutf8westmere14implementation36convert_utf16be_to_utf32_with_errorsEPKDsmPDi(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf32_output) unnamed_addr #30 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not63.i = icmp slt i64 %len, 8 br i1 %cmp.not63.i, label %if.end, label %while.body.lr.ph.i while.body.lr.ph.i: ; preds = %entry %add.ptr262.i = getelementptr inbounds i8, ptr %buf, i64 16 - %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.ptr.i to i64 + %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.i to i64 br label %while.body.i while.body.i: ; preds = %if.end62.i, %while.body.lr.ph.i @@ -48479,7 +48469,7 @@ if.end62.i: ; preds = %for.end.i, %if.then %utf32_output.addr.3.i = phi ptr [ %add.ptr15.i, %if.then.i ], [ %utf32_output.addr.1.lcssa.i, %for.end.i ] %buf.addr.1.i = phi ptr [ %add.ptr266.i, %if.then.i ], [ %add.ptr61.i, %for.end.i ] %add.ptr2.i = getelementptr inbounds i8, ptr %buf.addr.1.i, i64 16 - %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.i br i1 %cmp.not.i, label %if.end, label %while.body.i, !llvm.loop !690 if.then: ; preds = %if.else31.i @@ -48589,13 +48579,13 @@ entry: define dso_local noundef i64 @_ZNK7simdutf8westmere14implementation24convert_utf32_to_utf16leEPKDimPDs(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf16_output) unnamed_addr #30 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 2 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not62.i = icmp slt i64 %len, 8 br i1 %cmp.not62.i, label %_ZN7simdutf8westmere12_GLOBAL__N_126sse_convert_utf32_to_utf16ILNS_10endiannessE0EEESt4pairIPKDiPDsES6_mS7_.exit, label %while.body.lr.ph.i while.body.lr.ph.i: ; preds = %entry %add.ptr361.i = getelementptr inbounds i8, ptr %buf, i64 32 - %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.ptr.i to i64 + %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.i to i64 br label %while.body.i while.body.i: ; preds = %if.end50.i, %while.body.lr.ph.i @@ -48692,7 +48682,7 @@ if.end50.i: ; preds = %for.end.i, %if.then %storemerge.i = phi ptr [ %add.ptr366.i, %if.then.i ], [ %add.ptr49.i, %for.end.i ] %forbidden_bytemask.1.i = phi <2 x i64> [ %or.i.i, %if.then.i ], [ %forbidden_bytemask.065.i, %for.end.i ] %add.ptr3.i = getelementptr inbounds i8, ptr %storemerge.i, i64 32 - %cmp.not.i = icmp ugt ptr %add.ptr3.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr3.i, %add.ptr.i br i1 %cmp.not.i, label %while.end.loopexit.i, label %while.body.i, !llvm.loop !692 while.end.loopexit.i: ; preds = %if.end50.i @@ -48790,13 +48780,13 @@ return: ; preds = %if.else34.i, %if.th define dso_local noundef i64 @_ZNK7simdutf8westmere14implementation24convert_utf32_to_utf16beEPKDimPDs(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf16_output) unnamed_addr #30 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 2 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not68.i = icmp slt i64 %len, 8 br i1 %cmp.not68.i, label %_ZN7simdutf8westmere12_GLOBAL__N_126sse_convert_utf32_to_utf16ILNS_10endiannessE1EEESt4pairIPKDiPDsES6_mS7_.exit, label %while.body.lr.ph.i while.body.lr.ph.i: ; preds = %entry %add.ptr367.i = getelementptr inbounds i8, ptr %buf, i64 32 - %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.ptr.i to i64 + %sub.ptr.lhs.cast.i = ptrtoint ptr %add.ptr.i to i64 br label %while.body.i while.body.i: ; preds = %if.end69.i, %while.body.lr.ph.i @@ -48905,7 +48895,7 @@ if.end69.i: ; preds = %for.end.i, %if.then %storemerge.i = phi ptr [ %add.ptr372.i, %if.then.i ], [ %add.ptr68.i, %for.end.i ] %forbidden_bytemask.1.i = phi <2 x i64> [ %or.i.i, %if.then.i ], [ %forbidden_bytemask.071.i, %for.end.i ] %add.ptr3.i = getelementptr inbounds i8, ptr %storemerge.i, i64 32 - %cmp.not.i = icmp ugt ptr %add.ptr3.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr3.i, %add.ptr.i br i1 %cmp.not.i, label %while.end.loopexit.i, label %while.body.i, !llvm.loop !694 while.end.loopexit.i: ; preds = %if.end69.i @@ -49006,13 +48996,13 @@ return: ; preds = %if.else40.i, %if.th define dso_local { i32, i64 } @_ZNK7simdutf8westmere14implementation36convert_utf32_to_utf16le_with_errorsEPKDimPDs(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf16_output) unnamed_addr #30 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 2 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not82.i = icmp slt i64 %len, 8 br i1 %cmp.not82.i, label %while.end.i, label %while.body.lr.ph.i while.body.lr.ph.i: ; preds = %entry %add.ptr281.i = getelementptr inbounds i8, ptr %buf, i64 32 - %sub.ptr.lhs.cast21.i = ptrtoint ptr %add.ptr.ptr.i to i64 + %sub.ptr.lhs.cast21.i = ptrtoint ptr %add.ptr.i to i64 br label %while.body.i while.body.i: ; preds = %if.end65.i, %while.body.lr.ph.i @@ -49133,7 +49123,7 @@ if.end65.i: ; preds = %for.end.i, %if.end. %utf16_output.addr.3.i = phi ptr [ %add.ptr19.i, %if.end.i ], [ %utf16_output.addr.1.lcssa.i, %for.end.i ] %buf.addr.1.i = phi ptr [ %add.ptr285.i, %if.end.i ], [ %add.ptr64.i, %for.end.i ] %add.ptr2.i = getelementptr inbounds i8, ptr %buf.addr.1.i, i64 32 - %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.i br i1 %cmp.not.i, label %while.end.i, label %while.body.i, !llvm.loop !699 while.end.i: ; preds = %if.end65.i, %entry @@ -49233,13 +49223,13 @@ return: ; preds = %if.end13, %if.then6 define dso_local { i32, i64 } @_ZNK7simdutf8westmere14implementation36convert_utf32_to_utf16be_with_errorsEPKDimPDs(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf16_output) unnamed_addr #30 align 2 { entry: %add.ptr.idx.i = shl nsw i64 %len, 2 - %add.ptr.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i + %add.ptr.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i %cmp.not88.i = icmp slt i64 %len, 8 br i1 %cmp.not88.i, label %while.end.i, label %while.body.lr.ph.i while.body.lr.ph.i: ; preds = %entry %add.ptr287.i = getelementptr inbounds i8, ptr %buf, i64 32 - %sub.ptr.lhs.cast23.i = ptrtoint ptr %add.ptr.ptr.i to i64 + %sub.ptr.lhs.cast23.i = ptrtoint ptr %add.ptr.i to i64 br label %while.body.i while.body.i: ; preds = %if.end84.i, %while.body.lr.ph.i @@ -49372,7 +49362,7 @@ if.end84.i: ; preds = %for.end.i, %if.end. %utf16_output.addr.3.i = phi ptr [ %add.ptr21.i, %if.end.i ], [ %utf16_output.addr.1.lcssa.i, %for.end.i ] %buf.addr.1.i = phi ptr [ %add.ptr291.i, %if.end.i ], [ %add.ptr83.i, %for.end.i ] %add.ptr2.i = getelementptr inbounds i8, ptr %buf.addr.1.i, i64 32 - %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.ptr.i + %cmp.not.i = icmp ugt ptr %add.ptr2.i, %add.ptr.i br i1 %cmp.not.i, label %while.end.i, label %while.body.i, !llvm.loop !704 while.end.i: ; preds = %if.end84.i, %entry @@ -49475,13 +49465,13 @@ return: ; preds = %if.end13, %if.then6 define dso_local noundef i64 @_ZNK7simdutf8westmere14implementation30convert_valid_utf32_to_utf16leEPKDimPDs(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf16_output) unnamed_addr #30 align 2 { entry: %add.ptr.idx.i.i = shl nsw i64 %len, 2 - %add.ptr.ptr.i.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i.i + %add.ptr.i.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i.i %cmp.not62.i.i = icmp slt i64 %len, 8 br i1 %cmp.not62.i.i, label %_ZN7simdutf8westmere12_GLOBAL__N_126sse_convert_utf32_to_utf16ILNS_10endiannessE0EEESt4pairIPKDiPDsES6_mS7_.exit.i, label %while.body.lr.ph.i.i while.body.lr.ph.i.i: ; preds = %entry %add.ptr361.i.i = getelementptr inbounds i8, ptr %buf, i64 32 - %sub.ptr.lhs.cast.i.i = ptrtoint ptr %add.ptr.ptr.i.i to i64 + %sub.ptr.lhs.cast.i.i = ptrtoint ptr %add.ptr.i.i to i64 br label %while.body.i.i while.body.i.i: ; preds = %if.end50.i.i, %while.body.lr.ph.i.i @@ -49578,7 +49568,7 @@ if.end50.i.i: ; preds = %for.end.i.i, %if.th %storemerge.i.i = phi ptr [ %add.ptr366.i.i, %if.then.i.i ], [ %add.ptr49.i.i, %for.end.i.i ] %forbidden_bytemask.1.i.i = phi <2 x i64> [ %or.i.i.i, %if.then.i.i ], [ %forbidden_bytemask.065.i.i, %for.end.i.i ] %add.ptr3.i.i = getelementptr inbounds i8, ptr %storemerge.i.i, i64 32 - %cmp.not.i.i = icmp ugt ptr %add.ptr3.i.i, %add.ptr.ptr.i.i + %cmp.not.i.i = icmp ugt ptr %add.ptr3.i.i, %add.ptr.i.i br i1 %cmp.not.i.i, label %while.end.loopexit.i.i, label %while.body.i.i, !llvm.loop !692 while.end.loopexit.i.i: ; preds = %if.end50.i.i @@ -49676,13 +49666,13 @@ _ZNK7simdutf8westmere14implementation24convert_utf32_to_utf16leEPKDimPDs.exit: ; define dso_local noundef i64 @_ZNK7simdutf8westmere14implementation30convert_valid_utf32_to_utf16beEPKDimPDs(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf16_output) unnamed_addr #30 align 2 { entry: %add.ptr.idx.i.i = shl nsw i64 %len, 2 - %add.ptr.ptr.i.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i.i + %add.ptr.i.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i.i %cmp.not68.i.i = icmp slt i64 %len, 8 br i1 %cmp.not68.i.i, label %_ZN7simdutf8westmere12_GLOBAL__N_126sse_convert_utf32_to_utf16ILNS_10endiannessE1EEESt4pairIPKDiPDsES6_mS7_.exit.i, label %while.body.lr.ph.i.i while.body.lr.ph.i.i: ; preds = %entry %add.ptr367.i.i = getelementptr inbounds i8, ptr %buf, i64 32 - %sub.ptr.lhs.cast.i.i = ptrtoint ptr %add.ptr.ptr.i.i to i64 + %sub.ptr.lhs.cast.i.i = ptrtoint ptr %add.ptr.i.i to i64 br label %while.body.i.i while.body.i.i: ; preds = %if.end69.i.i, %while.body.lr.ph.i.i @@ -49791,7 +49781,7 @@ if.end69.i.i: ; preds = %for.end.i.i, %if.th %storemerge.i.i = phi ptr [ %add.ptr372.i.i, %if.then.i.i ], [ %add.ptr68.i.i, %for.end.i.i ] %forbidden_bytemask.1.i.i = phi <2 x i64> [ %or.i.i.i, %if.then.i.i ], [ %forbidden_bytemask.071.i.i, %for.end.i.i ] %add.ptr3.i.i = getelementptr inbounds i8, ptr %storemerge.i.i, i64 32 - %cmp.not.i.i = icmp ugt ptr %add.ptr3.i.i, %add.ptr.ptr.i.i + %cmp.not.i.i = icmp ugt ptr %add.ptr3.i.i, %add.ptr.i.i br i1 %cmp.not.i.i, label %while.end.loopexit.i.i, label %while.body.i.i, !llvm.loop !694 while.end.loopexit.i.i: ; preds = %if.end69.i.i @@ -49892,13 +49882,13 @@ _ZNK7simdutf8westmere14implementation24convert_utf32_to_utf16beEPKDimPDs.exit: ; define dso_local noundef i64 @_ZNK7simdutf8westmere14implementation30convert_valid_utf16le_to_utf32EPKDsmPDi(ptr nocapture nonnull readnone align 8 %this, ptr noundef %buf, i64 noundef %len, ptr noundef %utf32_output) unnamed_addr #30 align 2 { entry: %add.ptr.idx.i.i = shl nsw i64 %len, 1 - %add.ptr.ptr.i.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i.i + %add.ptr.i.i = getelementptr inbounds i8, ptr %buf, i64 %add.ptr.idx.i.i %cmp.not51.i.i = icmp slt i64 %len, 8 br i1 %cmp.not51.i.i, label %_ZN7simdutf8westmere12_GLOBAL__N_126sse_convert_utf16_to_utf32ILNS_10endiannessE0EEESt4pairIPKDsPDiES6_mS7_.exit.i, label %while.body.lr.ph.i.i while.body.lr.ph.i.i: ; preds = %entry %add.ptr250.i.i = getelementptr inbounds i8, ptr %buf, i64 16 - %sub.ptr.lhs.cast.i.i = ptrtoint ptr %add.ptr.ptr.i.i to i64 + %sub.ptr.lhs.cast.i.i = ptrtoint ptr %add.ptr.i.i to i64 br label %while.body.i.i while.body.i.i: ; preds = %if.end53.i.i, %while.body.lr.ph.i.i @@ -49985,7 +49975,7 @@ if.end53.i.i: ; preds = %for.end.i.i, %if.th %utf32_output.addr.3.i.i = phi ptr [ %add.ptr13.i.i, %if.then.i.i ], [ %utf32_output.addr.1.lcssa.i.i, %for.end.i.i ] %storemerge.i.i = phi ptr [ %add.ptr254.i.i, %if.then.i.i ], [ %add.ptr52.i.i, %for.end.i.i ] %add.ptr2.i.i = getelementptr inbounds i8, ptr %storemerge.i.i, i64 16 - %cmp.not.i.i = icmp ugt ptr %add.ptr2.i.i, %add.ptr.ptr.i.i + %cmp.not.i.i = icmp ugt ptr %add.ptr2.i.i, %add.ptr.i.i br i1 %cmp.not.i.i, label %_ZN7simdutf8westmere12_GLOBAL__N_126sse_convert_utf16_to_utf32ILNS_10endiannessE0EEESt4pairIPKDsPDiES6_mS7_.exit.i, label %while.body.i.i, !llvm.loop !678 _ZN7simdutf8westmere12_GLOBAL__N_126sse_convert_utf16_to_utf32ILNS_10endiannessE0EEESt4pairIPKDsPDiES6_mS7_.exit.i: ; preds = %if.end53.i.i, %entry diff --git a/bench/openssl/optimized/libcrypto-lib-ecp_nistz256.ll b/bench/openssl/optimized/libcrypto-lib-ecp_nistz256.ll index d1333d45b9c..a8f2d35ab81 100644 --- a/bench/openssl/optimized/libcrypto-lib-ecp_nistz256.ll +++ b/bench/openssl/optimized/libcrypto-lib-ecp_nistz256.ll @@ -472,57 +472,56 @@ for.body91.preheader: ; preds = %if.end45, %for.cond for.body: ; preds = %if.end45, %for.body %indvars.iv = phi i64 [ %indvars.iv.next, %for.body ], [ 0, %if.end45 ] %call48 = call ptr @bn_get_words(ptr noundef nonnull %scalar.addr.0) #8 - %12 = lshr exact i64 %indvars.iv, 3 - %arrayidx49 = getelementptr inbounds i64, ptr %call48, i64 %12 - %13 = load i64, ptr %arrayidx49, align 8 - %conv = trunc i64 %13 to i8 + %arrayidx49 = getelementptr inbounds i8, ptr %call48, i64 %indvars.iv + %12 = load i64, ptr %arrayidx49, align 8 + %conv = trunc i64 %12 to i8 %arrayidx52 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %indvars.iv store i8 %conv, ptr %arrayidx52, align 8 - %shr = lshr i64 %13, 8 + %shr = lshr i64 %12, 8 %conv53 = trunc i64 %shr to i8 - %14 = or disjoint i64 %indvars.iv, 1 - %arrayidx56 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %14 + %13 = or disjoint i64 %indvars.iv, 1 + %arrayidx56 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %13 store i8 %conv53, ptr %arrayidx56, align 1 - %shr57 = lshr i64 %13, 16 + %shr57 = lshr i64 %12, 16 %conv58 = trunc i64 %shr57 to i8 - %15 = or disjoint i64 %indvars.iv, 2 - %arrayidx61 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %15 + %14 = or disjoint i64 %indvars.iv, 2 + %arrayidx61 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %14 store i8 %conv58, ptr %arrayidx61, align 2 - %shr62 = lshr i64 %13, 24 + %shr62 = lshr i64 %12, 24 %conv63 = trunc i64 %shr62 to i8 - %16 = or disjoint i64 %indvars.iv, 3 - %arrayidx66 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %16 + %15 = or disjoint i64 %indvars.iv, 3 + %arrayidx66 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %15 store i8 %conv63, ptr %arrayidx66, align 1 - %shr67 = lshr i64 %13, 32 + %shr67 = lshr i64 %12, 32 %conv68 = trunc i64 %shr67 to i8 - %17 = or disjoint i64 %indvars.iv, 4 - %arrayidx71 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %17 + %16 = or disjoint i64 %indvars.iv, 4 + %arrayidx71 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %16 store i8 %conv68, ptr %arrayidx71, align 4 - %shr72 = lshr i64 %13, 40 + %shr72 = lshr i64 %12, 40 %conv73 = trunc i64 %shr72 to i8 - %18 = or disjoint i64 %indvars.iv, 5 - %arrayidx76 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %18 + %17 = or disjoint i64 %indvars.iv, 5 + %arrayidx76 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %17 store i8 %conv73, ptr %arrayidx76, align 1 - %shr77 = lshr i64 %13, 48 + %shr77 = lshr i64 %12, 48 %conv78 = trunc i64 %shr77 to i8 - %19 = or disjoint i64 %indvars.iv, 6 - %arrayidx81 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %19 + %18 = or disjoint i64 %indvars.iv, 6 + %arrayidx81 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %18 store i8 %conv78, ptr %arrayidx81, align 2 - %shr82 = lshr i64 %13, 56 + %shr82 = lshr i64 %12, 56 %conv83 = trunc i64 %shr82 to i8 - %20 = or disjoint i64 %indvars.iv, 7 - %arrayidx86 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %20 + %19 = or disjoint i64 %indvars.iv, 7 + %arrayidx86 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %19 store i8 %conv83, ptr %arrayidx86, align 1 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 8 %call46 = call i32 @bn_get_top(ptr noundef nonnull %scalar.addr.0) #8 %mul = shl nsw i32 %call46, 3 - %21 = sext i32 %mul to i64 - %cmp47 = icmp slt i64 %indvars.iv.next, %21 + %20 = sext i32 %mul to i64 + %cmp47 = icmp slt i64 %indvars.iv.next, %20 br i1 %cmp47, label %for.body, label %for.cond88.preheader, !llvm.loop !13 for.end95: ; preds = %for.body91.preheader, %for.cond88.preheader - %22 = load i8, ptr %p_str, align 16 - %conv97 = zext i8 %22 to i32 + %21 = load i8, ptr %p_str, align 16 + %conv97 = zext i8 %21 to i32 %shl = shl nuw nsw i32 %conv97, 1 %and = and i32 %shl, 254 %shr.i = lshr i32 %and, 7 @@ -544,53 +543,53 @@ for.end95: ; preds = %for.body91.preheade %conv110 = zext nneg i32 %and7.i to i64 %sub.i98 = sub nsw i64 0, %conv110 %not.i99 = add nsw i64 %conv110, -1 - %23 = load i64, ptr %Z, align 32 - %and.i100 = and i64 %23, %sub.i98 - %24 = load i64, ptr %Y, align 32 - %and2.i = and i64 %not.i99, %24 + %22 = load i64, ptr %Z, align 32 + %and.i100 = and i64 %22, %sub.i98 + %23 = load i64, ptr %Y, align 32 + %and2.i = and i64 %not.i99, %23 %xor.i = xor i64 %and2.i, %and.i100 store i64 %xor.i, ptr %Y, align 32 %arrayidx4.i = getelementptr inbounds i8, ptr %p, i64 72 - %25 = load i64, ptr %arrayidx4.i, align 8 - %and5.i = and i64 %25, %sub.i98 + %24 = load i64, ptr %arrayidx4.i, align 8 + %and5.i = and i64 %24, %sub.i98 %arrayidx6.i = getelementptr inbounds i8, ptr %p, i64 40 - %26 = load i64, ptr %arrayidx6.i, align 8 - %and7.i101 = and i64 %26, %not.i99 + %25 = load i64, ptr %arrayidx6.i, align 8 + %and7.i101 = and i64 %25, %not.i99 %xor8.i = xor i64 %and7.i101, %and5.i store i64 %xor8.i, ptr %arrayidx6.i, align 8 %arrayidx10.i = getelementptr inbounds i8, ptr %p, i64 80 - %27 = load i64, ptr %arrayidx10.i, align 16 - %and11.i = and i64 %27, %sub.i98 + %26 = load i64, ptr %arrayidx10.i, align 16 + %and11.i = and i64 %26, %sub.i98 %arrayidx12.i = getelementptr inbounds i8, ptr %p, i64 48 - %28 = load i64, ptr %arrayidx12.i, align 16 - %and13.i = and i64 %28, %not.i99 + %27 = load i64, ptr %arrayidx12.i, align 16 + %and13.i = and i64 %27, %not.i99 %xor14.i = xor i64 %and13.i, %and11.i store i64 %xor14.i, ptr %arrayidx12.i, align 16 %arrayidx16.i = getelementptr inbounds i8, ptr %p, i64 88 - %29 = load i64, ptr %arrayidx16.i, align 8 - %and17.i = and i64 %29, %sub.i98 + %28 = load i64, ptr %arrayidx16.i, align 8 + %and17.i = and i64 %28, %sub.i98 %arrayidx18.i = getelementptr inbounds i8, ptr %p, i64 56 - %30 = load i64, ptr %arrayidx18.i, align 8 - %and19.i = and i64 %30, %not.i99 + %29 = load i64, ptr %arrayidx18.i, align 8 + %and19.i = and i64 %29, %not.i99 %xor20.i = xor i64 %and19.i, %and17.i store i64 %xor20.i, ptr %arrayidx18.i, align 8 - %31 = load i64, ptr %p, align 32 + %30 = load i64, ptr %p, align 32 %arrayidx113 = getelementptr inbounds i8, ptr %p, i64 8 - %32 = load i64, ptr %arrayidx113, align 8 + %31 = load i64, ptr %arrayidx113, align 8 %arrayidx115 = getelementptr inbounds i8, ptr %p, i64 16 - %33 = load i64, ptr %arrayidx115, align 16 + %32 = load i64, ptr %arrayidx115, align 16 %arrayidx118 = getelementptr inbounds i8, ptr %p, i64 24 - %34 = load i64, ptr %arrayidx118, align 8 - %35 = or i64 %31, %32 + %33 = load i64, ptr %arrayidx118, align 8 + %34 = or i64 %30, %31 + %35 = or i64 %34, %32 %36 = or i64 %35, %33 - %37 = or i64 %36, %34 - %38 = or i64 %37, %xor8.i - %39 = or i64 %38, %xor14.i - %40 = or i64 %39, %xor20.i - %or131 = or i64 %40, %xor.i - %41 = add i64 %or131, -1 - %42 = xor i64 %or131, -1 - %not.i102 = and i64 %41, %42 + %37 = or i64 %36, %xor8.i + %38 = or i64 %37, %xor14.i + %39 = or i64 %38, %xor20.i + %or131 = or i64 %39, %xor.i + %40 = add i64 %or131, -1 + %41 = xor i64 %or131, -1 + %not.i102 = and i64 %40, %41 %shr.i103 = lshr i64 %not.i102, 63 %not = add nsw i64 %shr.i103, -1 %and133 = and i64 %not, 1 @@ -613,13 +612,13 @@ for.body148: ; preds = %for.end95, %for.bod %div15097 = lshr i32 %sub149, 3 %idxprom151 = zext nneg i32 %div15097 to i64 %arrayidx152 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %idxprom151 - %43 = load i8, ptr %arrayidx152, align 1 - %conv153 = zext i8 %43 to i32 + %42 = load i8, ptr %arrayidx152, align 1 + %conv153 = zext i8 %42 to i32 %add154 = add nuw nsw i32 %div15097, 1 %idxprom155 = zext nneg i32 %add154 to i64 %arrayidx156 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %idxprom155 - %44 = load i8, ptr %arrayidx156, align 1 - %conv157 = zext i8 %44 to i32 + %43 = load i8, ptr %arrayidx156, align 1 + %conv157 = zext i8 %43 to i32 %shl158 = shl nuw nsw i32 %conv157, 8 %or159 = or disjoint i32 %shl158, %conv153 %rem = and i32 %sub149, 7 @@ -644,22 +643,22 @@ for.body148: ; preds = %for.end95, %for.bod %conv178 = zext nneg i32 %and7.i115 to i64 %sub.i117 = sub nsw i64 0, %conv178 %not.i118 = add nsw i64 %conv178, -1 - %45 = load <2 x i64>, ptr %Z169, align 32 - %46 = insertelement <2 x i64> poison, i64 %sub.i117, i64 0 - %47 = shufflevector <2 x i64> %46, <2 x i64> poison, <2 x i32> zeroinitializer - %48 = and <2 x i64> %45, %47 - %49 = load <2 x i64>, ptr %Y171, align 32 - %50 = insertelement <2 x i64> poison, i64 %not.i118, i64 0 - %51 = shufflevector <2 x i64> %50, <2 x i64> poison, <2 x i32> zeroinitializer - %52 = and <2 x i64> %51, %49 - %53 = xor <2 x i64> %52, %48 - store <2 x i64> %53, ptr %Y171, align 32 - %54 = load <2 x i64>, ptr %arrayidx10.i127, align 16 - %55 = and <2 x i64> %54, %47 - %56 = load <2 x i64>, ptr %arrayidx12.i129, align 16 - %57 = and <2 x i64> %56, %51 - %58 = xor <2 x i64> %57, %55 - store <2 x i64> %58, ptr %arrayidx12.i129, align 16 + %44 = load <2 x i64>, ptr %Z169, align 32 + %45 = insertelement <2 x i64> poison, i64 %sub.i117, i64 0 + %46 = shufflevector <2 x i64> %45, <2 x i64> poison, <2 x i32> zeroinitializer + %47 = and <2 x i64> %44, %46 + %48 = load <2 x i64>, ptr %Y171, align 32 + %49 = insertelement <2 x i64> poison, i64 %not.i118, i64 0 + %50 = shufflevector <2 x i64> %49, <2 x i64> poison, <2 x i32> zeroinitializer + %51 = and <2 x i64> %50, %48 + %52 = xor <2 x i64> %51, %47 + store <2 x i64> %52, ptr %Y171, align 32 + %53 = load <2 x i64>, ptr %arrayidx10.i127, align 16 + %54 = and <2 x i64> %53, %46 + %55 = load <2 x i64>, ptr %arrayidx12.i129, align 16 + %56 = and <2 x i64> %55, %50 + %57 = xor <2 x i64> %56, %54 + store <2 x i64> %57, ptr %arrayidx12.i129, align 16 call void @ecp_nistz256_point_add_affine(ptr noundef nonnull %p, ptr noundef nonnull %p, ptr noundef nonnull %t) #8 %indvars.iv.next205 = add nuw nsw i64 %indvars.iv204, 1 %exitcond.not = icmp eq i64 %indvars.iv.next205, 37 @@ -684,7 +683,7 @@ if.then208.thread: ; preds = %if.end193 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %call196, ptr align 8 %points, i64 %mul201, i1 false) %arrayidx204 = getelementptr inbounds ptr, ptr %call196, i64 %num store ptr %call, ptr %arrayidx204, align 8 - br label %59 + br label %58 if.end206: ; preds = %for.body148, %if.end %tobool207.not = icmp eq i64 %num, 0 @@ -692,24 +691,24 @@ if.end206: ; preds = %for.body148, %if.en if.then208: ; preds = %if.end206 %spec.select224 = select i1 %tobool.not, ptr %t, ptr %p - br label %59 + br label %58 -59: ; preds = %if.then208, %if.then208.thread +58: ; preds = %if.then208, %if.then208.thread %tobool209.not168176223 = phi i1 [ false, %if.then208.thread ], [ %tobool.not, %if.then208 ] %new_scalars.0177221 = phi ptr [ %call189, %if.then208.thread ], [ null, %if.then208 ] %new_points.0179219 = phi ptr [ %call196, %if.then208.thread ], [ null, %if.then208 ] %scalars.addr.0181218 = phi ptr [ %call189, %if.then208.thread ], [ %scalars, %if.then208 ] %points.addr.0182217 = phi ptr [ %call196, %if.then208.thread ], [ %points, %if.then208 ] %num.addr.0183216 = phi i64 [ %add, %if.then208.thread ], [ %num, %if.then208 ] - %60 = phi ptr [ %p, %if.then208.thread ], [ %spec.select224, %if.then208 ] + %59 = phi ptr [ %p, %if.then208.thread ], [ %spec.select224, %if.then208 ] %mul.i = shl i64 %num.addr.0183216, 4 %add.i = or disjoint i64 %mul.i, 6 %cmp.i = icmp ugt i64 %add.i, 22369621 br i1 %cmp.i, label %err.critedge, label %lor.lhs.false.i -lor.lhs.false.i: ; preds = %59 - %61 = mul nsw i64 %num.addr.0183216, 1536 - %add4.i = add nsw i64 %61, 544 +lor.lhs.false.i: ; preds = %58 + %60 = mul nsw i64 %num.addr.0183216, 1536 + %add4.i = add nsw i64 %60, 544 %call.i137 = call noalias ptr @CRYPTO_malloc(i64 noundef %add4.i, ptr noundef nonnull @.str, i32 noundef 627) #8 %cmp5.i = icmp eq ptr %call.i137, null br i1 %cmp5.i, label %err.critedge, label %lor.lhs.false6.i @@ -728,8 +727,8 @@ lor.lhs.false11.i: ; preds = %lor.lhs.false6.i for.body.lr.ph.i: ; preds = %lor.lhs.false11.i %add.ptr.i = getelementptr inbounds i8, ptr %call.i137, i64 64 - %62 = ptrtoint ptr %call.i137 to i64 - %rem.i = and i64 %62, 63 + %61 = ptrtoint ptr %call.i137 to i64 + %rem.i = and i64 %61, 63 %idx.neg.i = sub nsw i64 0, %rem.i %add.ptr15.i = getelementptr inbounds i8, ptr %add.ptr.i, i64 %idx.neg.i %add.ptr16.i = getelementptr inbounds [16 x %struct.P256_POINT], ptr %add.ptr15.i, i64 %num.addr.0183216 @@ -744,18 +743,18 @@ for.body.lr.ph.i: ; preds = %lor.lhs.false11.i for.body.i: ; preds = %if.end123.i, %for.body.lr.ph.i %i.0265.i = phi i64 [ 0, %for.body.lr.ph.i ], [ %inc178.i, %if.end123.i ] - %63 = mul i64 %i.0265.i, 33 - %scevgep.i = getelementptr i8, ptr %call9.i, i64 %63 + %62 = mul i64 %i.0265.i, 33 + %scevgep.i = getelementptr i8, ptr %call9.i, i64 %62 %arrayidx.i = getelementptr inbounds [16 x %struct.P256_POINT], ptr %add.ptr15.i, i64 %i.0265.i %arrayidx18.i140 = getelementptr inbounds ptr, ptr %scalars.addr.0181218, i64 %i.0265.i - %64 = load ptr, ptr %arrayidx18.i140, align 8 - %call19.i = call i32 @BN_num_bits(ptr noundef %64) #8 + %63 = load ptr, ptr %arrayidx18.i140, align 8 + %call19.i = call i32 @BN_num_bits(ptr noundef %63) #8 %cmp20.i = icmp sgt i32 %call19.i, 256 br i1 %cmp20.i, label %if.then24.i, label %lor.lhs.false21.i lor.lhs.false21.i: ; preds = %for.body.i - %65 = load ptr, ptr %arrayidx18.i140, align 8 - %call23.i = call i32 @BN_is_negative(ptr noundef %65) #8 + %64 = load ptr, ptr %arrayidx18.i140, align 8 + %call23.i = call i32 @BN_is_negative(ptr noundef %64) #8 %tobool.not.i141 = icmp eq i32 %call23.i, 0 br i1 %tobool.not.i141, label %if.else.i, label %if.then24.i @@ -765,18 +764,18 @@ if.then24.i: ; preds = %lor.lhs.false21.i, br i1 %cmp26.i, label %err.critedge, label %if.end28.i if.end28.i: ; preds = %if.then24.i - %66 = load ptr, ptr %arrayidx18.i140, align 8 - %67 = load ptr, ptr %order.i, align 8 - %call30.i = call i32 @BN_nnmod(ptr noundef nonnull %call25.i, ptr noundef %66, ptr noundef %67, ptr noundef %ctx) #8 + %65 = load ptr, ptr %arrayidx18.i140, align 8 + %66 = load ptr, ptr %order.i, align 8 + %call30.i = call i32 @BN_nnmod(ptr noundef nonnull %call25.i, ptr noundef %65, ptr noundef %66, ptr noundef %ctx) #8 %tobool31.not.i = icmp eq i32 %call30.i, 0 br i1 %tobool31.not.i, label %err.sink.split.i, label %if.end37.i if.else.i: ; preds = %lor.lhs.false21.i - %68 = load ptr, ptr %arrayidx18.i140, align 8 + %67 = load ptr, ptr %arrayidx18.i140, align 8 br label %if.end37.i if.end37.i: ; preds = %if.else.i, %if.end28.i - %.sink.i = phi ptr [ %68, %if.else.i ], [ %call25.i, %if.end28.i ] + %.sink.i = phi ptr [ %67, %if.else.i ], [ %call25.i, %if.end28.i ] %arrayidx36.i = getelementptr inbounds ptr, ptr %call13.i, i64 %i.0265.i store ptr %.sink.i, ptr %arrayidx36.i, align 8 %call40258.i = call i32 @bn_get_top(ptr noundef %.sink.i) #8 @@ -784,95 +783,94 @@ if.end37.i: ; preds = %if.else.i, %if.end2 br i1 %cmp42260.i, label %for.body43.i, label %for.body96.preheader.i for.cond93.preheader.i: ; preds = %for.body43.i - %69 = trunc i64 %indvars.iv.next.i to i32 - %cmp94262.i = icmp ult i32 %69, 33 + %68 = trunc i64 %indvars.iv.next.i to i32 + %cmp94262.i = icmp ult i32 %68, 33 br i1 %cmp94262.i, label %for.body96.preheader.i, label %for.end101.i for.body96.preheader.i: ; preds = %for.cond93.preheader.i, %if.end37.i - %j.0.lcssa289.i = phi i32 [ %69, %for.cond93.preheader.i ], [ 0, %if.end37.i ] - %70 = zext nneg i32 %j.0.lcssa289.i to i64 - %scevgep281.i = getelementptr i8, ptr %scevgep.i, i64 %70 - %71 = sub nuw nsw i32 32, %j.0.lcssa289.i - %72 = zext nneg i32 %71 to i64 - %73 = add nuw nsw i64 %72, 1 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %scevgep281.i, i8 0, i64 %73, i1 false) + %j.0.lcssa289.i = phi i32 [ %68, %for.cond93.preheader.i ], [ 0, %if.end37.i ] + %69 = zext nneg i32 %j.0.lcssa289.i to i64 + %scevgep281.i = getelementptr i8, ptr %scevgep.i, i64 %69 + %70 = sub nuw nsw i32 32, %j.0.lcssa289.i + %71 = zext nneg i32 %70 to i64 + %72 = add nuw nsw i64 %71, 1 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %scevgep281.i, i8 0, i64 %72, i1 false) br label %for.end101.i for.body43.i: ; preds = %if.end37.i, %for.body43.i - %74 = phi ptr [ %84, %for.body43.i ], [ %.sink.i, %if.end37.i ] + %73 = phi ptr [ %82, %for.body43.i ], [ %.sink.i, %if.end37.i ] %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %for.body43.i ], [ 0, %if.end37.i ] - %call45.i = call ptr @bn_get_words(ptr noundef %74) #8 - %75 = lshr exact i64 %indvars.iv.i, 3 - %arrayidx46.i = getelementptr inbounds i64, ptr %call45.i, i64 %75 - %76 = load i64, ptr %arrayidx46.i, align 8 - %conv.i = trunc i64 %76 to i8 + %call45.i = call ptr @bn_get_words(ptr noundef %73) #8 + %arrayidx46.i = getelementptr inbounds i8, ptr %call45.i, i64 %indvars.iv.i + %74 = load i64, ptr %arrayidx46.i, align 8 + %conv.i = trunc i64 %74 to i8 %arrayidx50.i = getelementptr inbounds [33 x i8], ptr %call9.i, i64 %i.0265.i, i64 %indvars.iv.i store i8 %conv.i, ptr %arrayidx50.i, align 1 - %shr.i145 = lshr i64 %76, 8 + %shr.i145 = lshr i64 %74, 8 %conv51.i = trunc i64 %shr.i145 to i8 - %77 = or disjoint i64 %indvars.iv.i, 1 - %arrayidx55.i = getelementptr inbounds [33 x i8], ptr %call9.i, i64 %i.0265.i, i64 %77 + %75 = or disjoint i64 %indvars.iv.i, 1 + %arrayidx55.i = getelementptr inbounds [33 x i8], ptr %call9.i, i64 %i.0265.i, i64 %75 store i8 %conv51.i, ptr %arrayidx55.i, align 1 - %shr56.i = lshr i64 %76, 16 + %shr56.i = lshr i64 %74, 16 %conv57.i = trunc i64 %shr56.i to i8 - %78 = or disjoint i64 %indvars.iv.i, 2 - %arrayidx61.i = getelementptr inbounds [33 x i8], ptr %call9.i, i64 %i.0265.i, i64 %78 + %76 = or disjoint i64 %indvars.iv.i, 2 + %arrayidx61.i = getelementptr inbounds [33 x i8], ptr %call9.i, i64 %i.0265.i, i64 %76 store i8 %conv57.i, ptr %arrayidx61.i, align 1 - %shr62.i = lshr i64 %76, 24 + %shr62.i = lshr i64 %74, 24 %conv63.i = trunc i64 %shr62.i to i8 - %79 = or disjoint i64 %indvars.iv.i, 3 - %arrayidx67.i = getelementptr inbounds [33 x i8], ptr %call9.i, i64 %i.0265.i, i64 %79 + %77 = or disjoint i64 %indvars.iv.i, 3 + %arrayidx67.i = getelementptr inbounds [33 x i8], ptr %call9.i, i64 %i.0265.i, i64 %77 store i8 %conv63.i, ptr %arrayidx67.i, align 1 - %shr68.i = lshr i64 %76, 32 + %shr68.i = lshr i64 %74, 32 %conv69.i = trunc i64 %shr68.i to i8 - %80 = or disjoint i64 %indvars.iv.i, 4 - %arrayidx73.i = getelementptr inbounds [33 x i8], ptr %call9.i, i64 %i.0265.i, i64 %80 + %78 = or disjoint i64 %indvars.iv.i, 4 + %arrayidx73.i = getelementptr inbounds [33 x i8], ptr %call9.i, i64 %i.0265.i, i64 %78 store i8 %conv69.i, ptr %arrayidx73.i, align 1 - %shr74.i = lshr i64 %76, 40 + %shr74.i = lshr i64 %74, 40 %conv75.i = trunc i64 %shr74.i to i8 - %81 = or disjoint i64 %indvars.iv.i, 5 - %arrayidx79.i = getelementptr inbounds [33 x i8], ptr %call9.i, i64 %i.0265.i, i64 %81 + %79 = or disjoint i64 %indvars.iv.i, 5 + %arrayidx79.i = getelementptr inbounds [33 x i8], ptr %call9.i, i64 %i.0265.i, i64 %79 store i8 %conv75.i, ptr %arrayidx79.i, align 1 - %shr80.i = lshr i64 %76, 48 + %shr80.i = lshr i64 %74, 48 %conv81.i = trunc i64 %shr80.i to i8 - %82 = or disjoint i64 %indvars.iv.i, 6 - %arrayidx85.i = getelementptr inbounds [33 x i8], ptr %call9.i, i64 %i.0265.i, i64 %82 + %80 = or disjoint i64 %indvars.iv.i, 6 + %arrayidx85.i = getelementptr inbounds [33 x i8], ptr %call9.i, i64 %i.0265.i, i64 %80 store i8 %conv81.i, ptr %arrayidx85.i, align 1 - %shr86.i = lshr i64 %76, 56 + %shr86.i = lshr i64 %74, 56 %conv87.i = trunc i64 %shr86.i to i8 - %83 = or disjoint i64 %indvars.iv.i, 7 - %arrayidx91.i = getelementptr inbounds [33 x i8], ptr %call9.i, i64 %i.0265.i, i64 %83 + %81 = or disjoint i64 %indvars.iv.i, 7 + %arrayidx91.i = getelementptr inbounds [33 x i8], ptr %call9.i, i64 %i.0265.i, i64 %81 store i8 %conv87.i, ptr %arrayidx91.i, align 1 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 8 - %84 = load ptr, ptr %arrayidx36.i, align 8 - %call40.i = call i32 @bn_get_top(ptr noundef %84) #8 + %82 = load ptr, ptr %arrayidx36.i, align 8 + %call40.i = call i32 @bn_get_top(ptr noundef %82) #8 %mul41.i = shl nsw i32 %call40.i, 3 - %85 = sext i32 %mul41.i to i64 - %cmp42.i = icmp slt i64 %indvars.iv.next.i, %85 + %83 = sext i32 %mul41.i to i64 + %cmp42.i = icmp slt i64 %indvars.iv.next.i, %83 br i1 %cmp42.i, label %for.body43.i, label %for.cond93.preheader.i, !llvm.loop !15 for.end101.i: ; preds = %for.body96.preheader.i, %for.cond93.preheader.i %arrayidx104.i = getelementptr inbounds ptr, ptr %points.addr.0182217, i64 %i.0265.i - %86 = load ptr, ptr %arrayidx104.i, align 8 - %X105.i = getelementptr inbounds i8, ptr %86, i64 16 - %87 = load ptr, ptr %X105.i, align 8 - %call.i.i = call i32 @bn_copy_words(ptr noundef nonnull %add.ptr16.i, ptr noundef %87, i32 noundef 4) #8 + %84 = load ptr, ptr %arrayidx104.i, align 8 + %X105.i = getelementptr inbounds i8, ptr %84, i64 16 + %85 = load ptr, ptr %X105.i, align 8 + %call.i.i = call i32 @bn_copy_words(ptr noundef nonnull %add.ptr16.i, ptr noundef %85, i32 noundef 4) #8 %tobool107.not.i = icmp eq i32 %call.i.i, 0 br i1 %tobool107.not.i, label %err.sink.split.i, label %lor.lhs.false108.i lor.lhs.false108.i: ; preds = %for.end101.i - %88 = load ptr, ptr %arrayidx104.i, align 8 - %Y112.i = getelementptr inbounds i8, ptr %88, i64 24 - %89 = load ptr, ptr %Y112.i, align 8 - %call.i205.i = call i32 @bn_copy_words(ptr noundef nonnull %Y.i138, ptr noundef %89, i32 noundef 4) #8 + %86 = load ptr, ptr %arrayidx104.i, align 8 + %Y112.i = getelementptr inbounds i8, ptr %86, i64 24 + %87 = load ptr, ptr %Y112.i, align 8 + %call.i205.i = call i32 @bn_copy_words(ptr noundef nonnull %Y.i138, ptr noundef %87, i32 noundef 4) #8 %tobool114.not.i = icmp eq i32 %call.i205.i, 0 br i1 %tobool114.not.i, label %err.sink.split.i, label %lor.lhs.false115.i lor.lhs.false115.i: ; preds = %lor.lhs.false108.i - %90 = load ptr, ptr %arrayidx104.i, align 8 - %Z119.i = getelementptr inbounds i8, ptr %90, i64 32 - %91 = load ptr, ptr %Z119.i, align 8 - %call.i206.i = call i32 @bn_copy_words(ptr noundef nonnull %Z.i139, ptr noundef %91, i32 noundef 4) #8 + %88 = load ptr, ptr %arrayidx104.i, align 8 + %Z119.i = getelementptr inbounds i8, ptr %88, i64 32 + %89 = load ptr, ptr %Z119.i, align 8 + %call.i206.i = call i32 @bn_copy_words(ptr noundef nonnull %Z.i139, ptr noundef %89, i32 noundef 4) #8 %tobool121.not.i = icmp eq i32 %call.i206.i, 0 br i1 %tobool121.not.i, label %err.sink.split.i, label %if.end123.i @@ -914,15 +912,15 @@ if.end123.i: ; preds = %lor.lhs.false115.i for.end179.i: ; preds = %if.end123.i %arrayidx183.i = getelementptr inbounds i8, ptr %call9.i, i64 31 - %92 = load i8, ptr %arrayidx183.i, align 1 - %93 = lshr i8 %92, 6 - %shr187.i = zext nneg i8 %93 to i32 + %90 = load i8, ptr %arrayidx183.i, align 1 + %91 = lshr i8 %90, 6 + %shr187.i = zext nneg i8 %91 to i32 %and6.i.i = shl nuw nsw i32 %shr187.i, 1 %add9.i.i = and i32 %and6.i.i, 2 %shr510.i.i = add nuw nsw i32 %add9.i.i, %shr187.i %shr192.i = lshr i32 %shr510.i.i, 1 call void @ecp_nistz256_gather_w5(ptr noundef nonnull %add.ptr16.i, ptr noundef nonnull %add.ptr15.i, i32 noundef %shr192.i) #8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 32 dereferenceable(96) %60, ptr noundef nonnull align 8 dereferenceable(96) %add.ptr16.i, i64 96, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 32 dereferenceable(96) %59, ptr noundef nonnull align 8 dereferenceable(96) %add.ptr16.i, i64 96, i1 false) %Y224.i = getelementptr inbounds i8, ptr %add.ptr16.i, i64 128 %arrayidx10.i.i = getelementptr inbounds i8, ptr %add.ptr16.i, i64 144 %arrayidx12.i.i = getelementptr inbounds i8, ptr %add.ptr16.i, i64 48 @@ -947,11 +945,11 @@ for.body202.lr.ph.i: ; preds = %while.body.i for.body202.i: ; preds = %for.body202.i, %for.body202.lr.ph.i %i.1267.i = phi i64 [ %conv198.i, %for.body202.lr.ph.i ], [ %inc239.i, %for.body202.i ] %arrayidx207.i = getelementptr inbounds [33 x i8], ptr %call9.i, i64 %i.1267.i, i64 %idxprom206.i - %94 = load i8, ptr %arrayidx207.i, align 1 - %conv208.i = zext i8 %94 to i32 + %92 = load i8, ptr %arrayidx207.i, align 1 + %conv208.i = zext i8 %92 to i32 %arrayidx212.i = getelementptr inbounds [33 x i8], ptr %call9.i, i64 %i.1267.i, i64 %idxprom211.i - %95 = load i8, ptr %arrayidx212.i, align 1 - %conv213.i = zext i8 %95 to i32 + %93 = load i8, ptr %arrayidx212.i, align 1 + %conv213.i = zext i8 %93 to i32 %shl.i143 = shl nuw nsw i32 %conv213.i, 8 %or.i144 = or disjoint i32 %shl.i143, %conv208.i %shr216.i = lshr i32 %or.i144, %rem215.i @@ -974,42 +972,42 @@ for.body202.i: ; preds = %for.body202.i, %for %conv236.i = zext nneg i32 %and7.i218.i to i64 %sub.i220.i = sub nsw i64 0, %conv236.i %not.i221.i = add nsw i64 %conv236.i, -1 - %96 = load <2 x i64>, ptr %Y224.i, align 8 - %97 = insertelement <2 x i64> poison, i64 %sub.i220.i, i64 0 - %98 = shufflevector <2 x i64> %97, <2 x i64> poison, <2 x i32> zeroinitializer - %99 = and <2 x i64> %96, %98 - %100 = load <2 x i64>, ptr %Y.i138, align 8 - %101 = insertelement <2 x i64> poison, i64 %not.i221.i, i64 0 - %102 = shufflevector <2 x i64> %101, <2 x i64> poison, <2 x i32> zeroinitializer - %103 = and <2 x i64> %102, %100 - %104 = xor <2 x i64> %103, %99 - store <2 x i64> %104, ptr %Y.i138, align 8 - %105 = load <2 x i64>, ptr %arrayidx10.i.i, align 8 - %106 = and <2 x i64> %105, %98 - %107 = load <2 x i64>, ptr %arrayidx12.i.i, align 8 - %108 = and <2 x i64> %107, %102 - %109 = xor <2 x i64> %108, %106 - store <2 x i64> %109, ptr %arrayidx12.i.i, align 8 - call void @ecp_nistz256_point_add(ptr noundef nonnull %60, ptr noundef nonnull %60, ptr noundef nonnull %add.ptr16.i) #8 + %94 = load <2 x i64>, ptr %Y224.i, align 8 + %95 = insertelement <2 x i64> poison, i64 %sub.i220.i, i64 0 + %96 = shufflevector <2 x i64> %95, <2 x i64> poison, <2 x i32> zeroinitializer + %97 = and <2 x i64> %94, %96 + %98 = load <2 x i64>, ptr %Y.i138, align 8 + %99 = insertelement <2 x i64> poison, i64 %not.i221.i, i64 0 + %100 = shufflevector <2 x i64> %99, <2 x i64> poison, <2 x i32> zeroinitializer + %101 = and <2 x i64> %100, %98 + %102 = xor <2 x i64> %101, %97 + store <2 x i64> %102, ptr %Y.i138, align 8 + %103 = load <2 x i64>, ptr %arrayidx10.i.i, align 8 + %104 = and <2 x i64> %103, %96 + %105 = load <2 x i64>, ptr %arrayidx12.i.i, align 8 + %106 = and <2 x i64> %105, %100 + %107 = xor <2 x i64> %106, %104 + store <2 x i64> %107, ptr %arrayidx12.i.i, align 8 + call void @ecp_nistz256_point_add(ptr noundef nonnull %59, ptr noundef nonnull %59, ptr noundef nonnull %add.ptr16.i) #8 %inc239.i = add i64 %i.1267.i, 1 %exitcond285.not.i = icmp eq i64 %inc239.i, %num.addr.0183216 br i1 %exitcond285.not.i, label %for.end240.i, label %for.body202.i, !llvm.loop !17 for.end240.i: ; preds = %for.body202.i, %while.body.i %sub241.i = add nsw i32 %idx.0268.i, -5 - call void @ecp_nistz256_point_double(ptr noundef nonnull %60, ptr noundef nonnull %60) #8 - call void @ecp_nistz256_point_double(ptr noundef nonnull %60, ptr noundef nonnull %60) #8 - call void @ecp_nistz256_point_double(ptr noundef nonnull %60, ptr noundef nonnull %60) #8 - call void @ecp_nistz256_point_double(ptr noundef nonnull %60, ptr noundef nonnull %60) #8 - call void @ecp_nistz256_point_double(ptr noundef nonnull %60, ptr noundef nonnull %60) #8 + call void @ecp_nistz256_point_double(ptr noundef nonnull %59, ptr noundef nonnull %59) #8 + call void @ecp_nistz256_point_double(ptr noundef nonnull %59, ptr noundef nonnull %59) #8 + call void @ecp_nistz256_point_double(ptr noundef nonnull %59, ptr noundef nonnull %59) #8 + call void @ecp_nistz256_point_double(ptr noundef nonnull %59, ptr noundef nonnull %59) #8 + call void @ecp_nistz256_point_double(ptr noundef nonnull %59, ptr noundef nonnull %59) #8 %cmp194.i = icmp ugt i32 %sub241.i, 4 br i1 %cmp194.i, label %while.body.i, label %for.body245.i, !llvm.loop !18 for.body245.i: ; preds = %for.end240.i, %for.body245.i %i.2270.i = phi i64 [ %inc272.i, %for.body245.i ], [ 0, %for.end240.i ] %arrayidx246.i = getelementptr inbounds [33 x i8], ptr %call9.i, i64 %i.2270.i - %110 = load i8, ptr %arrayidx246.i, align 1 - %conv248.i = zext i8 %110 to i32 + %108 = load i8, ptr %arrayidx246.i, align 1 + %conv248.i = zext i8 %108 to i32 %shl249.i = shl nuw nsw i32 %conv248.i, 1 %and250.i = and i32 %shl249.i, 62 %shr.i224.i = lshr i32 %and250.i, 5 @@ -1030,23 +1028,23 @@ for.body245.i: ; preds = %for.end240.i, %for. %conv269.i = zext nneg i32 %and7.i235.i to i64 %sub.i237.i = sub nsw i64 0, %conv269.i %not.i238.i = add nsw i64 %conv269.i, -1 - %111 = load <2 x i64>, ptr %Y224.i, align 8 - %112 = insertelement <2 x i64> poison, i64 %sub.i237.i, i64 0 - %113 = shufflevector <2 x i64> %112, <2 x i64> poison, <2 x i32> zeroinitializer - %114 = and <2 x i64> %111, %113 - %115 = load <2 x i64>, ptr %Y.i138, align 8 - %116 = insertelement <2 x i64> poison, i64 %not.i238.i, i64 0 - %117 = shufflevector <2 x i64> %116, <2 x i64> poison, <2 x i32> zeroinitializer - %118 = and <2 x i64> %117, %115 - %119 = xor <2 x i64> %118, %114 - store <2 x i64> %119, ptr %Y.i138, align 8 - %120 = load <2 x i64>, ptr %arrayidx10.i.i, align 8 - %121 = and <2 x i64> %120, %113 - %122 = load <2 x i64>, ptr %arrayidx12.i.i, align 8 - %123 = and <2 x i64> %122, %117 - %124 = xor <2 x i64> %123, %121 - store <2 x i64> %124, ptr %arrayidx12.i.i, align 8 - call void @ecp_nistz256_point_add(ptr noundef nonnull %60, ptr noundef nonnull %60, ptr noundef nonnull %add.ptr16.i) #8 + %109 = load <2 x i64>, ptr %Y224.i, align 8 + %110 = insertelement <2 x i64> poison, i64 %sub.i237.i, i64 0 + %111 = shufflevector <2 x i64> %110, <2 x i64> poison, <2 x i32> zeroinitializer + %112 = and <2 x i64> %109, %111 + %113 = load <2 x i64>, ptr %Y.i138, align 8 + %114 = insertelement <2 x i64> poison, i64 %not.i238.i, i64 0 + %115 = shufflevector <2 x i64> %114, <2 x i64> poison, <2 x i32> zeroinitializer + %116 = and <2 x i64> %115, %113 + %117 = xor <2 x i64> %116, %112 + store <2 x i64> %117, ptr %Y.i138, align 8 + %118 = load <2 x i64>, ptr %arrayidx10.i.i, align 8 + %119 = and <2 x i64> %118, %111 + %120 = load <2 x i64>, ptr %arrayidx12.i.i, align 8 + %121 = and <2 x i64> %120, %115 + %122 = xor <2 x i64> %121, %119 + store <2 x i64> %122, ptr %arrayidx12.i.i, align 8 + call void @ecp_nistz256_point_add(ptr noundef nonnull %59, ptr noundef nonnull %59, ptr noundef nonnull %add.ptr16.i) #8 %inc272.i = add nuw i64 %i.2270.i, 1 %exitcond286.not.i = icmp eq i64 %inc272.i, %num.addr.0183216 br i1 %exitcond286.not.i, label %ecp_nistz256_windowed_mul.exit, label %for.body245.i, !llvm.loop !19 @@ -1073,55 +1071,55 @@ if.end219: ; preds = %ecp_nistz256_window %new_points.0180 = phi ptr [ %new_points.0179219, %ecp_nistz256_windowed_mul.exit ], [ %new_points.0179219, %if.then217 ], [ null, %if.end206 ] %new_scalars.0178 = phi ptr [ %new_scalars.0177221, %ecp_nistz256_windowed_mul.exit ], [ %new_scalars.0177221, %if.then217 ], [ null, %if.end206 ] %X220 = getelementptr inbounds i8, ptr %r, i64 16 - %125 = load ptr, ptr %X220, align 8 - %call223 = call i32 @bn_set_words(ptr noundef %125, ptr noundef nonnull %p, i32 noundef 4) #8 + %123 = load ptr, ptr %X220, align 8 + %call223 = call i32 @bn_set_words(ptr noundef %123, ptr noundef nonnull %p, i32 noundef 4) #8 %tobool224.not = icmp eq i32 %call223, 0 br i1 %tobool224.not, label %err, label %lor.lhs.false225 lor.lhs.false225: ; preds = %if.end219 %Y226 = getelementptr inbounds i8, ptr %r, i64 24 - %126 = load ptr, ptr %Y226, align 8 + %124 = load ptr, ptr %Y226, align 8 %Y227 = getelementptr inbounds i8, ptr %p, i64 32 - %call229 = call i32 @bn_set_words(ptr noundef %126, ptr noundef nonnull %Y227, i32 noundef 4) #8 + %call229 = call i32 @bn_set_words(ptr noundef %124, ptr noundef nonnull %Y227, i32 noundef 4) #8 %tobool230.not = icmp eq i32 %call229, 0 br i1 %tobool230.not, label %err, label %lor.lhs.false231 lor.lhs.false231: ; preds = %lor.lhs.false225 %Z232 = getelementptr inbounds i8, ptr %r, i64 32 - %127 = load ptr, ptr %Z232, align 8 + %125 = load ptr, ptr %Z232, align 8 %Z233 = getelementptr inbounds i8, ptr %p, i64 64 - %call235 = call i32 @bn_set_words(ptr noundef %127, ptr noundef nonnull %Z233, i32 noundef 4) #8 + %call235 = call i32 @bn_set_words(ptr noundef %125, ptr noundef nonnull %Z233, i32 noundef 4) #8 %tobool236.not = icmp eq i32 %call235, 0 br i1 %tobool236.not, label %err, label %if.end238 if.end238: ; preds = %lor.lhs.false231 - %128 = load ptr, ptr %Z232, align 8 - %call.i146 = call ptr @bn_get_words(ptr noundef %128) #8 - %call1.i = call i32 @bn_get_top(ptr noundef %128) #8 + %126 = load ptr, ptr %Z232, align 8 + %call.i146 = call ptr @bn_get_words(ptr noundef %126) #8 + %call1.i = call i32 @bn_get_top(ptr noundef %126) #8 %cmp.i147 = icmp eq i32 %call1.i, 4 br i1 %cmp.i147, label %if.then.i149, label %is_one.exit if.then.i149: ; preds = %if.end238 - %129 = load <4 x i64>, ptr %call.i146, align 8 - %130 = xor <4 x i64> %129, - %131 = call i64 @llvm.vector.reduce.or.v4i64(<4 x i64> %130) - %132 = add i64 %131, -1 - %133 = xor i64 %131, -1 - %not.i.i = and i64 %132, %133 + %127 = load <4 x i64>, ptr %call.i146, align 8 + %128 = xor <4 x i64> %127, + %129 = call i64 @llvm.vector.reduce.or.v4i64(<4 x i64> %128) + %130 = add i64 %129, -1 + %131 = xor i64 %129, -1 + %not.i.i = and i64 %130, %131 %shr.i.i = lshr i64 %not.i.i, 63 - %134 = trunc i64 %shr.i.i to i32 + %132 = trunc i64 %shr.i.i to i32 br label %is_one.exit is_one.exit: ; preds = %if.end238, %if.then.i149 - %res.0.i = phi i32 [ %134, %if.then.i149 ], [ 0, %if.end238 ] + %res.0.i = phi i32 [ %132, %if.then.i149 ], [ 0, %if.end238 ] %Z_is_one = getelementptr inbounds i8, ptr %r, i64 40 store i32 %res.0.i, ptr %Z_is_one, align 8 br label %err -err.critedge: ; preds = %if.then24.i, %err.sink.split.i, %lor.lhs.false11.i, %lor.lhs.false6.i, %lor.lhs.false.i, %59 - %p_str.0.i.ph = phi ptr [ %call9.i, %err.sink.split.i ], [ %call9.i, %lor.lhs.false11.i ], [ null, %lor.lhs.false6.i ], [ null, %lor.lhs.false.i ], [ null, %59 ], [ %call9.i, %if.then24.i ] - %scalars.0.i.ph = phi ptr [ %call13.i, %err.sink.split.i ], [ null, %lor.lhs.false11.i ], [ null, %lor.lhs.false6.i ], [ null, %lor.lhs.false.i ], [ null, %59 ], [ %call13.i, %if.then24.i ] - %table_storage.0.i.ph = phi ptr [ %call.i137, %err.sink.split.i ], [ %call.i137, %lor.lhs.false11.i ], [ %call.i137, %lor.lhs.false6.i ], [ null, %lor.lhs.false.i ], [ null, %59 ], [ %call.i137, %if.then24.i ] +err.critedge: ; preds = %if.then24.i, %err.sink.split.i, %lor.lhs.false11.i, %lor.lhs.false6.i, %lor.lhs.false.i, %58 + %p_str.0.i.ph = phi ptr [ %call9.i, %err.sink.split.i ], [ %call9.i, %lor.lhs.false11.i ], [ null, %lor.lhs.false6.i ], [ null, %lor.lhs.false.i ], [ null, %58 ], [ %call9.i, %if.then24.i ] + %scalars.0.i.ph = phi ptr [ %call13.i, %err.sink.split.i ], [ null, %lor.lhs.false11.i ], [ null, %lor.lhs.false6.i ], [ null, %lor.lhs.false.i ], [ null, %58 ], [ %call13.i, %if.then24.i ] + %table_storage.0.i.ph = phi ptr [ %call.i137, %err.sink.split.i ], [ %call.i137, %lor.lhs.false11.i ], [ %call.i137, %lor.lhs.false6.i ], [ null, %lor.lhs.false.i ], [ null, %58 ], [ %call.i137, %if.then24.i ] call void @CRYPTO_free(ptr noundef %table_storage.0.i.ph, ptr noundef nonnull @.str, i32 noundef 772) #8 call void @CRYPTO_free(ptr noundef %p_str.0.i.ph, ptr noundef nonnull @.str, i32 noundef 773) #8 call void @CRYPTO_free(ptr noundef %scalars.0.i.ph, ptr noundef nonnull @.str, i32 noundef 774) #8 diff --git a/bench/openssl/optimized/libcrypto-lib-params_dup.ll b/bench/openssl/optimized/libcrypto-lib-params_dup.ll index 9171f89d730..dba746de332 100644 --- a/bench/openssl/optimized/libcrypto-lib-params_dup.ll +++ b/bench/openssl/optimized/libcrypto-lib-params_dup.ll @@ -88,20 +88,20 @@ ossl_param_dup.exit.loopexit: ; preds = %if.end20.us.i %blocks.i.phi.trans.insert = getelementptr inbounds i8, ptr %buf, i64 16 %.pre = load i64, ptr %blocks.i.phi.trans.insert, align 16 %7 = zext nneg i32 %inc39.us.i to i64 - %8 = mul nuw nsw i64 %7, 5 + %8 = mul nuw nsw i64 %7, 40 + %9 = shl i64 %.pre, 3 br label %ossl_param_dup.exit ossl_param_dup.exit: ; preds = %ossl_param_dup.exit.loopexit, %if.end - %9 = phi i64 [ 0, %if.end ], [ %.pre, %ossl_param_dup.exit.loopexit ] - %param_count.1 = phi i64 [ 5, %if.end ], [ %8, %ossl_param_dup.exit.loopexit ] - %add.i = add i64 %param_count.1, %9 - %mul.i = shl i64 %add.i, 3 - %call1.i = tail call noalias ptr @CRYPTO_zalloc(i64 noundef %mul.i, ptr noundef nonnull @.str, i32 noundef 39) #7 + %add.i20 = phi i64 [ 0, %if.end ], [ %9, %ossl_param_dup.exit.loopexit ] + %param_count.1 = phi i64 [ 40, %if.end ], [ %8, %ossl_param_dup.exit.loopexit ] + %div1.i21 = add i64 %param_count.1, %add.i20 + %call1.i = tail call noalias ptr @CRYPTO_zalloc(i64 noundef %div1.i21, ptr noundef nonnull @.str, i32 noundef 39) #7 %cmp.i = icmp eq ptr %call1.i, null br i1 %cmp.i, label %return, label %if.end5 if.end5: ; preds = %ossl_param_dup.exit - %add.ptr.i = getelementptr inbounds %union.OSSL_PARAM_ALIGNED_BLOCK, ptr %call1.i, i64 %param_count.1 + %add.ptr.i = getelementptr inbounds i8, ptr %call1.i, i64 %param_count.1 %cur.i = getelementptr inbounds i8, ptr %buf, i64 8 store ptr %add.ptr.i, ptr %cur.i, align 8 %blocks = getelementptr inbounds i8, ptr %buf, i64 48 @@ -271,9 +271,9 @@ if.end22: ; preds = %for.body16, %for.co if.end28: ; preds = %if.end22 call void @qsort(ptr noundef nonnull %list1, i64 noundef %list1_sz.1, i64 noundef 8, ptr noundef nonnull @compare_params) #7 call void @qsort(ptr noundef nonnull %list2, i64 noundef %list2_sz.1, i64 noundef 8, ptr noundef nonnull @compare_params) #7 - %add = add nuw i64 %list2_sz.1, %list1_sz.1 - %7 = mul i64 %add, 40 - %mul = add i64 %7, 40 + %add = add nuw nsw i64 %list2_sz.1, %list1_sz.1 + %7 = mul nsw i64 %add, 40 + %mul = add nuw nsw i64 %7, 40 %call = call noalias ptr @CRYPTO_zalloc(i64 noundef %mul, ptr noundef nonnull @.str, i32 noundef 184) #7 %cmp31 = icmp eq ptr %call, null br i1 %cmp31, label %return, label %while.body.preheader diff --git a/bench/openssl/optimized/libcrypto-shlib-ecp_nistz256.ll b/bench/openssl/optimized/libcrypto-shlib-ecp_nistz256.ll index b8f9eef3c37..8c7bd9f295f 100644 --- a/bench/openssl/optimized/libcrypto-shlib-ecp_nistz256.ll +++ b/bench/openssl/optimized/libcrypto-shlib-ecp_nistz256.ll @@ -472,57 +472,56 @@ for.body91.preheader: ; preds = %if.end45, %for.cond for.body: ; preds = %if.end45, %for.body %indvars.iv = phi i64 [ %indvars.iv.next, %for.body ], [ 0, %if.end45 ] %call48 = call ptr @bn_get_words(ptr noundef nonnull %scalar.addr.0) #8 - %12 = lshr exact i64 %indvars.iv, 3 - %arrayidx49 = getelementptr inbounds i64, ptr %call48, i64 %12 - %13 = load i64, ptr %arrayidx49, align 8 - %conv = trunc i64 %13 to i8 + %arrayidx49 = getelementptr inbounds i8, ptr %call48, i64 %indvars.iv + %12 = load i64, ptr %arrayidx49, align 8 + %conv = trunc i64 %12 to i8 %arrayidx52 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %indvars.iv store i8 %conv, ptr %arrayidx52, align 8 - %shr = lshr i64 %13, 8 + %shr = lshr i64 %12, 8 %conv53 = trunc i64 %shr to i8 - %14 = or disjoint i64 %indvars.iv, 1 - %arrayidx56 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %14 + %13 = or disjoint i64 %indvars.iv, 1 + %arrayidx56 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %13 store i8 %conv53, ptr %arrayidx56, align 1 - %shr57 = lshr i64 %13, 16 + %shr57 = lshr i64 %12, 16 %conv58 = trunc i64 %shr57 to i8 - %15 = or disjoint i64 %indvars.iv, 2 - %arrayidx61 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %15 + %14 = or disjoint i64 %indvars.iv, 2 + %arrayidx61 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %14 store i8 %conv58, ptr %arrayidx61, align 2 - %shr62 = lshr i64 %13, 24 + %shr62 = lshr i64 %12, 24 %conv63 = trunc i64 %shr62 to i8 - %16 = or disjoint i64 %indvars.iv, 3 - %arrayidx66 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %16 + %15 = or disjoint i64 %indvars.iv, 3 + %arrayidx66 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %15 store i8 %conv63, ptr %arrayidx66, align 1 - %shr67 = lshr i64 %13, 32 + %shr67 = lshr i64 %12, 32 %conv68 = trunc i64 %shr67 to i8 - %17 = or disjoint i64 %indvars.iv, 4 - %arrayidx71 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %17 + %16 = or disjoint i64 %indvars.iv, 4 + %arrayidx71 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %16 store i8 %conv68, ptr %arrayidx71, align 4 - %shr72 = lshr i64 %13, 40 + %shr72 = lshr i64 %12, 40 %conv73 = trunc i64 %shr72 to i8 - %18 = or disjoint i64 %indvars.iv, 5 - %arrayidx76 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %18 + %17 = or disjoint i64 %indvars.iv, 5 + %arrayidx76 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %17 store i8 %conv73, ptr %arrayidx76, align 1 - %shr77 = lshr i64 %13, 48 + %shr77 = lshr i64 %12, 48 %conv78 = trunc i64 %shr77 to i8 - %19 = or disjoint i64 %indvars.iv, 6 - %arrayidx81 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %19 + %18 = or disjoint i64 %indvars.iv, 6 + %arrayidx81 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %18 store i8 %conv78, ptr %arrayidx81, align 2 - %shr82 = lshr i64 %13, 56 + %shr82 = lshr i64 %12, 56 %conv83 = trunc i64 %shr82 to i8 - %20 = or disjoint i64 %indvars.iv, 7 - %arrayidx86 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %20 + %19 = or disjoint i64 %indvars.iv, 7 + %arrayidx86 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %19 store i8 %conv83, ptr %arrayidx86, align 1 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 8 %call46 = call i32 @bn_get_top(ptr noundef nonnull %scalar.addr.0) #8 %mul = shl nsw i32 %call46, 3 - %21 = sext i32 %mul to i64 - %cmp47 = icmp slt i64 %indvars.iv.next, %21 + %20 = sext i32 %mul to i64 + %cmp47 = icmp slt i64 %indvars.iv.next, %20 br i1 %cmp47, label %for.body, label %for.cond88.preheader, !llvm.loop !13 for.end95: ; preds = %for.body91.preheader, %for.cond88.preheader - %22 = load i8, ptr %p_str, align 16 - %conv97 = zext i8 %22 to i32 + %21 = load i8, ptr %p_str, align 16 + %conv97 = zext i8 %21 to i32 %shl = shl nuw nsw i32 %conv97, 1 %and = and i32 %shl, 254 %shr.i = lshr i32 %and, 7 @@ -544,53 +543,53 @@ for.end95: ; preds = %for.body91.preheade %conv110 = zext nneg i32 %and7.i to i64 %sub.i98 = sub nsw i64 0, %conv110 %not.i99 = add nsw i64 %conv110, -1 - %23 = load i64, ptr %Z, align 32 - %and.i100 = and i64 %23, %sub.i98 - %24 = load i64, ptr %Y, align 32 - %and2.i = and i64 %not.i99, %24 + %22 = load i64, ptr %Z, align 32 + %and.i100 = and i64 %22, %sub.i98 + %23 = load i64, ptr %Y, align 32 + %and2.i = and i64 %not.i99, %23 %xor.i = xor i64 %and2.i, %and.i100 store i64 %xor.i, ptr %Y, align 32 %arrayidx4.i = getelementptr inbounds i8, ptr %p, i64 72 - %25 = load i64, ptr %arrayidx4.i, align 8 - %and5.i = and i64 %25, %sub.i98 + %24 = load i64, ptr %arrayidx4.i, align 8 + %and5.i = and i64 %24, %sub.i98 %arrayidx6.i = getelementptr inbounds i8, ptr %p, i64 40 - %26 = load i64, ptr %arrayidx6.i, align 8 - %and7.i101 = and i64 %26, %not.i99 + %25 = load i64, ptr %arrayidx6.i, align 8 + %and7.i101 = and i64 %25, %not.i99 %xor8.i = xor i64 %and7.i101, %and5.i store i64 %xor8.i, ptr %arrayidx6.i, align 8 %arrayidx10.i = getelementptr inbounds i8, ptr %p, i64 80 - %27 = load i64, ptr %arrayidx10.i, align 16 - %and11.i = and i64 %27, %sub.i98 + %26 = load i64, ptr %arrayidx10.i, align 16 + %and11.i = and i64 %26, %sub.i98 %arrayidx12.i = getelementptr inbounds i8, ptr %p, i64 48 - %28 = load i64, ptr %arrayidx12.i, align 16 - %and13.i = and i64 %28, %not.i99 + %27 = load i64, ptr %arrayidx12.i, align 16 + %and13.i = and i64 %27, %not.i99 %xor14.i = xor i64 %and13.i, %and11.i store i64 %xor14.i, ptr %arrayidx12.i, align 16 %arrayidx16.i = getelementptr inbounds i8, ptr %p, i64 88 - %29 = load i64, ptr %arrayidx16.i, align 8 - %and17.i = and i64 %29, %sub.i98 + %28 = load i64, ptr %arrayidx16.i, align 8 + %and17.i = and i64 %28, %sub.i98 %arrayidx18.i = getelementptr inbounds i8, ptr %p, i64 56 - %30 = load i64, ptr %arrayidx18.i, align 8 - %and19.i = and i64 %30, %not.i99 + %29 = load i64, ptr %arrayidx18.i, align 8 + %and19.i = and i64 %29, %not.i99 %xor20.i = xor i64 %and19.i, %and17.i store i64 %xor20.i, ptr %arrayidx18.i, align 8 - %31 = load i64, ptr %p, align 32 + %30 = load i64, ptr %p, align 32 %arrayidx113 = getelementptr inbounds i8, ptr %p, i64 8 - %32 = load i64, ptr %arrayidx113, align 8 + %31 = load i64, ptr %arrayidx113, align 8 %arrayidx115 = getelementptr inbounds i8, ptr %p, i64 16 - %33 = load i64, ptr %arrayidx115, align 16 + %32 = load i64, ptr %arrayidx115, align 16 %arrayidx118 = getelementptr inbounds i8, ptr %p, i64 24 - %34 = load i64, ptr %arrayidx118, align 8 - %35 = or i64 %31, %32 + %33 = load i64, ptr %arrayidx118, align 8 + %34 = or i64 %30, %31 + %35 = or i64 %34, %32 %36 = or i64 %35, %33 - %37 = or i64 %36, %34 - %38 = or i64 %37, %xor8.i - %39 = or i64 %38, %xor14.i - %40 = or i64 %39, %xor20.i - %or131 = or i64 %40, %xor.i - %41 = add i64 %or131, -1 - %42 = xor i64 %or131, -1 - %not.i102 = and i64 %41, %42 + %37 = or i64 %36, %xor8.i + %38 = or i64 %37, %xor14.i + %39 = or i64 %38, %xor20.i + %or131 = or i64 %39, %xor.i + %40 = add i64 %or131, -1 + %41 = xor i64 %or131, -1 + %not.i102 = and i64 %40, %41 %shr.i103 = lshr i64 %not.i102, 63 %not = add nsw i64 %shr.i103, -1 %and133 = and i64 %not, 1 @@ -613,13 +612,13 @@ for.body148: ; preds = %for.end95, %for.bod %div15097 = lshr i32 %sub149, 3 %idxprom151 = zext nneg i32 %div15097 to i64 %arrayidx152 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %idxprom151 - %43 = load i8, ptr %arrayidx152, align 1 - %conv153 = zext i8 %43 to i32 + %42 = load i8, ptr %arrayidx152, align 1 + %conv153 = zext i8 %42 to i32 %add154 = add nuw nsw i32 %div15097, 1 %idxprom155 = zext nneg i32 %add154 to i64 %arrayidx156 = getelementptr inbounds [33 x i8], ptr %p_str, i64 0, i64 %idxprom155 - %44 = load i8, ptr %arrayidx156, align 1 - %conv157 = zext i8 %44 to i32 + %43 = load i8, ptr %arrayidx156, align 1 + %conv157 = zext i8 %43 to i32 %shl158 = shl nuw nsw i32 %conv157, 8 %or159 = or disjoint i32 %shl158, %conv153 %rem = and i32 %sub149, 7 @@ -644,22 +643,22 @@ for.body148: ; preds = %for.end95, %for.bod %conv178 = zext nneg i32 %and7.i115 to i64 %sub.i117 = sub nsw i64 0, %conv178 %not.i118 = add nsw i64 %conv178, -1 - %45 = load <2 x i64>, ptr %Z169, align 32 - %46 = insertelement <2 x i64> poison, i64 %sub.i117, i64 0 - %47 = shufflevector <2 x i64> %46, <2 x i64> poison, <2 x i32> zeroinitializer - %48 = and <2 x i64> %45, %47 - %49 = load <2 x i64>, ptr %Y171, align 32 - %50 = insertelement <2 x i64> poison, i64 %not.i118, i64 0 - %51 = shufflevector <2 x i64> %50, <2 x i64> poison, <2 x i32> zeroinitializer - %52 = and <2 x i64> %51, %49 - %53 = xor <2 x i64> %52, %48 - store <2 x i64> %53, ptr %Y171, align 32 - %54 = load <2 x i64>, ptr %arrayidx10.i127, align 16 - %55 = and <2 x i64> %54, %47 - %56 = load <2 x i64>, ptr %arrayidx12.i129, align 16 - %57 = and <2 x i64> %56, %51 - %58 = xor <2 x i64> %57, %55 - store <2 x i64> %58, ptr %arrayidx12.i129, align 16 + %44 = load <2 x i64>, ptr %Z169, align 32 + %45 = insertelement <2 x i64> poison, i64 %sub.i117, i64 0 + %46 = shufflevector <2 x i64> %45, <2 x i64> poison, <2 x i32> zeroinitializer + %47 = and <2 x i64> %44, %46 + %48 = load <2 x i64>, ptr %Y171, align 32 + %49 = insertelement <2 x i64> poison, i64 %not.i118, i64 0 + %50 = shufflevector <2 x i64> %49, <2 x i64> poison, <2 x i32> zeroinitializer + %51 = and <2 x i64> %50, %48 + %52 = xor <2 x i64> %51, %47 + store <2 x i64> %52, ptr %Y171, align 32 + %53 = load <2 x i64>, ptr %arrayidx10.i127, align 16 + %54 = and <2 x i64> %53, %46 + %55 = load <2 x i64>, ptr %arrayidx12.i129, align 16 + %56 = and <2 x i64> %55, %50 + %57 = xor <2 x i64> %56, %54 + store <2 x i64> %57, ptr %arrayidx12.i129, align 16 call void @ecp_nistz256_point_add_affine(ptr noundef nonnull %p, ptr noundef nonnull %p, ptr noundef nonnull %t) #8 %indvars.iv.next205 = add nuw nsw i64 %indvars.iv204, 1 %exitcond.not = icmp eq i64 %indvars.iv.next205, 37 @@ -684,7 +683,7 @@ if.then208.thread: ; preds = %if.end193 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %call196, ptr align 8 %points, i64 %mul201, i1 false) %arrayidx204 = getelementptr inbounds ptr, ptr %call196, i64 %num store ptr %call, ptr %arrayidx204, align 8 - br label %59 + br label %58 if.end206: ; preds = %for.body148, %if.end %tobool207.not = icmp eq i64 %num, 0 @@ -692,24 +691,24 @@ if.end206: ; preds = %for.body148, %if.en if.then208: ; preds = %if.end206 %spec.select224 = select i1 %tobool.not, ptr %t, ptr %p - br label %59 + br label %58 -59: ; preds = %if.then208, %if.then208.thread +58: ; preds = %if.then208, %if.then208.thread %tobool209.not168176223 = phi i1 [ false, %if.then208.thread ], [ %tobool.not, %if.then208 ] %new_scalars.0177221 = phi ptr [ %call189, %if.then208.thread ], [ null, %if.then208 ] %new_points.0179219 = phi ptr [ %call196, %if.then208.thread ], [ null, %if.then208 ] %scalars.addr.0181218 = phi ptr [ %call189, %if.then208.thread ], [ %scalars, %if.then208 ] %points.addr.0182217 = phi ptr [ %call196, %if.then208.thread ], [ %points, %if.then208 ] %num.addr.0183216 = phi i64 [ %add, %if.then208.thread ], [ %num, %if.then208 ] - %60 = phi ptr [ %p, %if.then208.thread ], [ %spec.select224, %if.then208 ] + %59 = phi ptr [ %p, %if.then208.thread ], [ %spec.select224, %if.then208 ] %mul.i = shl i64 %num.addr.0183216, 4 %add.i = or disjoint i64 %mul.i, 6 %cmp.i = icmp ugt i64 %add.i, 22369621 br i1 %cmp.i, label %err.critedge, label %lor.lhs.false.i -lor.lhs.false.i: ; preds = %59 - %61 = mul nsw i64 %num.addr.0183216, 1536 - %add4.i = add nsw i64 %61, 544 +lor.lhs.false.i: ; preds = %58 + %60 = mul nsw i64 %num.addr.0183216, 1536 + %add4.i = add nsw i64 %60, 544 %call.i137 = call noalias ptr @CRYPTO_malloc(i64 noundef %add4.i, ptr noundef nonnull @.str, i32 noundef 627) #8 %cmp5.i = icmp eq ptr %call.i137, null br i1 %cmp5.i, label %err.critedge, label %lor.lhs.false6.i @@ -728,8 +727,8 @@ lor.lhs.false11.i: ; preds = %lor.lhs.false6.i for.body.lr.ph.i: ; preds = %lor.lhs.false11.i %add.ptr.i = getelementptr inbounds i8, ptr %call.i137, i64 64 - %62 = ptrtoint ptr %call.i137 to i64 - %rem.i = and i64 %62, 63 + %61 = ptrtoint ptr %call.i137 to i64 + %rem.i = and i64 %61, 63 %idx.neg.i = sub nsw i64 0, %rem.i %add.ptr15.i = getelementptr inbounds i8, ptr %add.ptr.i, i64 %idx.neg.i %add.ptr16.i = getelementptr inbounds [16 x %struct.P256_POINT], ptr %add.ptr15.i, i64 %num.addr.0183216 @@ -744,18 +743,18 @@ for.body.lr.ph.i: ; preds = %lor.lhs.false11.i for.body.i: ; preds = %if.end123.i, %for.body.lr.ph.i %i.0265.i = phi i64 [ 0, %for.body.lr.ph.i ], [ %inc178.i, %if.end123.i ] - %63 = mul i64 %i.0265.i, 33 - %scevgep.i = getelementptr i8, ptr %call9.i, i64 %63 + %62 = mul i64 %i.0265.i, 33 + %scevgep.i = getelementptr i8, ptr %call9.i, i64 %62 %arrayidx.i = getelementptr inbounds [16 x %struct.P256_POINT], ptr %add.ptr15.i, i64 %i.0265.i %arrayidx18.i140 = getelementptr inbounds ptr, ptr %scalars.addr.0181218, i64 %i.0265.i - %64 = load ptr, ptr %arrayidx18.i140, align 8 - %call19.i = call i32 @BN_num_bits(ptr noundef %64) #8 + %63 = load ptr, ptr %arrayidx18.i140, align 8 + %call19.i = call i32 @BN_num_bits(ptr noundef %63) #8 %cmp20.i = icmp sgt i32 %call19.i, 256 br i1 %cmp20.i, label %if.then24.i, label %lor.lhs.false21.i lor.lhs.false21.i: ; preds = %for.body.i - %65 = load ptr, ptr %arrayidx18.i140, align 8 - %call23.i = call i32 @BN_is_negative(ptr noundef %65) #8 + %64 = load ptr, ptr %arrayidx18.i140, align 8 + %call23.i = call i32 @BN_is_negative(ptr noundef %64) #8 %tobool.not.i141 = icmp eq i32 %call23.i, 0 br i1 %tobool.not.i141, label %if.else.i, label %if.then24.i @@ -765,18 +764,18 @@ if.then24.i: ; preds = %lor.lhs.false21.i, br i1 %cmp26.i, label %err.critedge, label %if.end28.i if.end28.i: ; preds = %if.then24.i - %66 = load ptr, ptr %arrayidx18.i140, align 8 - %67 = load ptr, ptr %order.i, align 8 - %call30.i = call i32 @BN_nnmod(ptr noundef nonnull %call25.i, ptr noundef %66, ptr noundef %67, ptr noundef %ctx) #8 + %65 = load ptr, ptr %arrayidx18.i140, align 8 + %66 = load ptr, ptr %order.i, align 8 + %call30.i = call i32 @BN_nnmod(ptr noundef nonnull %call25.i, ptr noundef %65, ptr noundef %66, ptr noundef %ctx) #8 %tobool31.not.i = icmp eq i32 %call30.i, 0 br i1 %tobool31.not.i, label %err.sink.split.i, label %if.end37.i if.else.i: ; preds = %lor.lhs.false21.i - %68 = load ptr, ptr %arrayidx18.i140, align 8 + %67 = load ptr, ptr %arrayidx18.i140, align 8 br label %if.end37.i if.end37.i: ; preds = %if.else.i, %if.end28.i - %.sink.i = phi ptr [ %68, %if.else.i ], [ %call25.i, %if.end28.i ] + %.sink.i = phi ptr [ %67, %if.else.i ], [ %call25.i, %if.end28.i ] %arrayidx36.i = getelementptr inbounds ptr, ptr %call13.i, i64 %i.0265.i store ptr %.sink.i, ptr %arrayidx36.i, align 8 %call40258.i = call i32 @bn_get_top(ptr noundef %.sink.i) #8 @@ -784,95 +783,94 @@ if.end37.i: ; preds = %if.else.i, %if.end2 br i1 %cmp42260.i, label %for.body43.i, label %for.body96.preheader.i for.cond93.preheader.i: ; preds = %for.body43.i - %69 = trunc i64 %indvars.iv.next.i to i32 - %cmp94262.i = icmp ult i32 %69, 33 + %68 = trunc i64 %indvars.iv.next.i to i32 + %cmp94262.i = icmp ult i32 %68, 33 br i1 %cmp94262.i, label %for.body96.preheader.i, label %for.end101.i for.body96.preheader.i: ; preds = %for.cond93.preheader.i, %if.end37.i - %j.0.lcssa289.i = phi i32 [ %69, %for.cond93.preheader.i ], [ 0, %if.end37.i ] - %70 = zext nneg i32 %j.0.lcssa289.i to i64 - %scevgep281.i = getelementptr i8, ptr %scevgep.i, i64 %70 - %71 = sub nuw nsw i32 32, %j.0.lcssa289.i - %72 = zext nneg i32 %71 to i64 - %73 = add nuw nsw i64 %72, 1 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %scevgep281.i, i8 0, i64 %73, i1 false) + %j.0.lcssa289.i = phi i32 [ %68, %for.cond93.preheader.i ], [ 0, %if.end37.i ] + %69 = zext nneg i32 %j.0.lcssa289.i to i64 + %scevgep281.i = getelementptr i8, ptr %scevgep.i, i64 %69 + %70 = sub nuw nsw i32 32, %j.0.lcssa289.i + %71 = zext nneg i32 %70 to i64 + %72 = add nuw nsw i64 %71, 1 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %scevgep281.i, i8 0, i64 %72, i1 false) br label %for.end101.i for.body43.i: ; preds = %if.end37.i, %for.body43.i - %74 = phi ptr [ %84, %for.body43.i ], [ %.sink.i, %if.end37.i ] + %73 = phi ptr [ %82, %for.body43.i ], [ %.sink.i, %if.end37.i ] %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %for.body43.i ], [ 0, %if.end37.i ] - %call45.i = call ptr @bn_get_words(ptr noundef %74) #8 - %75 = lshr exact i64 %indvars.iv.i, 3 - %arrayidx46.i = getelementptr inbounds i64, ptr %call45.i, i64 %75 - %76 = load i64, ptr %arrayidx46.i, align 8 - %conv.i = trunc i64 %76 to i8 + %call45.i = call ptr @bn_get_words(ptr noundef %73) #8 + %arrayidx46.i = getelementptr inbounds i8, ptr %call45.i, i64 %indvars.iv.i + %74 = load i64, ptr %arrayidx46.i, align 8 + %conv.i = trunc i64 %74 to i8 %arrayidx50.i = getelementptr inbounds [33 x i8], ptr %call9.i, i64 %i.0265.i, i64 %indvars.iv.i store i8 %conv.i, ptr %arrayidx50.i, align 1 - %shr.i145 = lshr i64 %76, 8 + %shr.i145 = lshr i64 %74, 8 %conv51.i = trunc i64 %shr.i145 to i8 - %77 = or disjoint i64 %indvars.iv.i, 1 - %arrayidx55.i = getelementptr inbounds [33 x i8], ptr %call9.i, i64 %i.0265.i, i64 %77 + %75 = or disjoint i64 %indvars.iv.i, 1 + %arrayidx55.i = getelementptr inbounds [33 x i8], ptr %call9.i, i64 %i.0265.i, i64 %75 store i8 %conv51.i, ptr %arrayidx55.i, align 1 - %shr56.i = lshr i64 %76, 16 + %shr56.i = lshr i64 %74, 16 %conv57.i = trunc i64 %shr56.i to i8 - %78 = or disjoint i64 %indvars.iv.i, 2 - %arrayidx61.i = getelementptr inbounds [33 x i8], ptr %call9.i, i64 %i.0265.i, i64 %78 + %76 = or disjoint i64 %indvars.iv.i, 2 + %arrayidx61.i = getelementptr inbounds [33 x i8], ptr %call9.i, i64 %i.0265.i, i64 %76 store i8 %conv57.i, ptr %arrayidx61.i, align 1 - %shr62.i = lshr i64 %76, 24 + %shr62.i = lshr i64 %74, 24 %conv63.i = trunc i64 %shr62.i to i8 - %79 = or disjoint i64 %indvars.iv.i, 3 - %arrayidx67.i = getelementptr inbounds [33 x i8], ptr %call9.i, i64 %i.0265.i, i64 %79 + %77 = or disjoint i64 %indvars.iv.i, 3 + %arrayidx67.i = getelementptr inbounds [33 x i8], ptr %call9.i, i64 %i.0265.i, i64 %77 store i8 %conv63.i, ptr %arrayidx67.i, align 1 - %shr68.i = lshr i64 %76, 32 + %shr68.i = lshr i64 %74, 32 %conv69.i = trunc i64 %shr68.i to i8 - %80 = or disjoint i64 %indvars.iv.i, 4 - %arrayidx73.i = getelementptr inbounds [33 x i8], ptr %call9.i, i64 %i.0265.i, i64 %80 + %78 = or disjoint i64 %indvars.iv.i, 4 + %arrayidx73.i = getelementptr inbounds [33 x i8], ptr %call9.i, i64 %i.0265.i, i64 %78 store i8 %conv69.i, ptr %arrayidx73.i, align 1 - %shr74.i = lshr i64 %76, 40 + %shr74.i = lshr i64 %74, 40 %conv75.i = trunc i64 %shr74.i to i8 - %81 = or disjoint i64 %indvars.iv.i, 5 - %arrayidx79.i = getelementptr inbounds [33 x i8], ptr %call9.i, i64 %i.0265.i, i64 %81 + %79 = or disjoint i64 %indvars.iv.i, 5 + %arrayidx79.i = getelementptr inbounds [33 x i8], ptr %call9.i, i64 %i.0265.i, i64 %79 store i8 %conv75.i, ptr %arrayidx79.i, align 1 - %shr80.i = lshr i64 %76, 48 + %shr80.i = lshr i64 %74, 48 %conv81.i = trunc i64 %shr80.i to i8 - %82 = or disjoint i64 %indvars.iv.i, 6 - %arrayidx85.i = getelementptr inbounds [33 x i8], ptr %call9.i, i64 %i.0265.i, i64 %82 + %80 = or disjoint i64 %indvars.iv.i, 6 + %arrayidx85.i = getelementptr inbounds [33 x i8], ptr %call9.i, i64 %i.0265.i, i64 %80 store i8 %conv81.i, ptr %arrayidx85.i, align 1 - %shr86.i = lshr i64 %76, 56 + %shr86.i = lshr i64 %74, 56 %conv87.i = trunc i64 %shr86.i to i8 - %83 = or disjoint i64 %indvars.iv.i, 7 - %arrayidx91.i = getelementptr inbounds [33 x i8], ptr %call9.i, i64 %i.0265.i, i64 %83 + %81 = or disjoint i64 %indvars.iv.i, 7 + %arrayidx91.i = getelementptr inbounds [33 x i8], ptr %call9.i, i64 %i.0265.i, i64 %81 store i8 %conv87.i, ptr %arrayidx91.i, align 1 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 8 - %84 = load ptr, ptr %arrayidx36.i, align 8 - %call40.i = call i32 @bn_get_top(ptr noundef %84) #8 + %82 = load ptr, ptr %arrayidx36.i, align 8 + %call40.i = call i32 @bn_get_top(ptr noundef %82) #8 %mul41.i = shl nsw i32 %call40.i, 3 - %85 = sext i32 %mul41.i to i64 - %cmp42.i = icmp slt i64 %indvars.iv.next.i, %85 + %83 = sext i32 %mul41.i to i64 + %cmp42.i = icmp slt i64 %indvars.iv.next.i, %83 br i1 %cmp42.i, label %for.body43.i, label %for.cond93.preheader.i, !llvm.loop !15 for.end101.i: ; preds = %for.body96.preheader.i, %for.cond93.preheader.i %arrayidx104.i = getelementptr inbounds ptr, ptr %points.addr.0182217, i64 %i.0265.i - %86 = load ptr, ptr %arrayidx104.i, align 8 - %X105.i = getelementptr inbounds i8, ptr %86, i64 16 - %87 = load ptr, ptr %X105.i, align 8 - %call.i.i = call i32 @bn_copy_words(ptr noundef nonnull %add.ptr16.i, ptr noundef %87, i32 noundef 4) #8 + %84 = load ptr, ptr %arrayidx104.i, align 8 + %X105.i = getelementptr inbounds i8, ptr %84, i64 16 + %85 = load ptr, ptr %X105.i, align 8 + %call.i.i = call i32 @bn_copy_words(ptr noundef nonnull %add.ptr16.i, ptr noundef %85, i32 noundef 4) #8 %tobool107.not.i = icmp eq i32 %call.i.i, 0 br i1 %tobool107.not.i, label %err.sink.split.i, label %lor.lhs.false108.i lor.lhs.false108.i: ; preds = %for.end101.i - %88 = load ptr, ptr %arrayidx104.i, align 8 - %Y112.i = getelementptr inbounds i8, ptr %88, i64 24 - %89 = load ptr, ptr %Y112.i, align 8 - %call.i205.i = call i32 @bn_copy_words(ptr noundef nonnull %Y.i138, ptr noundef %89, i32 noundef 4) #8 + %86 = load ptr, ptr %arrayidx104.i, align 8 + %Y112.i = getelementptr inbounds i8, ptr %86, i64 24 + %87 = load ptr, ptr %Y112.i, align 8 + %call.i205.i = call i32 @bn_copy_words(ptr noundef nonnull %Y.i138, ptr noundef %87, i32 noundef 4) #8 %tobool114.not.i = icmp eq i32 %call.i205.i, 0 br i1 %tobool114.not.i, label %err.sink.split.i, label %lor.lhs.false115.i lor.lhs.false115.i: ; preds = %lor.lhs.false108.i - %90 = load ptr, ptr %arrayidx104.i, align 8 - %Z119.i = getelementptr inbounds i8, ptr %90, i64 32 - %91 = load ptr, ptr %Z119.i, align 8 - %call.i206.i = call i32 @bn_copy_words(ptr noundef nonnull %Z.i139, ptr noundef %91, i32 noundef 4) #8 + %88 = load ptr, ptr %arrayidx104.i, align 8 + %Z119.i = getelementptr inbounds i8, ptr %88, i64 32 + %89 = load ptr, ptr %Z119.i, align 8 + %call.i206.i = call i32 @bn_copy_words(ptr noundef nonnull %Z.i139, ptr noundef %89, i32 noundef 4) #8 %tobool121.not.i = icmp eq i32 %call.i206.i, 0 br i1 %tobool121.not.i, label %err.sink.split.i, label %if.end123.i @@ -914,15 +912,15 @@ if.end123.i: ; preds = %lor.lhs.false115.i for.end179.i: ; preds = %if.end123.i %arrayidx183.i = getelementptr inbounds i8, ptr %call9.i, i64 31 - %92 = load i8, ptr %arrayidx183.i, align 1 - %93 = lshr i8 %92, 6 - %shr187.i = zext nneg i8 %93 to i32 + %90 = load i8, ptr %arrayidx183.i, align 1 + %91 = lshr i8 %90, 6 + %shr187.i = zext nneg i8 %91 to i32 %and6.i.i = shl nuw nsw i32 %shr187.i, 1 %add9.i.i = and i32 %and6.i.i, 2 %shr510.i.i = add nuw nsw i32 %add9.i.i, %shr187.i %shr192.i = lshr i32 %shr510.i.i, 1 call void @ecp_nistz256_gather_w5(ptr noundef nonnull %add.ptr16.i, ptr noundef nonnull %add.ptr15.i, i32 noundef %shr192.i) #8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 32 dereferenceable(96) %60, ptr noundef nonnull align 8 dereferenceable(96) %add.ptr16.i, i64 96, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 32 dereferenceable(96) %59, ptr noundef nonnull align 8 dereferenceable(96) %add.ptr16.i, i64 96, i1 false) %Y224.i = getelementptr inbounds i8, ptr %add.ptr16.i, i64 128 %arrayidx10.i.i = getelementptr inbounds i8, ptr %add.ptr16.i, i64 144 %arrayidx12.i.i = getelementptr inbounds i8, ptr %add.ptr16.i, i64 48 @@ -947,11 +945,11 @@ for.body202.lr.ph.i: ; preds = %while.body.i for.body202.i: ; preds = %for.body202.i, %for.body202.lr.ph.i %i.1267.i = phi i64 [ %conv198.i, %for.body202.lr.ph.i ], [ %inc239.i, %for.body202.i ] %arrayidx207.i = getelementptr inbounds [33 x i8], ptr %call9.i, i64 %i.1267.i, i64 %idxprom206.i - %94 = load i8, ptr %arrayidx207.i, align 1 - %conv208.i = zext i8 %94 to i32 + %92 = load i8, ptr %arrayidx207.i, align 1 + %conv208.i = zext i8 %92 to i32 %arrayidx212.i = getelementptr inbounds [33 x i8], ptr %call9.i, i64 %i.1267.i, i64 %idxprom211.i - %95 = load i8, ptr %arrayidx212.i, align 1 - %conv213.i = zext i8 %95 to i32 + %93 = load i8, ptr %arrayidx212.i, align 1 + %conv213.i = zext i8 %93 to i32 %shl.i143 = shl nuw nsw i32 %conv213.i, 8 %or.i144 = or disjoint i32 %shl.i143, %conv208.i %shr216.i = lshr i32 %or.i144, %rem215.i @@ -974,42 +972,42 @@ for.body202.i: ; preds = %for.body202.i, %for %conv236.i = zext nneg i32 %and7.i218.i to i64 %sub.i220.i = sub nsw i64 0, %conv236.i %not.i221.i = add nsw i64 %conv236.i, -1 - %96 = load <2 x i64>, ptr %Y224.i, align 8 - %97 = insertelement <2 x i64> poison, i64 %sub.i220.i, i64 0 - %98 = shufflevector <2 x i64> %97, <2 x i64> poison, <2 x i32> zeroinitializer - %99 = and <2 x i64> %96, %98 - %100 = load <2 x i64>, ptr %Y.i138, align 8 - %101 = insertelement <2 x i64> poison, i64 %not.i221.i, i64 0 - %102 = shufflevector <2 x i64> %101, <2 x i64> poison, <2 x i32> zeroinitializer - %103 = and <2 x i64> %102, %100 - %104 = xor <2 x i64> %103, %99 - store <2 x i64> %104, ptr %Y.i138, align 8 - %105 = load <2 x i64>, ptr %arrayidx10.i.i, align 8 - %106 = and <2 x i64> %105, %98 - %107 = load <2 x i64>, ptr %arrayidx12.i.i, align 8 - %108 = and <2 x i64> %107, %102 - %109 = xor <2 x i64> %108, %106 - store <2 x i64> %109, ptr %arrayidx12.i.i, align 8 - call void @ecp_nistz256_point_add(ptr noundef nonnull %60, ptr noundef nonnull %60, ptr noundef nonnull %add.ptr16.i) #8 + %94 = load <2 x i64>, ptr %Y224.i, align 8 + %95 = insertelement <2 x i64> poison, i64 %sub.i220.i, i64 0 + %96 = shufflevector <2 x i64> %95, <2 x i64> poison, <2 x i32> zeroinitializer + %97 = and <2 x i64> %94, %96 + %98 = load <2 x i64>, ptr %Y.i138, align 8 + %99 = insertelement <2 x i64> poison, i64 %not.i221.i, i64 0 + %100 = shufflevector <2 x i64> %99, <2 x i64> poison, <2 x i32> zeroinitializer + %101 = and <2 x i64> %100, %98 + %102 = xor <2 x i64> %101, %97 + store <2 x i64> %102, ptr %Y.i138, align 8 + %103 = load <2 x i64>, ptr %arrayidx10.i.i, align 8 + %104 = and <2 x i64> %103, %96 + %105 = load <2 x i64>, ptr %arrayidx12.i.i, align 8 + %106 = and <2 x i64> %105, %100 + %107 = xor <2 x i64> %106, %104 + store <2 x i64> %107, ptr %arrayidx12.i.i, align 8 + call void @ecp_nistz256_point_add(ptr noundef nonnull %59, ptr noundef nonnull %59, ptr noundef nonnull %add.ptr16.i) #8 %inc239.i = add i64 %i.1267.i, 1 %exitcond285.not.i = icmp eq i64 %inc239.i, %num.addr.0183216 br i1 %exitcond285.not.i, label %for.end240.i, label %for.body202.i, !llvm.loop !17 for.end240.i: ; preds = %for.body202.i, %while.body.i %sub241.i = add nsw i32 %idx.0268.i, -5 - call void @ecp_nistz256_point_double(ptr noundef nonnull %60, ptr noundef nonnull %60) #8 - call void @ecp_nistz256_point_double(ptr noundef nonnull %60, ptr noundef nonnull %60) #8 - call void @ecp_nistz256_point_double(ptr noundef nonnull %60, ptr noundef nonnull %60) #8 - call void @ecp_nistz256_point_double(ptr noundef nonnull %60, ptr noundef nonnull %60) #8 - call void @ecp_nistz256_point_double(ptr noundef nonnull %60, ptr noundef nonnull %60) #8 + call void @ecp_nistz256_point_double(ptr noundef nonnull %59, ptr noundef nonnull %59) #8 + call void @ecp_nistz256_point_double(ptr noundef nonnull %59, ptr noundef nonnull %59) #8 + call void @ecp_nistz256_point_double(ptr noundef nonnull %59, ptr noundef nonnull %59) #8 + call void @ecp_nistz256_point_double(ptr noundef nonnull %59, ptr noundef nonnull %59) #8 + call void @ecp_nistz256_point_double(ptr noundef nonnull %59, ptr noundef nonnull %59) #8 %cmp194.i = icmp ugt i32 %sub241.i, 4 br i1 %cmp194.i, label %while.body.i, label %for.body245.i, !llvm.loop !18 for.body245.i: ; preds = %for.end240.i, %for.body245.i %i.2270.i = phi i64 [ %inc272.i, %for.body245.i ], [ 0, %for.end240.i ] %arrayidx246.i = getelementptr inbounds [33 x i8], ptr %call9.i, i64 %i.2270.i - %110 = load i8, ptr %arrayidx246.i, align 1 - %conv248.i = zext i8 %110 to i32 + %108 = load i8, ptr %arrayidx246.i, align 1 + %conv248.i = zext i8 %108 to i32 %shl249.i = shl nuw nsw i32 %conv248.i, 1 %and250.i = and i32 %shl249.i, 62 %shr.i224.i = lshr i32 %and250.i, 5 @@ -1030,23 +1028,23 @@ for.body245.i: ; preds = %for.end240.i, %for. %conv269.i = zext nneg i32 %and7.i235.i to i64 %sub.i237.i = sub nsw i64 0, %conv269.i %not.i238.i = add nsw i64 %conv269.i, -1 - %111 = load <2 x i64>, ptr %Y224.i, align 8 - %112 = insertelement <2 x i64> poison, i64 %sub.i237.i, i64 0 - %113 = shufflevector <2 x i64> %112, <2 x i64> poison, <2 x i32> zeroinitializer - %114 = and <2 x i64> %111, %113 - %115 = load <2 x i64>, ptr %Y.i138, align 8 - %116 = insertelement <2 x i64> poison, i64 %not.i238.i, i64 0 - %117 = shufflevector <2 x i64> %116, <2 x i64> poison, <2 x i32> zeroinitializer - %118 = and <2 x i64> %117, %115 - %119 = xor <2 x i64> %118, %114 - store <2 x i64> %119, ptr %Y.i138, align 8 - %120 = load <2 x i64>, ptr %arrayidx10.i.i, align 8 - %121 = and <2 x i64> %120, %113 - %122 = load <2 x i64>, ptr %arrayidx12.i.i, align 8 - %123 = and <2 x i64> %122, %117 - %124 = xor <2 x i64> %123, %121 - store <2 x i64> %124, ptr %arrayidx12.i.i, align 8 - call void @ecp_nistz256_point_add(ptr noundef nonnull %60, ptr noundef nonnull %60, ptr noundef nonnull %add.ptr16.i) #8 + %109 = load <2 x i64>, ptr %Y224.i, align 8 + %110 = insertelement <2 x i64> poison, i64 %sub.i237.i, i64 0 + %111 = shufflevector <2 x i64> %110, <2 x i64> poison, <2 x i32> zeroinitializer + %112 = and <2 x i64> %109, %111 + %113 = load <2 x i64>, ptr %Y.i138, align 8 + %114 = insertelement <2 x i64> poison, i64 %not.i238.i, i64 0 + %115 = shufflevector <2 x i64> %114, <2 x i64> poison, <2 x i32> zeroinitializer + %116 = and <2 x i64> %115, %113 + %117 = xor <2 x i64> %116, %112 + store <2 x i64> %117, ptr %Y.i138, align 8 + %118 = load <2 x i64>, ptr %arrayidx10.i.i, align 8 + %119 = and <2 x i64> %118, %111 + %120 = load <2 x i64>, ptr %arrayidx12.i.i, align 8 + %121 = and <2 x i64> %120, %115 + %122 = xor <2 x i64> %121, %119 + store <2 x i64> %122, ptr %arrayidx12.i.i, align 8 + call void @ecp_nistz256_point_add(ptr noundef nonnull %59, ptr noundef nonnull %59, ptr noundef nonnull %add.ptr16.i) #8 %inc272.i = add nuw i64 %i.2270.i, 1 %exitcond286.not.i = icmp eq i64 %inc272.i, %num.addr.0183216 br i1 %exitcond286.not.i, label %ecp_nistz256_windowed_mul.exit, label %for.body245.i, !llvm.loop !19 @@ -1073,55 +1071,55 @@ if.end219: ; preds = %ecp_nistz256_window %new_points.0180 = phi ptr [ %new_points.0179219, %ecp_nistz256_windowed_mul.exit ], [ %new_points.0179219, %if.then217 ], [ null, %if.end206 ] %new_scalars.0178 = phi ptr [ %new_scalars.0177221, %ecp_nistz256_windowed_mul.exit ], [ %new_scalars.0177221, %if.then217 ], [ null, %if.end206 ] %X220 = getelementptr inbounds i8, ptr %r, i64 16 - %125 = load ptr, ptr %X220, align 8 - %call223 = call i32 @bn_set_words(ptr noundef %125, ptr noundef nonnull %p, i32 noundef 4) #8 + %123 = load ptr, ptr %X220, align 8 + %call223 = call i32 @bn_set_words(ptr noundef %123, ptr noundef nonnull %p, i32 noundef 4) #8 %tobool224.not = icmp eq i32 %call223, 0 br i1 %tobool224.not, label %err, label %lor.lhs.false225 lor.lhs.false225: ; preds = %if.end219 %Y226 = getelementptr inbounds i8, ptr %r, i64 24 - %126 = load ptr, ptr %Y226, align 8 + %124 = load ptr, ptr %Y226, align 8 %Y227 = getelementptr inbounds i8, ptr %p, i64 32 - %call229 = call i32 @bn_set_words(ptr noundef %126, ptr noundef nonnull %Y227, i32 noundef 4) #8 + %call229 = call i32 @bn_set_words(ptr noundef %124, ptr noundef nonnull %Y227, i32 noundef 4) #8 %tobool230.not = icmp eq i32 %call229, 0 br i1 %tobool230.not, label %err, label %lor.lhs.false231 lor.lhs.false231: ; preds = %lor.lhs.false225 %Z232 = getelementptr inbounds i8, ptr %r, i64 32 - %127 = load ptr, ptr %Z232, align 8 + %125 = load ptr, ptr %Z232, align 8 %Z233 = getelementptr inbounds i8, ptr %p, i64 64 - %call235 = call i32 @bn_set_words(ptr noundef %127, ptr noundef nonnull %Z233, i32 noundef 4) #8 + %call235 = call i32 @bn_set_words(ptr noundef %125, ptr noundef nonnull %Z233, i32 noundef 4) #8 %tobool236.not = icmp eq i32 %call235, 0 br i1 %tobool236.not, label %err, label %if.end238 if.end238: ; preds = %lor.lhs.false231 - %128 = load ptr, ptr %Z232, align 8 - %call.i146 = call ptr @bn_get_words(ptr noundef %128) #8 - %call1.i = call i32 @bn_get_top(ptr noundef %128) #8 + %126 = load ptr, ptr %Z232, align 8 + %call.i146 = call ptr @bn_get_words(ptr noundef %126) #8 + %call1.i = call i32 @bn_get_top(ptr noundef %126) #8 %cmp.i147 = icmp eq i32 %call1.i, 4 br i1 %cmp.i147, label %if.then.i149, label %is_one.exit if.then.i149: ; preds = %if.end238 - %129 = load <4 x i64>, ptr %call.i146, align 8 - %130 = xor <4 x i64> %129, - %131 = call i64 @llvm.vector.reduce.or.v4i64(<4 x i64> %130) - %132 = add i64 %131, -1 - %133 = xor i64 %131, -1 - %not.i.i = and i64 %132, %133 + %127 = load <4 x i64>, ptr %call.i146, align 8 + %128 = xor <4 x i64> %127, + %129 = call i64 @llvm.vector.reduce.or.v4i64(<4 x i64> %128) + %130 = add i64 %129, -1 + %131 = xor i64 %129, -1 + %not.i.i = and i64 %130, %131 %shr.i.i = lshr i64 %not.i.i, 63 - %134 = trunc i64 %shr.i.i to i32 + %132 = trunc i64 %shr.i.i to i32 br label %is_one.exit is_one.exit: ; preds = %if.end238, %if.then.i149 - %res.0.i = phi i32 [ %134, %if.then.i149 ], [ 0, %if.end238 ] + %res.0.i = phi i32 [ %132, %if.then.i149 ], [ 0, %if.end238 ] %Z_is_one = getelementptr inbounds i8, ptr %r, i64 40 store i32 %res.0.i, ptr %Z_is_one, align 8 br label %err -err.critedge: ; preds = %if.then24.i, %err.sink.split.i, %lor.lhs.false11.i, %lor.lhs.false6.i, %lor.lhs.false.i, %59 - %p_str.0.i.ph = phi ptr [ %call9.i, %err.sink.split.i ], [ %call9.i, %lor.lhs.false11.i ], [ null, %lor.lhs.false6.i ], [ null, %lor.lhs.false.i ], [ null, %59 ], [ %call9.i, %if.then24.i ] - %scalars.0.i.ph = phi ptr [ %call13.i, %err.sink.split.i ], [ null, %lor.lhs.false11.i ], [ null, %lor.lhs.false6.i ], [ null, %lor.lhs.false.i ], [ null, %59 ], [ %call13.i, %if.then24.i ] - %table_storage.0.i.ph = phi ptr [ %call.i137, %err.sink.split.i ], [ %call.i137, %lor.lhs.false11.i ], [ %call.i137, %lor.lhs.false6.i ], [ null, %lor.lhs.false.i ], [ null, %59 ], [ %call.i137, %if.then24.i ] +err.critedge: ; preds = %if.then24.i, %err.sink.split.i, %lor.lhs.false11.i, %lor.lhs.false6.i, %lor.lhs.false.i, %58 + %p_str.0.i.ph = phi ptr [ %call9.i, %err.sink.split.i ], [ %call9.i, %lor.lhs.false11.i ], [ null, %lor.lhs.false6.i ], [ null, %lor.lhs.false.i ], [ null, %58 ], [ %call9.i, %if.then24.i ] + %scalars.0.i.ph = phi ptr [ %call13.i, %err.sink.split.i ], [ null, %lor.lhs.false11.i ], [ null, %lor.lhs.false6.i ], [ null, %lor.lhs.false.i ], [ null, %58 ], [ %call13.i, %if.then24.i ] + %table_storage.0.i.ph = phi ptr [ %call.i137, %err.sink.split.i ], [ %call.i137, %lor.lhs.false11.i ], [ %call.i137, %lor.lhs.false6.i ], [ null, %lor.lhs.false.i ], [ null, %58 ], [ %call.i137, %if.then24.i ] call void @CRYPTO_free(ptr noundef %table_storage.0.i.ph, ptr noundef nonnull @.str, i32 noundef 772) #8 call void @CRYPTO_free(ptr noundef %p_str.0.i.ph, ptr noundef nonnull @.str, i32 noundef 773) #8 call void @CRYPTO_free(ptr noundef %scalars.0.i.ph, ptr noundef nonnull @.str, i32 noundef 774) #8 diff --git a/bench/openssl/optimized/libcrypto-shlib-params_dup.ll b/bench/openssl/optimized/libcrypto-shlib-params_dup.ll index 64cd59d1fab..6bf4957481f 100644 --- a/bench/openssl/optimized/libcrypto-shlib-params_dup.ll +++ b/bench/openssl/optimized/libcrypto-shlib-params_dup.ll @@ -88,20 +88,20 @@ ossl_param_dup.exit.loopexit: ; preds = %if.end20.us.i %blocks.i.phi.trans.insert = getelementptr inbounds i8, ptr %buf, i64 16 %.pre = load i64, ptr %blocks.i.phi.trans.insert, align 16 %7 = zext nneg i32 %inc39.us.i to i64 - %8 = mul nuw nsw i64 %7, 5 + %8 = mul nuw nsw i64 %7, 40 + %9 = shl i64 %.pre, 3 br label %ossl_param_dup.exit ossl_param_dup.exit: ; preds = %ossl_param_dup.exit.loopexit, %if.end - %9 = phi i64 [ 0, %if.end ], [ %.pre, %ossl_param_dup.exit.loopexit ] - %param_count.1 = phi i64 [ 5, %if.end ], [ %8, %ossl_param_dup.exit.loopexit ] - %add.i = add i64 %param_count.1, %9 - %mul.i = shl i64 %add.i, 3 - %call1.i = tail call noalias ptr @CRYPTO_zalloc(i64 noundef %mul.i, ptr noundef nonnull @.str, i32 noundef 39) #7 + %add.i20 = phi i64 [ 0, %if.end ], [ %9, %ossl_param_dup.exit.loopexit ] + %param_count.1 = phi i64 [ 40, %if.end ], [ %8, %ossl_param_dup.exit.loopexit ] + %div1.i21 = add i64 %param_count.1, %add.i20 + %call1.i = tail call noalias ptr @CRYPTO_zalloc(i64 noundef %div1.i21, ptr noundef nonnull @.str, i32 noundef 39) #7 %cmp.i = icmp eq ptr %call1.i, null br i1 %cmp.i, label %return, label %if.end5 if.end5: ; preds = %ossl_param_dup.exit - %add.ptr.i = getelementptr inbounds %union.OSSL_PARAM_ALIGNED_BLOCK, ptr %call1.i, i64 %param_count.1 + %add.ptr.i = getelementptr inbounds i8, ptr %call1.i, i64 %param_count.1 %cur.i = getelementptr inbounds i8, ptr %buf, i64 8 store ptr %add.ptr.i, ptr %cur.i, align 8 %blocks = getelementptr inbounds i8, ptr %buf, i64 48 @@ -271,9 +271,9 @@ if.end22: ; preds = %for.body16, %for.co if.end28: ; preds = %if.end22 call void @qsort(ptr noundef nonnull %list1, i64 noundef %list1_sz.1, i64 noundef 8, ptr noundef nonnull @compare_params) #7 call void @qsort(ptr noundef nonnull %list2, i64 noundef %list2_sz.1, i64 noundef 8, ptr noundef nonnull @compare_params) #7 - %add = add nuw i64 %list2_sz.1, %list1_sz.1 - %7 = mul i64 %add, 40 - %mul = add i64 %7, 40 + %add = add nuw nsw i64 %list2_sz.1, %list1_sz.1 + %7 = mul nsw i64 %add, 40 + %mul = add nuw nsw i64 %7, 40 %call = call noalias ptr @CRYPTO_zalloc(i64 noundef %mul, ptr noundef nonnull @.str, i32 noundef 184) #7 %cmp31 = icmp eq ptr %call, null br i1 %cmp31, label %return, label %while.body.preheader diff --git a/bench/protobuf/optimized/extension_set.cc.ll b/bench/protobuf/optimized/extension_set.cc.ll index dc8ad92b8b1..653cf18d511 100644 --- a/bench/protobuf/optimized/extension_set.cc.ll +++ b/bench/protobuf/optimized/extension_set.cc.ll @@ -16950,7 +16950,7 @@ _ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_ for.body.preheader.i.i.i.i.i.i.i: ; preds = %_ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_.exit.i.i.i.i, %if.then.i.i.i.i %idx.ext1117.i.i.i.i = phi i64 [ %15, %_ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_.exit.i.i.i.i ], [ 0, %if.then.i.i.i.i ] - %add.ptr13.i.i.i.i = getelementptr inbounds ptr, ptr %add.ptr.i.i21, i64 %div10.i.i.i.i + %add.ptr13.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 %mul.i20 %add.ptr12.i.i.i.i = getelementptr inbounds ptr, ptr %add.ptr.i.i21, i64 %idx.ext1117.i.i.i.i %__last5.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr13.i.i.i.i to i64 %__first6.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr12.i.i.i.i to i64 @@ -17244,7 +17244,7 @@ _ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_ for.body.preheader.i.i.i.i.i.i.i: ; preds = %_ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_.exit.i.i.i.i, %if.then.i.i.i.i %idx.ext1117.i.i.i.i = phi i64 [ %15, %_ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_.exit.i.i.i.i ], [ 0, %if.then.i.i.i.i ] - %add.ptr13.i.i.i.i = getelementptr inbounds ptr, ptr %add.ptr.i.i21, i64 %div10.i.i.i.i + %add.ptr13.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 %mul.i20 %add.ptr12.i.i.i.i = getelementptr inbounds ptr, ptr %add.ptr.i.i21, i64 %idx.ext1117.i.i.i.i %__last5.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr13.i.i.i.i to i64 %__first6.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr12.i.i.i.i to i64 @@ -17538,7 +17538,7 @@ _ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_ for.body.preheader.i.i.i.i.i.i.i: ; preds = %_ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_.exit.i.i.i.i, %if.then.i.i.i.i %idx.ext1117.i.i.i.i = phi i64 [ %15, %_ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_.exit.i.i.i.i ], [ 0, %if.then.i.i.i.i ] - %add.ptr13.i.i.i.i = getelementptr inbounds ptr, ptr %add.ptr.i.i21, i64 %div10.i.i.i.i + %add.ptr13.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 %mul.i20 %add.ptr12.i.i.i.i = getelementptr inbounds ptr, ptr %add.ptr.i.i21, i64 %idx.ext1117.i.i.i.i %__last5.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr13.i.i.i.i to i64 %__first6.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr12.i.i.i.i to i64 diff --git a/bench/protobuf/optimized/generated_message_reflection.cc.ll b/bench/protobuf/optimized/generated_message_reflection.cc.ll index 19d0eb3baf6..50226cbd4bd 100644 --- a/bench/protobuf/optimized/generated_message_reflection.cc.ll +++ b/bench/protobuf/optimized/generated_message_reflection.cc.ll @@ -42445,7 +42445,7 @@ _ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_ for.body.preheader.i.i.i.i.i.i.i: ; preds = %_ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_.exit.i.i.i.i, %if.then.i.i.i.i %idx.ext1117.i.i.i.i = phi i64 [ %15, %_ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_.exit.i.i.i.i ], [ 0, %if.then.i.i.i.i ] - %add.ptr13.i.i.i.i = getelementptr inbounds ptr, ptr %add.ptr.i.i21, i64 %div10.i.i.i.i + %add.ptr13.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 %mul.i20 %add.ptr12.i.i.i.i = getelementptr inbounds ptr, ptr %add.ptr.i.i21, i64 %idx.ext1117.i.i.i.i %__last5.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr13.i.i.i.i to i64 %__first6.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr12.i.i.i.i to i64 @@ -42739,7 +42739,7 @@ _ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_ for.body.preheader.i.i.i.i.i.i.i: ; preds = %_ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_.exit.i.i.i.i, %if.then.i.i.i.i %idx.ext1117.i.i.i.i = phi i64 [ %15, %_ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_.exit.i.i.i.i ], [ 0, %if.then.i.i.i.i ] - %add.ptr13.i.i.i.i = getelementptr inbounds ptr, ptr %add.ptr.i.i21, i64 %div10.i.i.i.i + %add.ptr13.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 %mul.i20 %add.ptr12.i.i.i.i = getelementptr inbounds ptr, ptr %add.ptr.i.i21, i64 %idx.ext1117.i.i.i.i %__last5.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr13.i.i.i.i to i64 %__first6.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr12.i.i.i.i to i64 @@ -43033,7 +43033,7 @@ _ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_ for.body.preheader.i.i.i.i.i.i.i: ; preds = %_ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_.exit.i.i.i.i, %if.then.i.i.i.i %idx.ext1117.i.i.i.i = phi i64 [ %15, %_ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_.exit.i.i.i.i ], [ 0, %if.then.i.i.i.i ] - %add.ptr13.i.i.i.i = getelementptr inbounds ptr, ptr %add.ptr.i.i21, i64 %div10.i.i.i.i + %add.ptr13.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 %mul.i20 %add.ptr12.i.i.i.i = getelementptr inbounds ptr, ptr %add.ptr.i.i21, i64 %idx.ext1117.i.i.i.i %__last5.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr13.i.i.i.i to i64 %__first6.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr12.i.i.i.i to i64 diff --git a/bench/protobuf/optimized/generated_message_tctable_lite.cc.ll b/bench/protobuf/optimized/generated_message_tctable_lite.cc.ll index 50738562ea7..3e378fade56 100644 --- a/bench/protobuf/optimized/generated_message_tctable_lite.cc.ll +++ b/bench/protobuf/optimized/generated_message_tctable_lite.cc.ll @@ -22611,7 +22611,7 @@ _ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_ for.body.preheader.i.i.i.i.i.i.i: ; preds = %_ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_.exit.i.i.i.i, %if.then.i.i.i.i %idx.ext1117.i.i.i.i = phi i64 [ %15, %_ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_.exit.i.i.i.i ], [ 0, %if.then.i.i.i.i ] - %add.ptr13.i.i.i.i = getelementptr inbounds ptr, ptr %add.ptr.i.i21, i64 %div10.i.i.i.i + %add.ptr13.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 %mul.i20 %add.ptr12.i.i.i.i = getelementptr inbounds ptr, ptr %add.ptr.i.i21, i64 %idx.ext1117.i.i.i.i %__last5.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr13.i.i.i.i to i64 %__first6.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr12.i.i.i.i to i64 @@ -37015,7 +37015,7 @@ _ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_ for.body.preheader.i.i.i.i.i.i.i: ; preds = %_ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_.exit.i.i.i.i, %if.then.i.i.i.i %idx.ext1117.i.i.i.i = phi i64 [ %15, %_ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_.exit.i.i.i.i ], [ 0, %if.then.i.i.i.i ] - %add.ptr13.i.i.i.i = getelementptr inbounds ptr, ptr %add.ptr.i.i21, i64 %div10.i.i.i.i + %add.ptr13.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 %mul.i20 %add.ptr12.i.i.i.i = getelementptr inbounds ptr, ptr %add.ptr.i.i21, i64 %idx.ext1117.i.i.i.i %__last5.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr13.i.i.i.i to i64 %__first6.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr12.i.i.i.i to i64 diff --git a/bench/protobuf/optimized/message.cc.ll b/bench/protobuf/optimized/message.cc.ll index 5d3f622521d..fe4705b347f 100644 --- a/bench/protobuf/optimized/message.cc.ll +++ b/bench/protobuf/optimized/message.cc.ll @@ -5114,7 +5114,7 @@ _ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_ for.body.preheader.i.i.i.i.i.i.i: ; preds = %_ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_.exit.i.i.i.i, %if.then.i.i.i.i %idx.ext1117.i.i.i.i = phi i64 [ %15, %_ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_.exit.i.i.i.i ], [ 0, %if.then.i.i.i.i ] - %add.ptr13.i.i.i.i = getelementptr inbounds ptr, ptr %add.ptr.i.i21, i64 %div10.i.i.i.i + %add.ptr13.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 %mul.i20 %add.ptr12.i.i.i.i = getelementptr inbounds ptr, ptr %add.ptr.i.i21, i64 %idx.ext1117.i.i.i.i %__last5.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr13.i.i.i.i to i64 %__first6.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr12.i.i.i.i to i64 @@ -5577,7 +5577,7 @@ _ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_ for.body.preheader.i.i.i.i.i.i.i: ; preds = %_ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_.exit.i.i.i.i, %if.then.i.i.i.i %idx.ext1117.i.i.i.i = phi i64 [ %15, %_ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_.exit.i.i.i.i ], [ 0, %if.then.i.i.i.i ] - %add.ptr13.i.i.i.i = getelementptr inbounds ptr, ptr %add.ptr.i.i21, i64 %div10.i.i.i.i + %add.ptr13.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 %mul.i20 %add.ptr12.i.i.i.i = getelementptr inbounds ptr, ptr %add.ptr.i.i21, i64 %idx.ext1117.i.i.i.i %__last5.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr13.i.i.i.i to i64 %__first6.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr12.i.i.i.i to i64 @@ -6503,7 +6503,7 @@ _ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_ for.body.preheader.i.i.i.i.i.i.i: ; preds = %_ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_.exit.i.i.i.i, %if.then.i.i.i.i %idx.ext1117.i.i.i.i = phi i64 [ %15, %_ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_.exit.i.i.i.i ], [ 0, %if.then.i.i.i.i ] - %add.ptr13.i.i.i.i = getelementptr inbounds ptr, ptr %add.ptr.i.i21, i64 %div10.i.i.i.i + %add.ptr13.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 %mul.i20 %add.ptr12.i.i.i.i = getelementptr inbounds ptr, ptr %add.ptr.i.i21, i64 %idx.ext1117.i.i.i.i %__last5.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr13.i.i.i.i to i64 %__first6.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr12.i.i.i.i to i64 diff --git a/bench/protobuf/optimized/parse_context.cc.ll b/bench/protobuf/optimized/parse_context.cc.ll index 6abc24bb232..6649abe40fa 100644 --- a/bench/protobuf/optimized/parse_context.cc.ll +++ b/bench/protobuf/optimized/parse_context.cc.ll @@ -4119,7 +4119,7 @@ _ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_ for.body.preheader.i.i.i.i.i.i.i: ; preds = %_ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_.exit.i.i.i.i, %if.then.i.i.i.i %idx.ext1117.i.i.i.i = phi i64 [ %15, %_ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_.exit.i.i.i.i ], [ 0, %if.then.i.i.i.i ] - %add.ptr13.i.i.i.i = getelementptr inbounds ptr, ptr %add.ptr.i.i21, i64 %div10.i.i.i.i + %add.ptr13.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 %mul.i20 %add.ptr12.i.i.i.i = getelementptr inbounds ptr, ptr %add.ptr.i.i21, i64 %idx.ext1117.i.i.i.i %__last5.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr13.i.i.i.i to i64 %__first6.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr12.i.i.i.i to i64 @@ -4642,7 +4642,7 @@ _ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_ for.body.preheader.i.i.i.i.i.i.i: ; preds = %_ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_.exit.i.i.i.i, %if.then.i.i.i.i %idx.ext1117.i.i.i.i = phi i64 [ %15, %_ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_.exit.i.i.i.i ], [ 0, %if.then.i.i.i.i ] - %add.ptr13.i.i.i.i = getelementptr inbounds ptr, ptr %add.ptr.i.i21, i64 %div10.i.i.i.i + %add.ptr13.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 %mul.i20 %add.ptr12.i.i.i.i = getelementptr inbounds ptr, ptr %add.ptr.i.i21, i64 %idx.ext1117.i.i.i.i %__last5.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr13.i.i.i.i to i64 %__first6.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr12.i.i.i.i to i64 @@ -7464,7 +7464,7 @@ _ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_ for.body.preheader.i.i.i.i.i.i.i: ; preds = %_ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_.exit.i.i.i.i, %if.then.i.i.i.i %idx.ext1117.i.i.i.i = phi i64 [ %15, %_ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_.exit.i.i.i.i ], [ 0, %if.then.i.i.i.i ] - %add.ptr13.i.i.i.i = getelementptr inbounds ptr, ptr %add.ptr.i.i21, i64 %div10.i.i.i.i + %add.ptr13.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 %mul.i20 %add.ptr12.i.i.i.i = getelementptr inbounds ptr, ptr %add.ptr.i.i21, i64 %idx.ext1117.i.i.i.i %__last5.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr13.i.i.i.i to i64 %__first6.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr12.i.i.i.i to i64 diff --git a/bench/protobuf/optimized/repeated_ptr_field.cc.ll b/bench/protobuf/optimized/repeated_ptr_field.cc.ll index 40159b1961f..f0702dc3e80 100644 --- a/bench/protobuf/optimized/repeated_ptr_field.cc.ll +++ b/bench/protobuf/optimized/repeated_ptr_field.cc.ll @@ -166,7 +166,7 @@ _ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_ for.body.preheader.i.i.i.i.i.i: ; preds = %_ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_.exit.i.i.i, %if.then.i.i.i %idx.ext1117.i.i.i = phi i64 [ %16, %_ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_.exit.i.i.i ], [ 0, %if.then.i.i.i ] - %add.ptr13.i.i.i = getelementptr inbounds ptr, ptr %6, i64 %div10.i.i.i + %add.ptr13.i.i.i = getelementptr inbounds i8, ptr %6, i64 %add41 %add.ptr12.i.i.i = getelementptr inbounds ptr, ptr %6, i64 %idx.ext1117.i.i.i %__last5.i.i.i.i.i.i = ptrtoint ptr %add.ptr13.i.i.i to i64 %__first6.i.i.i.i.i.i = ptrtoint ptr %add.ptr12.i.i.i to i64 diff --git a/bench/protobuf/optimized/wire_format.cc.ll b/bench/protobuf/optimized/wire_format.cc.ll index 29a0274da3e..1569b31413b 100644 --- a/bench/protobuf/optimized/wire_format.cc.ll +++ b/bench/protobuf/optimized/wire_format.cc.ll @@ -17345,7 +17345,7 @@ if.then22: ; preds = %for.cond if.then24: ; preds = %if.then22 %2 = load ptr, ptr %__p.sroa.0.0, align 8 %add.ptr.i15.idx73 = shl nsw i64 %__n.0, 3 - %add.ptr.i15.ptr = getelementptr inbounds i8, ptr %__p.sroa.0.0, i64 %add.ptr.i15.idx73 + %add.ptr.i15 = getelementptr inbounds i8, ptr %__p.sroa.0.0, i64 %add.ptr.i15.idx73 %tobool.not.i.i.i.i.i = icmp eq i64 %__n.0, 1 br i1 %tobool.not.i.i.i.i.i, label %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEESB_ET0_T_SD_SC_.exit, label %if.then.i.i.i.i.i @@ -17356,7 +17356,7 @@ if.then.i.i.i.i.i: ; preds = %if.then24 br label %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEESB_ET0_T_SD_SC_.exit _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEESB_ET0_T_SD_SC_.exit: ; preds = %if.then24, %if.then.i.i.i.i.i - %add.ptr.i17 = getelementptr inbounds i8, ptr %add.ptr.i15.ptr, i64 -8 + %add.ptr.i17 = getelementptr inbounds i8, ptr %add.ptr.i15, i64 -8 store ptr %2, ptr %add.ptr.i17, align 8 br label %return @@ -17814,9 +17814,9 @@ while.body.lr.ph: ; preds = %entry br i1 %or.cond, label %while.body.us, label %while.body while.body.us: ; preds = %while.body.lr.ph, %while.body.us - %__first.sroa.0.044.us = phi ptr [ %add.ptr.i.ptr.us, %while.body.us ], [ %__first.coerce, %while.body.lr.ph ] - %add.ptr.i.ptr.us = getelementptr inbounds i8, ptr %__first.sroa.0.044.us, i64 %add.ptr.i.idx - %sub.ptr.rhs.cast.i.us = ptrtoint ptr %add.ptr.i.ptr.us to i64 + %__first.sroa.0.044.us = phi ptr [ %add.ptr.i.us, %while.body.us ], [ %__first.coerce, %while.body.lr.ph ] + %add.ptr.i.us = getelementptr inbounds i8, ptr %__first.sroa.0.044.us, i64 %add.ptr.i.idx + %sub.ptr.rhs.cast.i.us = ptrtoint ptr %add.ptr.i.us to i64 %sub.ptr.sub.i.us = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i.us %sub.ptr.div.i.us = ashr exact i64 %sub.ptr.sub.i.us, 3 %cmp.not.us = icmp slt i64 %sub.ptr.div.i.us, %__chunk_size @@ -17824,8 +17824,8 @@ while.body.us: ; preds = %while.body.lr.ph, % while.body: ; preds = %while.body.lr.ph, %_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEENS0_5__ops15_Iter_comp_iterINS3_16DynamicMapSorter25MapEntryMessageComparatorEEEEvT_SH_T0_.exit.loopexit %sub.ptr.rhs.cast.i45 = phi i64 [ %sub.ptr.rhs.cast.i, %_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEENS0_5__ops15_Iter_comp_iterINS3_16DynamicMapSorter25MapEntryMessageComparatorEEEEvT_SH_T0_.exit.loopexit ], [ %sub.ptr.rhs.cast.i40, %while.body.lr.ph ] - %__first.sroa.0.044 = phi ptr [ %add.ptr.i.ptr, %_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEENS0_5__ops15_Iter_comp_iterINS3_16DynamicMapSorter25MapEntryMessageComparatorEEEEvT_SH_T0_.exit.loopexit ], [ %__first.coerce, %while.body.lr.ph ] - %add.ptr.i.ptr = getelementptr inbounds i8, ptr %__first.sroa.0.044, i64 %add.ptr.i.idx + %__first.sroa.0.044 = phi ptr [ %add.ptr.i, %_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEENS0_5__ops15_Iter_comp_iterINS3_16DynamicMapSorter25MapEntryMessageComparatorEEEEvT_SH_T0_.exit.loopexit ], [ %__first.coerce, %while.body.lr.ph ] + %add.ptr.i = getelementptr inbounds i8, ptr %__first.sroa.0.044, i64 %add.ptr.i.idx call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %__comp.i) store ptr %__comp.coerce, ptr %__comp.i, align 8 %__i.sroa.0.09.i = getelementptr inbounds i8, ptr %__first.sroa.0.044, i64 8 @@ -17878,19 +17878,19 @@ _ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPPKN6google8proto for.inc.i: ; preds = %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEENS0_5__ops14_Val_comp_iterINS3_16DynamicMapSorter25MapEntryMessageComparatorEEEEvT_T0_.exit.i, %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEESB_ET0_T_SD_SC_.exit.i %__i.sroa.0.0.i = getelementptr inbounds i8, ptr %__i.sroa.0.012.i, i64 8 - %cmp.i1.not.i = icmp eq ptr %__i.sroa.0.0.i, %add.ptr.i.ptr + %cmp.i1.not.i = icmp eq ptr %__i.sroa.0.0.i, %add.ptr.i br i1 %cmp.i1.not.i, label %_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEENS0_5__ops15_Iter_comp_iterINS3_16DynamicMapSorter25MapEntryMessageComparatorEEEEvT_SH_T0_.exit.loopexit, label %for.body.i, !llvm.loop !110 _ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEENS0_5__ops15_Iter_comp_iterINS3_16DynamicMapSorter25MapEntryMessageComparatorEEEEvT_SH_T0_.exit.loopexit: ; preds = %for.inc.i call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %__comp.i) - %sub.ptr.rhs.cast.i = ptrtoint ptr %add.ptr.i.ptr to i64 + %sub.ptr.rhs.cast.i = ptrtoint ptr %add.ptr.i to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i = ashr exact i64 %sub.ptr.sub.i, 3 %cmp.not = icmp slt i64 %sub.ptr.div.i, %__chunk_size br i1 %cmp.not, label %while.end, label %while.body, !llvm.loop !120 while.end: ; preds = %_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEENS0_5__ops15_Iter_comp_iterINS3_16DynamicMapSorter25MapEntryMessageComparatorEEEEvT_SH_T0_.exit.loopexit, %while.body.us, %entry - %__first.sroa.0.0.lcssa = phi ptr [ %__first.coerce, %entry ], [ %add.ptr.i.ptr.us, %while.body.us ], [ %add.ptr.i.ptr, %_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEENS0_5__ops15_Iter_comp_iterINS3_16DynamicMapSorter25MapEntryMessageComparatorEEEEvT_SH_T0_.exit.loopexit ] + %__first.sroa.0.0.lcssa = phi ptr [ %__first.coerce, %entry ], [ %add.ptr.i.us, %while.body.us ], [ %add.ptr.i, %_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEENS0_5__ops15_Iter_comp_iterINS3_16DynamicMapSorter25MapEntryMessageComparatorEEEEvT_SH_T0_.exit.loopexit ] %sub.ptr.rhs.cast.i.lcssa = phi i64 [ %sub.ptr.rhs.cast.i40, %entry ], [ %sub.ptr.rhs.cast.i.us, %while.body.us ], [ %sub.ptr.rhs.cast.i, %_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEENS0_5__ops15_Iter_comp_iterINS3_16DynamicMapSorter25MapEntryMessageComparatorEEEEvT_SH_T0_.exit.loopexit ] call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %__comp.i5) store ptr %__comp.coerce, ptr %__comp.i5, align 8 @@ -18651,7 +18651,7 @@ _ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_ for.body.preheader.i.i.i.i.i.i.i: ; preds = %_ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_.exit.i.i.i.i, %if.then.i.i.i.i %idx.ext1117.i.i.i.i = phi i64 [ %15, %_ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_.exit.i.i.i.i ], [ 0, %if.then.i.i.i.i ] - %add.ptr13.i.i.i.i = getelementptr inbounds ptr, ptr %add.ptr.i.i21, i64 %div10.i.i.i.i + %add.ptr13.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 %mul.i20 %add.ptr12.i.i.i.i = getelementptr inbounds ptr, ptr %add.ptr.i.i21, i64 %idx.ext1117.i.i.i.i %__last5.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr13.i.i.i.i to i64 %__first6.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr12.i.i.i.i to i64 @@ -18945,7 +18945,7 @@ _ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_ for.body.preheader.i.i.i.i.i.i.i: ; preds = %_ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_.exit.i.i.i.i, %if.then.i.i.i.i %idx.ext1117.i.i.i.i = phi i64 [ %15, %_ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_.exit.i.i.i.i ], [ 0, %if.then.i.i.i.i ] - %add.ptr13.i.i.i.i = getelementptr inbounds ptr, ptr %add.ptr.i.i21, i64 %div10.i.i.i.i + %add.ptr13.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 %mul.i20 %add.ptr12.i.i.i.i = getelementptr inbounds ptr, ptr %add.ptr.i.i21, i64 %idx.ext1117.i.i.i.i %__last5.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr13.i.i.i.i to i64 %__first6.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr12.i.i.i.i to i64 @@ -19241,7 +19241,7 @@ _ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_ for.body.preheader.i.i.i.i.i.i.i: ; preds = %_ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_.exit.i.i.i.i, %if.then.i.i.i.i %idx.ext1117.i.i.i.i = phi i64 [ %15, %_ZSt4copyIPPN6google8protobuf8internal11SerialArena11CachedBlockES6_ET0_T_S8_S7_.exit.i.i.i.i ], [ 0, %if.then.i.i.i.i ] - %add.ptr13.i.i.i.i = getelementptr inbounds ptr, ptr %add.ptr.i.i21, i64 %div10.i.i.i.i + %add.ptr13.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 %mul.i20 %add.ptr12.i.i.i.i = getelementptr inbounds ptr, ptr %add.ptr.i.i21, i64 %idx.ext1117.i.i.i.i %__last5.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr13.i.i.i.i to i64 %__first6.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr12.i.i.i.i to i64 diff --git a/bench/regex-rs/optimized/3i5c2elewnigtzfn.ll b/bench/regex-rs/optimized/3i5c2elewnigtzfn.ll index fe1f6619ae5..fc83d144a60 100644 --- a/bench/regex-rs/optimized/3i5c2elewnigtzfn.ll +++ b/bench/regex-rs/optimized/3i5c2elewnigtzfn.ll @@ -11413,48 +11413,47 @@ define void @"_ZN79_$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..o %30 = load ptr, ptr %7, align 8, !nonnull !5, !noundef !5 %31 = ptrtoint ptr %30 to i64 %32 = sub nuw i64 %27, %31 - %33 = udiv exact i64 %32, 48 - %34 = getelementptr inbounds { { i64, [4 x i64] }, ptr }, ptr %30, i64 %33 - invoke void @"_ZN4core3ptr53drop_in_place$LT$$u5b$regex_syntax..hir..Hir$u5d$$GT$17h84be854a18689f13E"(ptr nonnull align 8 %34, i64 %29) - to label %37 unwind label %35 + %33 = getelementptr inbounds i8, ptr %30, i64 %32 + invoke void @"_ZN4core3ptr53drop_in_place$LT$$u5b$regex_syntax..hir..Hir$u5d$$GT$17h84be854a18689f13E"(ptr nonnull align 8 %33, i64 %29) + to label %36 unwind label %34 -35: ; preds = %25 - %36 = landingpad { ptr, i32 } +34: ; preds = %25 + %35 = landingpad { ptr, i32 } cleanup call void @"_ZN4core3ptr169drop_in_place$LT$$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$regex_syntax..hir..Hir$C$alloc..alloc..Global$GT$$GT$17h6e21b9c284abc3b6E"(ptr nonnull align 8 %2) #11 - resume { ptr, i32 } %36 + resume { ptr, i32 } %35 -37: ; preds = %25 - %38 = getelementptr inbounds i8, ptr %0, i64 32 - %39 = load i64, ptr %38, align 8, !noundef !5 - %.not.i.i22 = icmp eq i64 %39, 0 - br i1 %.not.i.i22, label %"_ZN4core3ptr169drop_in_place$LT$$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$regex_syntax..hir..Hir$C$alloc..alloc..Global$GT$$GT$17h6e21b9c284abc3b6E.exit", label %40 - -40: ; preds = %37 - %41 = load ptr, ptr %6, align 8, !nonnull !5, !noundef !5 - %42 = getelementptr inbounds i8, ptr %41, i64 16 - %43 = load i64, ptr %42, align 8, !noundef !5 - %44 = getelementptr inbounds i8, ptr %0, i64 24 - %45 = load i64, ptr %44, align 8, !noundef !5 - %.not3.i.i23 = icmp eq i64 %45, %43 - br i1 %.not3.i.i23, label %46, label %49 - -46: ; preds = %49, %40 - %47 = phi i64 [ %.pre4.i.i26, %49 ], [ %39, %40 ] - %48 = add i64 %47, %43 - store i64 %48, ptr %42, align 8 +36: ; preds = %25 + %37 = getelementptr inbounds i8, ptr %0, i64 32 + %38 = load i64, ptr %37, align 8, !noundef !5 + %.not.i.i22 = icmp eq i64 %38, 0 + br i1 %.not.i.i22, label %"_ZN4core3ptr169drop_in_place$LT$$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$regex_syntax..hir..Hir$C$alloc..alloc..Global$GT$$GT$17h6e21b9c284abc3b6E.exit", label %39 + +39: ; preds = %36 + %40 = load ptr, ptr %6, align 8, !nonnull !5, !noundef !5 + %41 = getelementptr inbounds i8, ptr %40, i64 16 + %42 = load i64, ptr %41, align 8, !noundef !5 + %43 = getelementptr inbounds i8, ptr %0, i64 24 + %44 = load i64, ptr %43, align 8, !noundef !5 + %.not3.i.i23 = icmp eq i64 %44, %42 + br i1 %.not3.i.i23, label %45, label %48 + +45: ; preds = %48, %39 + %46 = phi i64 [ %.pre4.i.i26, %48 ], [ %38, %39 ] + %47 = add i64 %46, %42 + store i64 %47, ptr %41, align 8 br label %"_ZN4core3ptr169drop_in_place$LT$$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$regex_syntax..hir..Hir$C$alloc..alloc..Global$GT$$GT$17h6e21b9c284abc3b6E.exit" -49: ; preds = %40 - %50 = load ptr, ptr %41, align 8, !nonnull !5, !noundef !5 - %51 = getelementptr inbounds { { i64, [4 x i64] }, ptr }, ptr %50, i64 %45 - %52 = getelementptr inbounds { { i64, [4 x i64] }, ptr }, ptr %50, i64 %43 - %53 = mul i64 %39, 48 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %52, ptr nonnull align 8 %51, i64 %53, i1 false) - %.pre4.i.i26 = load i64, ptr %38, align 8 - br label %46 +48: ; preds = %39 + %49 = load ptr, ptr %40, align 8, !nonnull !5, !noundef !5 + %50 = getelementptr inbounds { { i64, [4 x i64] }, ptr }, ptr %49, i64 %44 + %51 = getelementptr inbounds { { i64, [4 x i64] }, ptr }, ptr %49, i64 %42 + %52 = mul i64 %38, 48 + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %51, ptr nonnull align 8 %50, i64 %52, i1 false) + %.pre4.i.i26 = load i64, ptr %37, align 8 + br label %45 -"_ZN4core3ptr169drop_in_place$LT$$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$regex_syntax..hir..Hir$C$alloc..alloc..Global$GT$$GT$17h6e21b9c284abc3b6E.exit": ; preds = %46, %37, %17, %9 +"_ZN4core3ptr169drop_in_place$LT$$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$regex_syntax..hir..Hir$C$alloc..alloc..Global$GT$$GT$17h6e21b9c284abc3b6E.exit": ; preds = %45, %36, %17, %9 ret void } @@ -11509,78 +11508,77 @@ define void @"_ZN79_$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..o %30 = load ptr, ptr %7, align 8, !nonnull !5, !noundef !5 %31 = ptrtoint ptr %30 to i64 %32 = sub nuw i64 %27, %31 - %33 = udiv exact i64 %32, 160 - %34 = getelementptr inbounds { [38 x i32], i32, [1 x i32] }, ptr %30, i64 %33 - br label %35 + %33 = getelementptr inbounds i8, ptr %30, i64 %32 + br label %34 -35: ; preds = %37, %25 - %.0.i = phi i64 [ 0, %25 ], [ %39, %37 ] - %36 = icmp eq i64 %.0.i, %29 - br i1 %36, label %"_ZN4core3ptr62drop_in_place$LT$$u5b$regex_syntax..ast..ClassSetItem$u5d$$GT$17hb8cf736a19ef94f6E.exit", label %37 +34: ; preds = %36, %25 + %.0.i = phi i64 [ 0, %25 ], [ %38, %36 ] + %35 = icmp eq i64 %.0.i, %29 + br i1 %35, label %"_ZN4core3ptr62drop_in_place$LT$$u5b$regex_syntax..ast..ClassSetItem$u5d$$GT$17hb8cf736a19ef94f6E.exit", label %36 -37: ; preds = %35 - %38 = getelementptr inbounds [0 x { [38 x i32], i32, [1 x i32] }], ptr %34, i64 0, i64 %.0.i - %39 = add nuw nsw i64 %.0.i, 1 - invoke void @"_ZN4core3ptr52drop_in_place$LT$regex_syntax..ast..ClassSetItem$GT$17h653b349f03c272d0E"(ptr nonnull align 8 %38) - to label %35 unwind label %42 +36: ; preds = %34 + %37 = getelementptr inbounds [0 x { [38 x i32], i32, [1 x i32] }], ptr %33, i64 0, i64 %.0.i + %38 = add nuw nsw i64 %.0.i, 1 + invoke void @"_ZN4core3ptr52drop_in_place$LT$regex_syntax..ast..ClassSetItem$GT$17h653b349f03c272d0E"(ptr nonnull align 8 %37) + to label %34 unwind label %41 -40: ; preds = %44, %42 - %.1.i = phi i64 [ %39, %42 ], [ %46, %44 ] - %41 = icmp eq i64 %.1.i, %29 - br i1 %41, label %.body, label %44 +39: ; preds = %43, %41 + %.1.i = phi i64 [ %38, %41 ], [ %45, %43 ] + %40 = icmp eq i64 %.1.i, %29 + br i1 %40, label %.body, label %43 -42: ; preds = %37 - %43 = landingpad { ptr, i32 } +41: ; preds = %36 + %42 = landingpad { ptr, i32 } cleanup - br label %40 + br label %39 -44: ; preds = %40 - %45 = getelementptr inbounds [0 x { [38 x i32], i32, [1 x i32] }], ptr %34, i64 0, i64 %.1.i - %46 = add i64 %.1.i, 1 - invoke void @"_ZN4core3ptr52drop_in_place$LT$regex_syntax..ast..ClassSetItem$GT$17h653b349f03c272d0E"(ptr nonnull align 8 %45) #11 - to label %40 unwind label %47 +43: ; preds = %39 + %44 = getelementptr inbounds [0 x { [38 x i32], i32, [1 x i32] }], ptr %33, i64 0, i64 %.1.i + %45 = add i64 %.1.i, 1 + invoke void @"_ZN4core3ptr52drop_in_place$LT$regex_syntax..ast..ClassSetItem$GT$17h653b349f03c272d0E"(ptr nonnull align 8 %44) #11 + to label %39 unwind label %46 -47: ; preds = %44 - %48 = landingpad { ptr, i32 } +46: ; preds = %43 + %47 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hd44bb2114362504eE() #12 unreachable -.body: ; preds = %40 +.body: ; preds = %39 call void @"_ZN4core3ptr178drop_in_place$LT$$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$regex_syntax..ast..ClassSetItem$C$alloc..alloc..Global$GT$$GT$17h62e50360348ef897E"(ptr nonnull align 8 %2) #11 - resume { ptr, i32 } %43 + resume { ptr, i32 } %42 -"_ZN4core3ptr62drop_in_place$LT$$u5b$regex_syntax..ast..ClassSetItem$u5d$$GT$17hb8cf736a19ef94f6E.exit": ; preds = %35 - %49 = getelementptr inbounds i8, ptr %0, i64 32 - %50 = load i64, ptr %49, align 8, !noundef !5 - %.not.i.i22 = icmp eq i64 %50, 0 - br i1 %.not.i.i22, label %"_ZN4core3ptr178drop_in_place$LT$$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$regex_syntax..ast..ClassSetItem$C$alloc..alloc..Global$GT$$GT$17h62e50360348ef897E.exit", label %51 - -51: ; preds = %"_ZN4core3ptr62drop_in_place$LT$$u5b$regex_syntax..ast..ClassSetItem$u5d$$GT$17hb8cf736a19ef94f6E.exit" - %52 = load ptr, ptr %6, align 8, !nonnull !5, !noundef !5 - %53 = getelementptr inbounds i8, ptr %52, i64 16 - %54 = load i64, ptr %53, align 8, !noundef !5 - %55 = getelementptr inbounds i8, ptr %0, i64 24 - %56 = load i64, ptr %55, align 8, !noundef !5 - %.not3.i.i23 = icmp eq i64 %56, %54 - br i1 %.not3.i.i23, label %57, label %60 - -57: ; preds = %60, %51 - %58 = phi i64 [ %.pre4.i.i26, %60 ], [ %50, %51 ] - %59 = add i64 %58, %54 - store i64 %59, ptr %53, align 8 +"_ZN4core3ptr62drop_in_place$LT$$u5b$regex_syntax..ast..ClassSetItem$u5d$$GT$17hb8cf736a19ef94f6E.exit": ; preds = %34 + %48 = getelementptr inbounds i8, ptr %0, i64 32 + %49 = load i64, ptr %48, align 8, !noundef !5 + %.not.i.i22 = icmp eq i64 %49, 0 + br i1 %.not.i.i22, label %"_ZN4core3ptr178drop_in_place$LT$$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$regex_syntax..ast..ClassSetItem$C$alloc..alloc..Global$GT$$GT$17h62e50360348ef897E.exit", label %50 + +50: ; preds = %"_ZN4core3ptr62drop_in_place$LT$$u5b$regex_syntax..ast..ClassSetItem$u5d$$GT$17hb8cf736a19ef94f6E.exit" + %51 = load ptr, ptr %6, align 8, !nonnull !5, !noundef !5 + %52 = getelementptr inbounds i8, ptr %51, i64 16 + %53 = load i64, ptr %52, align 8, !noundef !5 + %54 = getelementptr inbounds i8, ptr %0, i64 24 + %55 = load i64, ptr %54, align 8, !noundef !5 + %.not3.i.i23 = icmp eq i64 %55, %53 + br i1 %.not3.i.i23, label %56, label %59 + +56: ; preds = %59, %50 + %57 = phi i64 [ %.pre4.i.i26, %59 ], [ %49, %50 ] + %58 = add i64 %57, %53 + store i64 %58, ptr %52, align 8 br label %"_ZN4core3ptr178drop_in_place$LT$$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$regex_syntax..ast..ClassSetItem$C$alloc..alloc..Global$GT$$GT$17h62e50360348ef897E.exit" -60: ; preds = %51 - %61 = load ptr, ptr %52, align 8, !nonnull !5, !noundef !5 - %62 = getelementptr inbounds { [38 x i32], i32, [1 x i32] }, ptr %61, i64 %56 - %63 = getelementptr inbounds { [38 x i32], i32, [1 x i32] }, ptr %61, i64 %54 - %64 = mul i64 %50, 160 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %63, ptr nonnull align 8 %62, i64 %64, i1 false) - %.pre4.i.i26 = load i64, ptr %49, align 8 - br label %57 +59: ; preds = %50 + %60 = load ptr, ptr %51, align 8, !nonnull !5, !noundef !5 + %61 = getelementptr inbounds { [38 x i32], i32, [1 x i32] }, ptr %60, i64 %55 + %62 = getelementptr inbounds { [38 x i32], i32, [1 x i32] }, ptr %60, i64 %53 + %63 = mul i64 %49, 160 + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %62, ptr nonnull align 8 %61, i64 %63, i1 false) + %.pre4.i.i26 = load i64, ptr %48, align 8 + br label %56 -"_ZN4core3ptr178drop_in_place$LT$$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$regex_syntax..ast..ClassSetItem$C$alloc..alloc..Global$GT$$GT$17h62e50360348ef897E.exit": ; preds = %57, %"_ZN4core3ptr62drop_in_place$LT$$u5b$regex_syntax..ast..ClassSetItem$u5d$$GT$17hb8cf736a19ef94f6E.exit", %17, %9 +"_ZN4core3ptr178drop_in_place$LT$$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$regex_syntax..ast..ClassSetItem$C$alloc..alloc..Global$GT$$GT$17h62e50360348ef897E.exit": ; preds = %56, %"_ZN4core3ptr62drop_in_place$LT$$u5b$regex_syntax..ast..ClassSetItem$u5d$$GT$17hb8cf736a19ef94f6E.exit", %17, %9 ret void } @@ -11635,78 +11633,77 @@ define void @"_ZN79_$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..o %30 = load ptr, ptr %7, align 8, !nonnull !5, !noundef !5 %31 = ptrtoint ptr %30 to i64 %32 = sub nuw i64 %26, %31 - %33 = lshr exact i64 %32, 4 - %34 = getelementptr inbounds { i64, ptr }, ptr %30, i64 %33 - br label %35 + %33 = getelementptr inbounds i8, ptr %30, i64 %32 + br label %34 -35: ; preds = %37, %25 - %.0.i = phi i64 [ 0, %25 ], [ %39, %37 ] - %36 = icmp eq i64 %.0.i, %29 - br i1 %36, label %"_ZN4core3ptr53drop_in_place$LT$$u5b$regex_syntax..ast..Ast$u5d$$GT$17h6036ab9a53480f08E.exit", label %37 +34: ; preds = %36, %25 + %.0.i = phi i64 [ 0, %25 ], [ %38, %36 ] + %35 = icmp eq i64 %.0.i, %29 + br i1 %35, label %"_ZN4core3ptr53drop_in_place$LT$$u5b$regex_syntax..ast..Ast$u5d$$GT$17h6036ab9a53480f08E.exit", label %36 -37: ; preds = %35 - %38 = getelementptr inbounds [0 x { i64, ptr }], ptr %34, i64 0, i64 %.0.i - %39 = add nuw nsw i64 %.0.i, 1 - invoke void @"_ZN4core3ptr43drop_in_place$LT$regex_syntax..ast..Ast$GT$17h47bcfc7d4c551291E"(ptr nonnull align 8 %38) - to label %35 unwind label %42 +36: ; preds = %34 + %37 = getelementptr inbounds [0 x { i64, ptr }], ptr %33, i64 0, i64 %.0.i + %38 = add nuw nsw i64 %.0.i, 1 + invoke void @"_ZN4core3ptr43drop_in_place$LT$regex_syntax..ast..Ast$GT$17h47bcfc7d4c551291E"(ptr nonnull align 8 %37) + to label %34 unwind label %41 -40: ; preds = %44, %42 - %.1.i = phi i64 [ %39, %42 ], [ %46, %44 ] - %41 = icmp eq i64 %.1.i, %29 - br i1 %41, label %.body, label %44 +39: ; preds = %43, %41 + %.1.i = phi i64 [ %38, %41 ], [ %45, %43 ] + %40 = icmp eq i64 %.1.i, %29 + br i1 %40, label %.body, label %43 -42: ; preds = %37 - %43 = landingpad { ptr, i32 } +41: ; preds = %36 + %42 = landingpad { ptr, i32 } cleanup - br label %40 + br label %39 -44: ; preds = %40 - %45 = getelementptr inbounds [0 x { i64, ptr }], ptr %34, i64 0, i64 %.1.i - %46 = add i64 %.1.i, 1 - invoke void @"_ZN4core3ptr43drop_in_place$LT$regex_syntax..ast..Ast$GT$17h47bcfc7d4c551291E"(ptr nonnull align 8 %45) #11 - to label %40 unwind label %47 +43: ; preds = %39 + %44 = getelementptr inbounds [0 x { i64, ptr }], ptr %33, i64 0, i64 %.1.i + %45 = add i64 %.1.i, 1 + invoke void @"_ZN4core3ptr43drop_in_place$LT$regex_syntax..ast..Ast$GT$17h47bcfc7d4c551291E"(ptr nonnull align 8 %44) #11 + to label %39 unwind label %46 -47: ; preds = %44 - %48 = landingpad { ptr, i32 } +46: ; preds = %43 + %47 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hd44bb2114362504eE() #12 unreachable -.body: ; preds = %40 +.body: ; preds = %39 call void @"_ZN4core3ptr169drop_in_place$LT$$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$regex_syntax..ast..Ast$C$alloc..alloc..Global$GT$$GT$17h0d19bafa91ee9421E"(ptr nonnull align 8 %2) #11 - resume { ptr, i32 } %43 + resume { ptr, i32 } %42 -"_ZN4core3ptr53drop_in_place$LT$$u5b$regex_syntax..ast..Ast$u5d$$GT$17h6036ab9a53480f08E.exit": ; preds = %35 - %49 = getelementptr inbounds i8, ptr %0, i64 32 - %50 = load i64, ptr %49, align 8, !noundef !5 - %.not.i.i22 = icmp eq i64 %50, 0 - br i1 %.not.i.i22, label %"_ZN4core3ptr169drop_in_place$LT$$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$regex_syntax..ast..Ast$C$alloc..alloc..Global$GT$$GT$17h0d19bafa91ee9421E.exit", label %51 - -51: ; preds = %"_ZN4core3ptr53drop_in_place$LT$$u5b$regex_syntax..ast..Ast$u5d$$GT$17h6036ab9a53480f08E.exit" - %52 = load ptr, ptr %6, align 8, !nonnull !5, !noundef !5 - %53 = getelementptr inbounds i8, ptr %52, i64 16 - %54 = load i64, ptr %53, align 8, !noundef !5 - %55 = getelementptr inbounds i8, ptr %0, i64 24 - %56 = load i64, ptr %55, align 8, !noundef !5 - %.not3.i.i23 = icmp eq i64 %56, %54 - br i1 %.not3.i.i23, label %57, label %60 - -57: ; preds = %60, %51 - %58 = phi i64 [ %.pre4.i.i26, %60 ], [ %50, %51 ] - %59 = add i64 %58, %54 - store i64 %59, ptr %53, align 8 +"_ZN4core3ptr53drop_in_place$LT$$u5b$regex_syntax..ast..Ast$u5d$$GT$17h6036ab9a53480f08E.exit": ; preds = %34 + %48 = getelementptr inbounds i8, ptr %0, i64 32 + %49 = load i64, ptr %48, align 8, !noundef !5 + %.not.i.i22 = icmp eq i64 %49, 0 + br i1 %.not.i.i22, label %"_ZN4core3ptr169drop_in_place$LT$$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$regex_syntax..ast..Ast$C$alloc..alloc..Global$GT$$GT$17h0d19bafa91ee9421E.exit", label %50 + +50: ; preds = %"_ZN4core3ptr53drop_in_place$LT$$u5b$regex_syntax..ast..Ast$u5d$$GT$17h6036ab9a53480f08E.exit" + %51 = load ptr, ptr %6, align 8, !nonnull !5, !noundef !5 + %52 = getelementptr inbounds i8, ptr %51, i64 16 + %53 = load i64, ptr %52, align 8, !noundef !5 + %54 = getelementptr inbounds i8, ptr %0, i64 24 + %55 = load i64, ptr %54, align 8, !noundef !5 + %.not3.i.i23 = icmp eq i64 %55, %53 + br i1 %.not3.i.i23, label %56, label %59 + +56: ; preds = %59, %50 + %57 = phi i64 [ %.pre4.i.i26, %59 ], [ %49, %50 ] + %58 = add i64 %57, %53 + store i64 %58, ptr %52, align 8 br label %"_ZN4core3ptr169drop_in_place$LT$$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$regex_syntax..ast..Ast$C$alloc..alloc..Global$GT$$GT$17h0d19bafa91ee9421E.exit" -60: ; preds = %51 - %61 = load ptr, ptr %52, align 8, !nonnull !5, !noundef !5 - %62 = getelementptr inbounds { i64, ptr }, ptr %61, i64 %56 - %63 = getelementptr inbounds { i64, ptr }, ptr %61, i64 %54 - %64 = shl i64 %50, 4 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %63, ptr nonnull align 8 %62, i64 %64, i1 false) - %.pre4.i.i26 = load i64, ptr %49, align 8 - br label %57 +59: ; preds = %50 + %60 = load ptr, ptr %51, align 8, !nonnull !5, !noundef !5 + %61 = getelementptr inbounds { i64, ptr }, ptr %60, i64 %55 + %62 = getelementptr inbounds { i64, ptr }, ptr %60, i64 %53 + %63 = shl i64 %49, 4 + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %62, ptr nonnull align 8 %61, i64 %63, i1 false) + %.pre4.i.i26 = load i64, ptr %48, align 8 + br label %56 -"_ZN4core3ptr169drop_in_place$LT$$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$regex_syntax..ast..Ast$C$alloc..alloc..Global$GT$$GT$17h0d19bafa91ee9421E.exit": ; preds = %57, %"_ZN4core3ptr53drop_in_place$LT$$u5b$regex_syntax..ast..Ast$u5d$$GT$17h6036ab9a53480f08E.exit", %17, %9 +"_ZN4core3ptr169drop_in_place$LT$$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$regex_syntax..ast..Ast$C$alloc..alloc..Global$GT$$GT$17h0d19bafa91ee9421E.exit": ; preds = %56, %"_ZN4core3ptr53drop_in_place$LT$$u5b$regex_syntax..ast..Ast$u5d$$GT$17h6036ab9a53480f08E.exit", %17, %9 ret void } @@ -11835,94 +11832,93 @@ define void @"_ZN79_$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..o %30 = load ptr, ptr %8, align 8, !nonnull !5, !noundef !5 %31 = ptrtoint ptr %30 to i64 %32 = sub nuw i64 %26, %31 - %33 = lshr exact i64 %32, 5 - %34 = getelementptr inbounds { { { ptr, i64 }, i64 }, i8, [7 x i8] }, ptr %30, i64 %33 - %35 = getelementptr inbounds i8, ptr %2, i64 8 - %36 = getelementptr inbounds i8, ptr %2, i64 16 - br label %37 + %33 = getelementptr inbounds i8, ptr %30, i64 %32 + %34 = getelementptr inbounds i8, ptr %2, i64 8 + %35 = getelementptr inbounds i8, ptr %2, i64 16 + br label %36 -37: ; preds = %"_ZN4core3ptr56drop_in_place$LT$regex_syntax..hir..literal..Literal$GT$17hd93d6b96cc1623ceE.exit.i", %.lr.ph.i - %.09.i = phi i64 [ 0, %.lr.ph.i ], [ %39, %"_ZN4core3ptr56drop_in_place$LT$regex_syntax..hir..literal..Literal$GT$17hd93d6b96cc1623ceE.exit.i" ] - %38 = getelementptr inbounds [0 x { { { ptr, i64 }, i64 }, i8, [7 x i8] }], ptr %34, i64 0, i64 %.09.i - %39 = add nuw i64 %.09.i, 1 +36: ; preds = %"_ZN4core3ptr56drop_in_place$LT$regex_syntax..hir..literal..Literal$GT$17hd93d6b96cc1623ceE.exit.i", %.lr.ph.i + %.09.i = phi i64 [ 0, %.lr.ph.i ], [ %38, %"_ZN4core3ptr56drop_in_place$LT$regex_syntax..hir..literal..Literal$GT$17hd93d6b96cc1623ceE.exit.i" ] + %37 = getelementptr inbounds [0 x { { { ptr, i64 }, i64 }, i8, [7 x i8] }], ptr %33, i64 0, i64 %.09.i + %38 = add nuw i64 %.09.i, 1 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %2) - invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h23ce89c7503e662fE"(ptr nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 %2, ptr nonnull align 8 %38) - to label %.noexc.i unwind label %48 + invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h23ce89c7503e662fE"(ptr nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 %2, ptr nonnull align 8 %37) + to label %.noexc.i unwind label %47 -.noexc.i: ; preds = %37 - %40 = load i64, ptr %35, align 8, !range !7, !noundef !5 - %.not.i.i.i.i.i = icmp eq i64 %40, 0 - br i1 %.not.i.i.i.i.i, label %"_ZN4core3ptr56drop_in_place$LT$regex_syntax..hir..literal..Literal$GT$17hd93d6b96cc1623ceE.exit.i", label %41 +.noexc.i: ; preds = %36 + %39 = load i64, ptr %34, align 8, !range !7, !noundef !5 + %.not.i.i.i.i.i = icmp eq i64 %39, 0 + br i1 %.not.i.i.i.i.i, label %"_ZN4core3ptr56drop_in_place$LT$regex_syntax..hir..literal..Literal$GT$17hd93d6b96cc1623ceE.exit.i", label %40 -41: ; preds = %.noexc.i - %42 = load ptr, ptr %2, align 8, !nonnull !5, !noundef !5 - %43 = load i64, ptr %36, align 8, !noundef !5 - %44 = getelementptr i8, ptr %38, i64 16 - invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h77bae2a4fa5a87f8E"(ptr align 1 %44, ptr nonnull %42, i64 %40, i64 %43) - to label %"_ZN4core3ptr56drop_in_place$LT$regex_syntax..hir..literal..Literal$GT$17hd93d6b96cc1623ceE.exit.i" unwind label %48 +40: ; preds = %.noexc.i + %41 = load ptr, ptr %2, align 8, !nonnull !5, !noundef !5 + %42 = load i64, ptr %35, align 8, !noundef !5 + %43 = getelementptr i8, ptr %37, i64 16 + invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h77bae2a4fa5a87f8E"(ptr align 1 %43, ptr nonnull %41, i64 %39, i64 %42) + to label %"_ZN4core3ptr56drop_in_place$LT$regex_syntax..hir..literal..Literal$GT$17hd93d6b96cc1623ceE.exit.i" unwind label %47 -"_ZN4core3ptr56drop_in_place$LT$regex_syntax..hir..literal..Literal$GT$17hd93d6b96cc1623ceE.exit.i": ; preds = %41, %.noexc.i +"_ZN4core3ptr56drop_in_place$LT$regex_syntax..hir..literal..Literal$GT$17hd93d6b96cc1623ceE.exit.i": ; preds = %40, %.noexc.i call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) - %45 = icmp eq i64 %39, %29 - br i1 %45, label %"_ZN4core3ptr66drop_in_place$LT$$u5b$regex_syntax..hir..literal..Literal$u5d$$GT$17h7f4c0f4570758c08E.exit", label %37 + %44 = icmp eq i64 %38, %29 + br i1 %44, label %"_ZN4core3ptr66drop_in_place$LT$$u5b$regex_syntax..hir..literal..Literal$u5d$$GT$17h7f4c0f4570758c08E.exit", label %36 -46: ; preds = %50, %48 - %.1.i = phi i64 [ %39, %48 ], [ %52, %50 ] - %47 = icmp eq i64 %.1.i, %29 - br i1 %47, label %.body, label %50 +45: ; preds = %49, %47 + %.1.i = phi i64 [ %38, %47 ], [ %51, %49 ] + %46 = icmp eq i64 %.1.i, %29 + br i1 %46, label %.body, label %49 -48: ; preds = %41, %37 - %49 = landingpad { ptr, i32 } +47: ; preds = %40, %36 + %48 = landingpad { ptr, i32 } cleanup - br label %46 + br label %45 -50: ; preds = %46 - %51 = getelementptr inbounds [0 x { { { ptr, i64 }, i64 }, i8, [7 x i8] }], ptr %34, i64 0, i64 %.1.i - %52 = add i64 %.1.i, 1 - invoke void @"_ZN4core3ptr56drop_in_place$LT$regex_syntax..hir..literal..Literal$GT$17hd93d6b96cc1623ceE"(ptr nonnull align 8 %51) #11 - to label %46 unwind label %53 +49: ; preds = %45 + %50 = getelementptr inbounds [0 x { { { ptr, i64 }, i64 }, i8, [7 x i8] }], ptr %33, i64 0, i64 %.1.i + %51 = add i64 %.1.i, 1 + invoke void @"_ZN4core3ptr56drop_in_place$LT$regex_syntax..hir..literal..Literal$GT$17hd93d6b96cc1623ceE"(ptr nonnull align 8 %50) #11 + to label %45 unwind label %52 -53: ; preds = %50 - %54 = landingpad { ptr, i32 } +52: ; preds = %49 + %53 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hd44bb2114362504eE() #12 unreachable -.body: ; preds = %46 +.body: ; preds = %45 call void @"_ZN4core3ptr182drop_in_place$LT$$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$regex_syntax..hir..literal..Literal$C$alloc..alloc..Global$GT$$GT$17h896d200ff4b6522aE"(ptr nonnull align 8 %3) #11 - resume { ptr, i32 } %49 + resume { ptr, i32 } %48 "_ZN4core3ptr66drop_in_place$LT$$u5b$regex_syntax..hir..literal..Literal$u5d$$GT$17h7f4c0f4570758c08E.exit": ; preds = %"_ZN4core3ptr56drop_in_place$LT$regex_syntax..hir..literal..Literal$GT$17hd93d6b96cc1623ceE.exit.i" - %55 = getelementptr inbounds i8, ptr %0, i64 32 - %56 = load i64, ptr %55, align 8, !noundef !5 - %.not.i.i22 = icmp eq i64 %56, 0 - br i1 %.not.i.i22, label %"_ZN4core3ptr182drop_in_place$LT$$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$regex_syntax..hir..literal..Literal$C$alloc..alloc..Global$GT$$GT$17h896d200ff4b6522aE.exit", label %57 - -57: ; preds = %"_ZN4core3ptr66drop_in_place$LT$$u5b$regex_syntax..hir..literal..Literal$u5d$$GT$17h7f4c0f4570758c08E.exit" - %58 = load ptr, ptr %7, align 8, !nonnull !5, !noundef !5 - %59 = getelementptr inbounds i8, ptr %58, i64 16 - %60 = load i64, ptr %59, align 8, !noundef !5 - %61 = getelementptr inbounds i8, ptr %0, i64 24 - %62 = load i64, ptr %61, align 8, !noundef !5 - %.not3.i.i23 = icmp eq i64 %62, %60 - br i1 %.not3.i.i23, label %63, label %66 - -63: ; preds = %66, %57 - %64 = phi i64 [ %.pre4.i.i26, %66 ], [ %56, %57 ] - %65 = add i64 %64, %60 - store i64 %65, ptr %59, align 8 + %54 = getelementptr inbounds i8, ptr %0, i64 32 + %55 = load i64, ptr %54, align 8, !noundef !5 + %.not.i.i22 = icmp eq i64 %55, 0 + br i1 %.not.i.i22, label %"_ZN4core3ptr182drop_in_place$LT$$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$regex_syntax..hir..literal..Literal$C$alloc..alloc..Global$GT$$GT$17h896d200ff4b6522aE.exit", label %56 + +56: ; preds = %"_ZN4core3ptr66drop_in_place$LT$$u5b$regex_syntax..hir..literal..Literal$u5d$$GT$17h7f4c0f4570758c08E.exit" + %57 = load ptr, ptr %7, align 8, !nonnull !5, !noundef !5 + %58 = getelementptr inbounds i8, ptr %57, i64 16 + %59 = load i64, ptr %58, align 8, !noundef !5 + %60 = getelementptr inbounds i8, ptr %0, i64 24 + %61 = load i64, ptr %60, align 8, !noundef !5 + %.not3.i.i23 = icmp eq i64 %61, %59 + br i1 %.not3.i.i23, label %62, label %65 + +62: ; preds = %65, %56 + %63 = phi i64 [ %.pre4.i.i26, %65 ], [ %55, %56 ] + %64 = add i64 %63, %59 + store i64 %64, ptr %58, align 8 br label %"_ZN4core3ptr182drop_in_place$LT$$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$regex_syntax..hir..literal..Literal$C$alloc..alloc..Global$GT$$GT$17h896d200ff4b6522aE.exit" -66: ; preds = %57 - %67 = load ptr, ptr %58, align 8, !nonnull !5, !noundef !5 - %68 = getelementptr inbounds { { { ptr, i64 }, i64 }, i8, [7 x i8] }, ptr %67, i64 %62 - %69 = getelementptr inbounds { { { ptr, i64 }, i64 }, i8, [7 x i8] }, ptr %67, i64 %60 - %70 = shl i64 %56, 5 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %69, ptr nonnull align 8 %68, i64 %70, i1 false) - %.pre4.i.i26 = load i64, ptr %55, align 8 - br label %63 +65: ; preds = %56 + %66 = load ptr, ptr %57, align 8, !nonnull !5, !noundef !5 + %67 = getelementptr inbounds { { { ptr, i64 }, i64 }, i8, [7 x i8] }, ptr %66, i64 %61 + %68 = getelementptr inbounds { { { ptr, i64 }, i64 }, i8, [7 x i8] }, ptr %66, i64 %59 + %69 = shl i64 %55, 5 + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %68, ptr nonnull align 8 %67, i64 %69, i1 false) + %.pre4.i.i26 = load i64, ptr %54, align 8 + br label %62 -"_ZN4core3ptr182drop_in_place$LT$$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$regex_syntax..hir..literal..Literal$C$alloc..alloc..Global$GT$$GT$17h896d200ff4b6522aE.exit": ; preds = %63, %"_ZN4core3ptr66drop_in_place$LT$$u5b$regex_syntax..hir..literal..Literal$u5d$$GT$17h7f4c0f4570758c08E.exit", %18, %10 +"_ZN4core3ptr182drop_in_place$LT$$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$regex_syntax..hir..literal..Literal$C$alloc..alloc..Global$GT$$GT$17h896d200ff4b6522aE.exit": ; preds = %62, %"_ZN4core3ptr66drop_in_place$LT$$u5b$regex_syntax..hir..literal..Literal$u5d$$GT$17h7f4c0f4570758c08E.exit", %18, %10 ret void } diff --git a/bench/regex-rs/optimized/5d10cjtvavkg3fib.ll b/bench/regex-rs/optimized/5d10cjtvavkg3fib.ll index 09d1a853dd4..0be851fc0d8 100644 --- a/bench/regex-rs/optimized/5d10cjtvavkg3fib.ll +++ b/bench/regex-rs/optimized/5d10cjtvavkg3fib.ll @@ -13924,94 +13924,93 @@ define void @"_ZN79_$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..o %30 = load ptr, ptr %8, align 8, !nonnull !5, !noundef !5 %31 = ptrtoint ptr %30 to i64 %32 = sub nuw i64 %27, %31 - %33 = udiv exact i64 %32, 24 - %34 = getelementptr inbounds { { { ptr, i64 }, i64 } }, ptr %30, i64 %33 - %35 = getelementptr inbounds i8, ptr %2, i64 8 - %36 = getelementptr inbounds i8, ptr %2, i64 16 - br label %37 - -37: ; preds = %"_ZN4core3ptr69drop_in_place$LT$regex_automata..nfa..thompson..range_trie..State$GT$17h7efa890953a871f7E.exit.i", %.lr.ph.i - %.09.i = phi i64 [ 0, %.lr.ph.i ], [ %39, %"_ZN4core3ptr69drop_in_place$LT$regex_automata..nfa..thompson..range_trie..State$GT$17h7efa890953a871f7E.exit.i" ] - %38 = getelementptr inbounds [0 x { { { ptr, i64 }, i64 } }], ptr %34, i64 0, i64 %.09.i - %39 = add nuw i64 %.09.i, 1 + %33 = getelementptr inbounds i8, ptr %30, i64 %32 + %34 = getelementptr inbounds i8, ptr %2, i64 8 + %35 = getelementptr inbounds i8, ptr %2, i64 16 + br label %36 + +36: ; preds = %"_ZN4core3ptr69drop_in_place$LT$regex_automata..nfa..thompson..range_trie..State$GT$17h7efa890953a871f7E.exit.i", %.lr.ph.i + %.09.i = phi i64 [ 0, %.lr.ph.i ], [ %38, %"_ZN4core3ptr69drop_in_place$LT$regex_automata..nfa..thompson..range_trie..State$GT$17h7efa890953a871f7E.exit.i" ] + %37 = getelementptr inbounds [0 x { { { ptr, i64 }, i64 } }], ptr %33, i64 0, i64 %.09.i + %38 = add nuw i64 %.09.i, 1 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %2) - invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h8a9de8ddfdf3c498E"(ptr nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 %2, ptr nonnull align 8 %38) - to label %.noexc.i unwind label %48 - -.noexc.i: ; preds = %37 - %40 = load i64, ptr %35, align 8, !range !18, !noundef !5 - %.not.i.i.i.i.i = icmp eq i64 %40, 0 - br i1 %.not.i.i.i.i.i, label %"_ZN4core3ptr69drop_in_place$LT$regex_automata..nfa..thompson..range_trie..State$GT$17h7efa890953a871f7E.exit.i", label %41 - -41: ; preds = %.noexc.i - %42 = load ptr, ptr %2, align 8, !nonnull !5, !noundef !5 - %43 = load i64, ptr %36, align 8, !noundef !5 - %44 = getelementptr i8, ptr %38, i64 16 - invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h17e6f182a6fab149E"(ptr align 1 %44, ptr nonnull %42, i64 %40, i64 %43) - to label %"_ZN4core3ptr69drop_in_place$LT$regex_automata..nfa..thompson..range_trie..State$GT$17h7efa890953a871f7E.exit.i" unwind label %48 - -"_ZN4core3ptr69drop_in_place$LT$regex_automata..nfa..thompson..range_trie..State$GT$17h7efa890953a871f7E.exit.i": ; preds = %41, %.noexc.i + invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h8a9de8ddfdf3c498E"(ptr nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 %2, ptr nonnull align 8 %37) + to label %.noexc.i unwind label %47 + +.noexc.i: ; preds = %36 + %39 = load i64, ptr %34, align 8, !range !18, !noundef !5 + %.not.i.i.i.i.i = icmp eq i64 %39, 0 + br i1 %.not.i.i.i.i.i, label %"_ZN4core3ptr69drop_in_place$LT$regex_automata..nfa..thompson..range_trie..State$GT$17h7efa890953a871f7E.exit.i", label %40 + +40: ; preds = %.noexc.i + %41 = load ptr, ptr %2, align 8, !nonnull !5, !noundef !5 + %42 = load i64, ptr %35, align 8, !noundef !5 + %43 = getelementptr i8, ptr %37, i64 16 + invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h17e6f182a6fab149E"(ptr align 1 %43, ptr nonnull %41, i64 %39, i64 %42) + to label %"_ZN4core3ptr69drop_in_place$LT$regex_automata..nfa..thompson..range_trie..State$GT$17h7efa890953a871f7E.exit.i" unwind label %47 + +"_ZN4core3ptr69drop_in_place$LT$regex_automata..nfa..thompson..range_trie..State$GT$17h7efa890953a871f7E.exit.i": ; preds = %40, %.noexc.i call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) - %45 = icmp eq i64 %39, %29 - br i1 %45, label %"_ZN4core3ptr79drop_in_place$LT$$u5b$regex_automata..nfa..thompson..range_trie..State$u5d$$GT$17hb59a808ed75d9554E.exit", label %37 + %44 = icmp eq i64 %38, %29 + br i1 %44, label %"_ZN4core3ptr79drop_in_place$LT$$u5b$regex_automata..nfa..thompson..range_trie..State$u5d$$GT$17hb59a808ed75d9554E.exit", label %36 -46: ; preds = %50, %48 - %.1.i = phi i64 [ %39, %48 ], [ %52, %50 ] - %47 = icmp eq i64 %.1.i, %29 - br i1 %47, label %.body, label %50 +45: ; preds = %49, %47 + %.1.i = phi i64 [ %38, %47 ], [ %51, %49 ] + %46 = icmp eq i64 %.1.i, %29 + br i1 %46, label %.body, label %49 -48: ; preds = %41, %37 - %49 = landingpad { ptr, i32 } +47: ; preds = %40, %36 + %48 = landingpad { ptr, i32 } cleanup - br label %46 + br label %45 -50: ; preds = %46 - %51 = getelementptr inbounds [0 x { { { ptr, i64 }, i64 } }], ptr %34, i64 0, i64 %.1.i - %52 = add i64 %.1.i, 1 - invoke void @"_ZN4core3ptr69drop_in_place$LT$regex_automata..nfa..thompson..range_trie..State$GT$17h7efa890953a871f7E"(ptr nonnull align 8 %51) #14 - to label %46 unwind label %53 +49: ; preds = %45 + %50 = getelementptr inbounds [0 x { { { ptr, i64 }, i64 } }], ptr %33, i64 0, i64 %.1.i + %51 = add i64 %.1.i, 1 + invoke void @"_ZN4core3ptr69drop_in_place$LT$regex_automata..nfa..thompson..range_trie..State$GT$17h7efa890953a871f7E"(ptr nonnull align 8 %50) #14 + to label %45 unwind label %52 -53: ; preds = %50 - %54 = landingpad { ptr, i32 } +52: ; preds = %49 + %53 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hd44bb2114362504eE() #13 unreachable -.body: ; preds = %46 +.body: ; preds = %45 call void @"_ZN4core3ptr195drop_in_place$LT$$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$regex_automata..nfa..thompson..range_trie..State$C$alloc..alloc..Global$GT$$GT$17h3a9260b779a96e02E"(ptr nonnull align 8 %3) #14 - resume { ptr, i32 } %49 + resume { ptr, i32 } %48 "_ZN4core3ptr79drop_in_place$LT$$u5b$regex_automata..nfa..thompson..range_trie..State$u5d$$GT$17hb59a808ed75d9554E.exit": ; preds = %"_ZN4core3ptr69drop_in_place$LT$regex_automata..nfa..thompson..range_trie..State$GT$17h7efa890953a871f7E.exit.i" - %55 = getelementptr inbounds i8, ptr %0, i64 32 - %56 = load i64, ptr %55, align 8, !noundef !5 - %.not.i.i22 = icmp eq i64 %56, 0 - br i1 %.not.i.i22, label %"_ZN4core3ptr195drop_in_place$LT$$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$regex_automata..nfa..thompson..range_trie..State$C$alloc..alloc..Global$GT$$GT$17h3a9260b779a96e02E.exit", label %57 - -57: ; preds = %"_ZN4core3ptr79drop_in_place$LT$$u5b$regex_automata..nfa..thompson..range_trie..State$u5d$$GT$17hb59a808ed75d9554E.exit" - %58 = load ptr, ptr %7, align 8, !nonnull !5, !noundef !5 - %59 = getelementptr inbounds i8, ptr %58, i64 16 - %60 = load i64, ptr %59, align 8, !noundef !5 - %61 = getelementptr inbounds i8, ptr %0, i64 24 - %62 = load i64, ptr %61, align 8, !noundef !5 - %.not3.i.i23 = icmp eq i64 %62, %60 - br i1 %.not3.i.i23, label %63, label %66 - -63: ; preds = %66, %57 - %64 = phi i64 [ %.pre4.i.i26, %66 ], [ %56, %57 ] - %65 = add i64 %64, %60 - store i64 %65, ptr %59, align 8 + %54 = getelementptr inbounds i8, ptr %0, i64 32 + %55 = load i64, ptr %54, align 8, !noundef !5 + %.not.i.i22 = icmp eq i64 %55, 0 + br i1 %.not.i.i22, label %"_ZN4core3ptr195drop_in_place$LT$$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$regex_automata..nfa..thompson..range_trie..State$C$alloc..alloc..Global$GT$$GT$17h3a9260b779a96e02E.exit", label %56 + +56: ; preds = %"_ZN4core3ptr79drop_in_place$LT$$u5b$regex_automata..nfa..thompson..range_trie..State$u5d$$GT$17hb59a808ed75d9554E.exit" + %57 = load ptr, ptr %7, align 8, !nonnull !5, !noundef !5 + %58 = getelementptr inbounds i8, ptr %57, i64 16 + %59 = load i64, ptr %58, align 8, !noundef !5 + %60 = getelementptr inbounds i8, ptr %0, i64 24 + %61 = load i64, ptr %60, align 8, !noundef !5 + %.not3.i.i23 = icmp eq i64 %61, %59 + br i1 %.not3.i.i23, label %62, label %65 + +62: ; preds = %65, %56 + %63 = phi i64 [ %.pre4.i.i26, %65 ], [ %55, %56 ] + %64 = add i64 %63, %59 + store i64 %64, ptr %58, align 8 br label %"_ZN4core3ptr195drop_in_place$LT$$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$regex_automata..nfa..thompson..range_trie..State$C$alloc..alloc..Global$GT$$GT$17h3a9260b779a96e02E.exit" -66: ; preds = %57 - %67 = load ptr, ptr %58, align 8, !nonnull !5, !noundef !5 - %68 = getelementptr inbounds { { { ptr, i64 }, i64 } }, ptr %67, i64 %62 - %69 = getelementptr inbounds { { { ptr, i64 }, i64 } }, ptr %67, i64 %60 - %70 = mul i64 %56, 24 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %69, ptr nonnull align 8 %68, i64 %70, i1 false) - %.pre4.i.i26 = load i64, ptr %55, align 8 - br label %63 +65: ; preds = %56 + %66 = load ptr, ptr %57, align 8, !nonnull !5, !noundef !5 + %67 = getelementptr inbounds { { { ptr, i64 }, i64 } }, ptr %66, i64 %61 + %68 = getelementptr inbounds { { { ptr, i64 }, i64 } }, ptr %66, i64 %59 + %69 = mul i64 %55, 24 + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %68, ptr nonnull align 8 %67, i64 %69, i1 false) + %.pre4.i.i26 = load i64, ptr %54, align 8 + br label %62 -"_ZN4core3ptr195drop_in_place$LT$$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$regex_automata..nfa..thompson..range_trie..State$C$alloc..alloc..Global$GT$$GT$17h3a9260b779a96e02E.exit": ; preds = %63, %"_ZN4core3ptr79drop_in_place$LT$$u5b$regex_automata..nfa..thompson..range_trie..State$u5d$$GT$17hb59a808ed75d9554E.exit", %18, %10 +"_ZN4core3ptr195drop_in_place$LT$$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$regex_automata..nfa..thompson..range_trie..State$C$alloc..alloc..Global$GT$$GT$17h3a9260b779a96e02E.exit": ; preds = %62, %"_ZN4core3ptr79drop_in_place$LT$$u5b$regex_automata..nfa..thompson..range_trie..State$u5d$$GT$17hb59a808ed75d9554E.exit", %18, %10 ret void }