From 460fefeb32f6ed3b9dae11e98939f13467dd060b Mon Sep 17 00:00:00 2001 From: nikic <216080+nikic@users.noreply.github.com> Date: Thu, 9 Jan 2025 16:24:06 +0800 Subject: [PATCH 1/2] pre-commit: PR122165 --- scripts/setup_pre_commit_patch.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c5409e09ef4..3629882b01e 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/122165 export COMPTIME_MODE=0 # Please rebase manually From 61b3a75d750258745b1e6d92e75acf76efa0b877 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 9 Jan 2025 08:45:26 +0000 Subject: [PATCH 2/2] pre-commit: Update --- bench/abseil-cpp/optimized/numbers.cc.ll | 166 +++++++++--------- bench/arrow/optimized/basic_decimal.cc.ll | 12 +- bench/boost/optimized/src.ll | 6 +- bench/c3c/optimized/bigint.c.ll | 62 +++---- bench/clamav/optimized/qtmd.c.ll | 8 +- bench/cpython/optimized/dtoa.ll | 2 +- .../optimized/ub_duckdb_common_types.cpp.ll | 48 +++-- bench/meshlab/optimized/gltf_loader.cpp.ll | 4 +- .../openjdk/optimized/mlib_c_ImageLookUp_f.ll | 16 +- bench/php/optimized/hash_ripemd.ll | 112 ++++++------ bench/php/optimized/hash_snefru.ll | 32 ++-- bench/postgres/optimized/nodeHash.ll | 14 +- 12 files changed, 233 insertions(+), 249 deletions(-) diff --git a/bench/abseil-cpp/optimized/numbers.cc.ll b/bench/abseil-cpp/optimized/numbers.cc.ll index 50f5eea64b0..5f0a8793d54 100644 --- a/bench/abseil-cpp/optimized/numbers.cc.ll +++ b/bench/abseil-cpp/optimized/numbers.cc.ll @@ -1134,18 +1134,18 @@ if.then98.i: ; preds = %if.then92.i if.else105.i: ; preds = %if.then92.i %5 = tail call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %conv101.i, i1 true) - %shl.i.i = shl i64 %conv101.i, %5 + %6 = tail call i64 @llvm.fshl.i64(i64 %conv101.i, i64 0, i64 %5) %sub113.i = sub nsw i32 5, %exp.8.i %call114.i = tail call fastcc { i64, i64 } @_ZN4abslL7PowFiveEmi(i64 noundef %shl.i, i32 noundef %sub113.i) - %6 = extractvalue { i64, i64 } %call114.i, 0 - %7 = extractvalue { i64, i64 } %call114.i, 1 + %7 = extractvalue { i64, i64 } %call114.i, 0 + %8 = extractvalue { i64, i64 } %call114.i, 1 br label %if.end116.i if.end116.i: ; preds = %if.else105.i, %if.then98.i - %val.sroa.5.0.i = phi i64 [ 0, %if.then98.i ], [ %7, %if.else105.i ] - %val.sroa.0.0.i = phi i64 [ %shl.i, %if.then98.i ], [ %6, %if.else105.i ] + %val.sroa.5.0.i = phi i64 [ 0, %if.then98.i ], [ %8, %if.else105.i ] + %val.sroa.0.0.i = phi i64 [ %shl.i, %if.then98.i ], [ %7, %if.else105.i ] %edge.sroa.5.0.i = phi i64 [ %4, %if.then98.i ], [ 0, %if.else105.i ] - %edge.sroa.0.0.i = phi i64 [ %3, %if.then98.i ], [ %shl.i.i, %if.else105.i ] + %edge.sroa.0.0.i = phi i64 [ %3, %if.then98.i ], [ %6, %if.else105.i ] %cmp.i.i.i = icmp ult i64 %edge.sroa.0.0.i, %val.sroa.0.0.i br i1 %cmp.i.i.i, label %if.then118.i, label %lor.rhs.i.i.i @@ -1162,8 +1162,8 @@ if.then118.i: ; preds = %lor.rhs.i.i.i, %if. if.else119.i: ; preds = %lor.rhs.i.i.i %cmp.i.i = icmp eq i64 %val.sroa.0.0.i, %edge.sroa.0.0.i %cmp3.i.i = icmp eq i64 %val.sroa.5.0.i, %edge.sroa.5.0.i - %8 = select i1 %cmp.i.i, i1 %cmp3.i.i, i1 false - br i1 %8, label %if.then121.i, label %_ZN4abslL10SplitToSixEd.exit + %9 = select i1 %cmp.i.i, i1 %cmp3.i.i, i1 false + br i1 %9, label %if.then121.i, label %_ZN4abslL10SplitToSixEd.exit if.then121.i: ; preds = %if.else119.i %and.i = and i32 %conv93.i, 1 @@ -1186,42 +1186,42 @@ _ZN4abslL10SplitToSixEd.exit: ; preds = %if.then118.i, %if.e %mul135.neg.i = mul i32 %div134.i, -10000 %sub136.i = add i32 %mul135.neg.i, %spec.select.i %narrow.i = mul nuw nsw i32 %div134.i, 103 - %9 = lshr i32 %narrow.i, 10 - %mul2.neg.i.i = mul nuw nsw i32 %9, 246 + %10 = lshr i32 %narrow.i, 10 + %mul2.neg.i.i = mul nuw nsw i32 %10, 246 %sub.i.i = add nuw nsw i32 %mul2.neg.i.i, %div134.i - %shl.i87.i = shl nuw i32 %sub.i.i, 8 + %shl.i.i = shl nuw i32 %sub.i.i, 8 %div137.i = udiv i32 %sub136.i, 100 %mul138.neg.i = mul i32 %div137.i, -100 %sub139.i = add i32 %mul138.neg.i, %sub136.i - %conv.i89.i = zext nneg i32 %div137.i to i64 - %mul.i90.i = mul nuw nsw i64 %conv.i89.i, 103 - %div4.i91.i = lshr i64 %mul.i90.i, 10 - %conv1.i92.i = trunc nuw nsw i64 %div4.i91.i to i32 - %mul2.neg.i93.i = mul nuw nsw i32 %conv1.i92.i, 246 - %sub.i94.i = add nuw nsw i32 %mul2.neg.i93.i, %div137.i - %shl.i95.i = shl i32 %sub.i94.i, 8 - %conv.i98.i = zext i32 %sub139.i to i64 - %mul.i99.i = mul nuw nsw i64 %conv.i98.i, 103 - %div4.i100.i = lshr i64 %mul.i99.i, 10 - %conv1.i101.i = trunc nuw nsw i64 %div4.i100.i to i32 - %mul2.neg.i102.i = mul i32 %conv1.i101.i, 246 - %sub.i103.i = add i32 %mul2.neg.i102.i, %sub139.i - %shl.i104.i = shl i32 %sub.i103.i, 8 - %add.i105.i = add nuw nsw i32 %conv1.i101.i, 12336 - %conv4.i106.i = add i32 %shl.i104.i, %add.i105.i - %add.i96.i = add nuw nsw i32 %conv1.i92.i, 12336 - %10 = add i32 %add.i96.i, %shl.i95.i - %11 = and i32 %10, 65535 - %retval.sroa.3.0.insert.ext.i = zext nneg i32 %11 to i64 + %conv.i87.i = zext nneg i32 %div137.i to i64 + %mul.i88.i = mul nuw nsw i64 %conv.i87.i, 103 + %div4.i89.i = lshr i64 %mul.i88.i, 10 + %conv1.i90.i = trunc nuw nsw i64 %div4.i89.i to i32 + %mul2.neg.i91.i = mul nuw nsw i32 %conv1.i90.i, 246 + %sub.i92.i = add nuw nsw i32 %mul2.neg.i91.i, %div137.i + %shl.i93.i = shl i32 %sub.i92.i, 8 + %conv.i96.i = zext i32 %sub139.i to i64 + %mul.i97.i = mul nuw nsw i64 %conv.i96.i, 103 + %div4.i98.i = lshr i64 %mul.i97.i, 10 + %conv1.i99.i = trunc nuw nsw i64 %div4.i98.i to i32 + %mul2.neg.i100.i = mul i32 %conv1.i99.i, 246 + %sub.i101.i = add i32 %mul2.neg.i100.i, %sub139.i + %shl.i102.i = shl i32 %sub.i101.i, 8 + %add.i103.i = add nuw nsw i32 %conv1.i99.i, 12336 + %conv4.i104.i = add i32 %shl.i102.i, %add.i103.i + %add.i94.i = add nuw nsw i32 %conv1.i90.i, 12336 + %11 = add i32 %add.i94.i, %shl.i93.i + %12 = and i32 %11, 65535 + %retval.sroa.3.0.insert.ext.i = zext nneg i32 %12 to i64 %retval.sroa.3.0.insert.shift.i = shl nuw i64 %retval.sroa.3.0.insert.ext.i, 48 - %add.i88.i = add nuw nsw i32 %9, 12336 - %12 = add nuw i32 %shl.i87.i, %add.i88.i - %13 = and i32 %12, 65280 - %retval.sroa.2.0.insert.ext.i = zext nneg i32 %13 to i64 + %add.i.i = add nuw nsw i32 %10, 12336 + %13 = add nuw i32 %shl.i.i, %add.i.i + %14 = and i32 %13, 65280 + %retval.sroa.2.0.insert.ext.i = zext nneg i32 %14 to i64 %retval.sroa.2.0.insert.shift.i = shl nuw nsw i64 %retval.sroa.2.0.insert.ext.i, 32 %retval.sroa.0.0.insert.insert.i = or disjoint i64 %retval.sroa.3.0.insert.shift.i, %retval.sroa.2.0.insert.shift.i call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %exp2.i) - %exp_dig.sroa.0.sroa.2.0.extract.trunc = trunc i32 %add.i88.i to i8 + %exp_dig.sroa.0.sroa.2.0.extract.trunc = trunc i32 %add.i.i to i8 %exp_dig.sroa.0.sroa.10.0.extract.shift = lshr exact i64 %retval.sroa.0.0.insert.insert.i, 40 %exp_dig.sroa.0.sroa.10.0.extract.trunc = trunc nuw i64 %exp_dig.sroa.0.sroa.10.0.extract.shift to i24 store i8 48, ptr %out.1, align 1 @@ -1244,7 +1244,7 @@ sw.bb: ; preds = %_ZN4abslL10SplitToS store i8 %exp_dig.sroa.0.sroa.2.0.extract.trunc, ptr %out.1, align 1 store i24 %exp_dig.sroa.0.sroa.10.0.extract.trunc, ptr %arrayidx22, align 1 %exp_dig.sroa.14.4.out.1.sroa_idx = getelementptr inbounds nuw i8, ptr %out.1, i64 4 - %exp_dig.sroa.14.4.extract.trunc131 = trunc i32 %conv4.i106.i to i16 + %exp_dig.sroa.14.4.extract.trunc131 = trunc i32 %conv4.i104.i to i16 store i16 %exp_dig.sroa.14.4.extract.trunc131, ptr %exp_dig.sroa.14.4.out.1.sroa_idx, align 1 %add.ptr24 = getelementptr inbounds nuw i8, ptr %out.1, i64 6 store i8 0, ptr %add.ptr24, align 1 @@ -1257,15 +1257,15 @@ sw.bb28: ; preds = %_ZN4abslL10SplitToS store i8 %exp_dig.sroa.0.sroa.2.0.extract.trunc, ptr %out.1, align 1 store i24 %exp_dig.sroa.0.sroa.10.0.extract.trunc, ptr %arrayidx22, align 1 %exp_dig.sroa.14.4.out.1.sroa_idx132 = getelementptr inbounds nuw i8, ptr %out.1, i64 4 - %exp_dig.sroa.14.4.extract.trunc134 = trunc i32 %add.i105.i to i8 + %exp_dig.sroa.14.4.extract.trunc134 = trunc i32 %add.i103.i to i8 store i8 %exp_dig.sroa.14.4.extract.trunc134, ptr %exp_dig.sroa.14.4.out.1.sroa_idx132, align 1 %add.ptr30 = getelementptr inbounds nuw i8, ptr %out.1, i64 5 - %14 = and i32 %conv4.i106.i, 65280 - %cmp32.not = icmp eq i32 %14, 12288 + %15 = and i32 %conv4.i104.i, 65280 + %cmp32.not = icmp eq i32 %15, 12288 br i1 %cmp32.not, label %if.end37, label %if.then33 if.then33: ; preds = %sw.bb28 - %exp_dig.sroa.14.9.extract.shift149 = lshr i32 %conv4.i106.i, 8 + %exp_dig.sroa.14.9.extract.shift149 = lshr i32 %conv4.i104.i, 8 %exp_dig.sroa.14.9.extract.trunc150 = trunc i32 %exp_dig.sroa.14.9.extract.shift149 to i8 %incdec.ptr34 = getelementptr inbounds nuw i8, ptr %out.1, i64 6 store i8 46, ptr %add.ptr30, align 1 @@ -1285,21 +1285,21 @@ sw.bb41: ; preds = %_ZN4abslL10SplitToS store i8 %exp_dig.sroa.0.sroa.2.0.extract.trunc, ptr %out.1, align 1 store i24 %exp_dig.sroa.0.sroa.10.0.extract.trunc, ptr %arrayidx22, align 1 %add.ptr43 = getelementptr inbounds nuw i8, ptr %out.1, i64 4 - %retval.sroa.4.8.insert.ext.i = lshr i32 %conv4.i106.i, 8 + %retval.sroa.4.8.insert.ext.i = lshr i32 %conv4.i104.i, 8 %exp_dig.sroa.14.9.extract.trunc144 = trunc i32 %retval.sroa.4.8.insert.ext.i to i8 - %exp_dig.sroa.14.9.extract.shift143176 = or i32 %retval.sroa.4.8.insert.ext.i, %add.i105.i + %exp_dig.sroa.14.9.extract.shift143176 = or i32 %retval.sroa.4.8.insert.ext.i, %add.i103.i %conv45171.mask = and i32 %exp_dig.sroa.14.9.extract.shift143176, 255 %cmp48.not = icmp eq i32 %conv45171.mask, 48 br i1 %cmp48.not, label %if.end60, label %if.then49 if.then49: ; preds = %sw.bb41 - %exp_dig.sroa.14.8.extract.trunc138 = trunc i32 %add.i105.i to i8 + %exp_dig.sroa.14.8.extract.trunc138 = trunc i32 %add.i103.i to i8 %incdec.ptr50 = getelementptr inbounds nuw i8, ptr %out.1, i64 5 store i8 46, ptr %add.ptr43, align 1 %incdec.ptr52 = getelementptr inbounds nuw i8, ptr %out.1, i64 6 store i8 %exp_dig.sroa.14.8.extract.trunc138, ptr %incdec.ptr50, align 1 - %15 = and i32 %conv4.i106.i, 65280 - %cmp55.not = icmp eq i32 %15, 12288 + %16 = and i32 %conv4.i104.i, 65280 + %cmp55.not = icmp eq i32 %16, 12288 br i1 %cmp55.not, label %if.end60, label %if.then56 if.then56: ; preds = %if.then49 @@ -1326,7 +1326,7 @@ sw.bb64: ; preds = %_ZN4abslL10SplitToS %exp_dig.sroa.0.sroa.10.sroa.0.2.extract.trunc = trunc nuw i64 %exp_dig.sroa.0.sroa.10.sroa.0.2.extract.shift169 to i8 store i8 %exp_dig.sroa.0.sroa.10.sroa.0.2.extract.trunc, ptr %incdec.ptr67, align 1 %exp_dig.sroa.14.7.incdec.ptr67.sroa_idx = getelementptr inbounds nuw i8, ptr %out.1, i64 5 - %exp_dig.sroa.14.7.extract.trunc = trunc i32 %conv4.i106.i to i16 + %exp_dig.sroa.14.7.extract.trunc = trunc i32 %conv4.i104.i to i16 store i16 %exp_dig.sroa.14.7.extract.trunc, ptr %exp_dig.sroa.14.7.incdec.ptr67.sroa_idx, align 1 %add.ptr69 = getelementptr inbounds nuw i8, ptr %out.1, i64 7 br label %while.cond @@ -1334,8 +1334,8 @@ sw.bb64: ; preds = %_ZN4abslL10SplitToS while.cond: ; preds = %while.cond, %sw.bb64 %out.7 = phi ptr [ %add.ptr69, %sw.bb64 ], [ %arrayidx70, %while.cond ] %arrayidx70 = getelementptr inbounds i8, ptr %out.7, i64 -1 - %16 = load i8, ptr %arrayidx70, align 1 - switch i8 %16, label %if.end79.loopexit [ + %17 = load i8, ptr %arrayidx70, align 1 + switch i8 %17, label %if.end79.loopexit [ i8 48, label %while.cond i8 46, label %if.end79 ] @@ -1358,10 +1358,10 @@ sw.bb83: ; preds = %_ZN4abslL10SplitToS %add.ptr85 = getelementptr inbounds nuw i8, ptr %out.1, i64 2 %incdec.ptr86 = getelementptr inbounds nuw i8, ptr %out.1, i64 3 store i8 46, ptr %add.ptr85, align 1 - %exp_dig.sroa.0.sroa.10.sroa.0.1.extract.trunc = trunc i32 %10 to i16 + %exp_dig.sroa.0.sroa.10.sroa.0.1.extract.trunc = trunc i32 %11 to i16 store i16 %exp_dig.sroa.0.sroa.10.sroa.0.1.extract.trunc, ptr %incdec.ptr86, align 1 %exp_dig.sroa.14.6.incdec.ptr86.sroa_idx = getelementptr inbounds nuw i8, ptr %out.1, i64 5 - %exp_dig.sroa.14.6.extract.trunc = trunc i32 %conv4.i106.i to i16 + %exp_dig.sroa.14.6.extract.trunc = trunc i32 %conv4.i104.i to i16 store i16 %exp_dig.sroa.14.6.extract.trunc, ptr %exp_dig.sroa.14.6.incdec.ptr86.sroa_idx, align 1 %add.ptr88 = getelementptr inbounds nuw i8, ptr %out.1, i64 7 br label %while.cond89 @@ -1369,8 +1369,8 @@ sw.bb83: ; preds = %_ZN4abslL10SplitToS while.cond89: ; preds = %while.cond89, %sw.bb83 %out.9 = phi ptr [ %add.ptr88, %sw.bb83 ], [ %arrayidx90, %while.cond89 ] %arrayidx90 = getelementptr inbounds i8, ptr %out.9, i64 -1 - %17 = load i8, ptr %arrayidx90, align 1 - switch i8 %17, label %if.end101.loopexit [ + %18 = load i8, ptr %arrayidx90, align 1 + switch i8 %18, label %if.end101.loopexit [ i8 48, label %while.cond89 i8 46, label %if.end101 ] @@ -1391,7 +1391,7 @@ sw.bb105: ; preds = %_ZN4abslL10SplitToS %incdec.ptr108 = getelementptr inbounds nuw i8, ptr %out.1, i64 2 store i24 %exp_dig.sroa.0.sroa.10.0.extract.trunc, ptr %incdec.ptr108, align 1 %exp_dig.sroa.14.5.incdec.ptr108.sroa_idx = getelementptr inbounds nuw i8, ptr %out.1, i64 5 - %exp_dig.sroa.14.5.extract.trunc136 = trunc i32 %conv4.i106.i to i16 + %exp_dig.sroa.14.5.extract.trunc136 = trunc i32 %conv4.i104.i to i16 store i16 %exp_dig.sroa.14.5.extract.trunc136, ptr %exp_dig.sroa.14.5.incdec.ptr108.sroa_idx, align 1 %add.ptr110 = getelementptr inbounds nuw i8, ptr %out.1, i64 7 br label %while.cond111 @@ -1399,8 +1399,8 @@ sw.bb105: ; preds = %_ZN4abslL10SplitToS while.cond111: ; preds = %while.cond111, %sw.bb105 %out.11 = phi ptr [ %add.ptr110, %sw.bb105 ], [ %arrayidx112, %while.cond111 ] %arrayidx112 = getelementptr inbounds i8, ptr %out.11, i64 -1 - %18 = load i8, ptr %arrayidx112, align 1 - switch i8 %18, label %if.end123.loopexit [ + %19 = load i8, ptr %arrayidx112, align 1 + switch i8 %19, label %if.end123.loopexit [ i8 48, label %while.cond111 i8 46, label %if.end123 ] @@ -1442,7 +1442,7 @@ sw.bb136: ; preds = %sw.bb133, %_ZN4absl %exp_dig.sroa.0.sroa.10.4.add.ptr137.sroa_idx = getelementptr inbounds nuw i8, ptr %out.4, i64 3 store i24 %exp_dig.sroa.0.sroa.10.0.extract.trunc, ptr %exp_dig.sroa.0.sroa.10.4.add.ptr137.sroa_idx, align 1 %exp_dig.sroa.14.4.add.ptr137.sroa_idx = getelementptr inbounds nuw i8, ptr %out.4, i64 6 - %exp_dig.sroa.14.4.extract.trunc = trunc i32 %conv4.i106.i to i16 + %exp_dig.sroa.14.4.extract.trunc = trunc i32 %conv4.i104.i to i16 store i16 %exp_dig.sroa.14.4.extract.trunc, ptr %exp_dig.sroa.14.4.add.ptr137.sroa_idx, align 1 %add.ptr139 = getelementptr inbounds nuw i8, ptr %out.4, i64 8 br label %while.cond140 @@ -1450,8 +1450,8 @@ sw.bb136: ; preds = %sw.bb133, %_ZN4absl while.cond140: ; preds = %while.cond140, %sw.bb136 %out.13 = phi ptr [ %add.ptr139, %sw.bb136 ], [ %arrayidx141, %while.cond140 ] %arrayidx141 = getelementptr inbounds i8, ptr %out.13, i64 -1 - %19 = load i8, ptr %arrayidx141, align 1 - %cmp143 = icmp eq i8 %19, 48 + %20 = load i8, ptr %arrayidx141, align 1 + %cmp143 = icmp eq i8 %20, 48 br i1 %cmp143, label %while.cond140, label %while.end146, !llvm.loop !5 while.end146: ; preds = %while.cond140 @@ -1466,7 +1466,7 @@ sw.epilog: ; preds = %_ZN4abslL10SplitToS %add.ptr152 = getelementptr inbounds nuw i8, ptr %out.1, i64 2 store i24 %exp_dig.sroa.0.sroa.10.0.extract.trunc, ptr %add.ptr152, align 1 %exp_dig.sroa.14.5.add.ptr152.sroa_idx = getelementptr inbounds nuw i8, ptr %out.1, i64 5 - %exp_dig.sroa.14.5.extract.trunc = trunc i32 %conv4.i106.i to i16 + %exp_dig.sroa.14.5.extract.trunc = trunc i32 %conv4.i104.i to i16 store i16 %exp_dig.sroa.14.5.extract.trunc, ptr %exp_dig.sroa.14.5.add.ptr152.sroa_idx, align 1 %add.ptr154 = getelementptr inbounds nuw i8, ptr %out.1, i64 7 br label %while.cond155 @@ -1474,8 +1474,8 @@ sw.epilog: ; preds = %_ZN4abslL10SplitToS while.cond155: ; preds = %while.cond155, %sw.epilog %out.14 = phi ptr [ %add.ptr154, %sw.epilog ], [ %arrayidx156, %while.cond155 ] %arrayidx156 = getelementptr inbounds i8, ptr %out.14, i64 -1 - %20 = load i8, ptr %arrayidx156, align 1 - switch i8 %20, label %if.end167.loopexit [ + %21 = load i8, ptr %arrayidx156, align 1 + switch i8 %21, label %if.end167.loopexit [ i8 48, label %while.cond155 i8 46, label %if.end167 ] @@ -1499,8 +1499,8 @@ if.then175: ; preds = %if.end167 %div = udiv i32 %spec.select205, 100 %mul.neg = mul nsw i32 %div, -100 %sub176 = add nsw i32 %mul.neg, %spec.select205 - %21 = trunc i32 %div to i8 - %conv179 = add i8 %21, 48 + %22 = trunc i32 %div to i8 + %conv179 = add i8 %22, 48 %incdec.ptr180 = getelementptr inbounds nuw i8, ptr %out.15, i64 3 store i8 %conv179, ptr %out.16, align 1 br label %if.end181 @@ -1516,8 +1516,8 @@ if.end181: ; preds = %if.then175, %if.end %sub.i = add i32 %mul2.neg.i, %exp.1 %shl.i175 = shl i32 %sub.i, 8 %add.i = add i32 %shl.i175, %conv1.i - %22 = trunc i32 %add.i to i16 - %conv4.i = add i16 %22, 12336 + %23 = trunc i32 %add.i to i16 + %conv4.i = add i16 %23, 12336 store i16 %conv4.i, ptr %out.17, align 1 %add.ptr182 = getelementptr inbounds nuw i8, ptr %out.17, i64 2 store i8 0, ptr %add.ptr182, align 1 @@ -2524,10 +2524,10 @@ if.end.i: ; preds = %while.body %sub.i.i = sub nuw nsw i64 64, %0 %shr23.i = lshr i64 %add.i, %sub.i.i %shl25.i = shl i64 %add17.i, %0 - %add26.i = add i64 %shr23.i, %shl25.i + %add26.i = or disjoint i64 %shr23.i, %shl25.i %shr28.i = lshr i64 %add17.i, %sub.i.i %shl31.i = shl i64 %add21.i, %0 - %add32.i = add i64 %shr28.i, %shl31.i + %add32.i = or disjoint i64 %shr28.i, %shl31.i br label %_ZN4abslL5Mul32ESt4pairImmEj.exit _ZN4abslL5Mul32ESt4pairImmEj.exit: ; preds = %while.body, %if.end.i @@ -2575,32 +2575,21 @@ if.end.i30: ; preds = %while.end %sub.i.i31 = sub nuw nsw i64 64, %2 %shr23.i32 = lshr i64 %add.i17, %sub.i.i31 %shl25.i33 = shl i64 %add17.i24, %2 - %add26.i34 = add i64 %shr23.i32, %shl25.i33 + %add26.i34 = or disjoint i64 %shr23.i32, %shl25.i33 %shr28.i35 = lshr i64 %add17.i24, %sub.i.i31 %shl31.i36 = shl i64 %add21.i28, %2 - %add32.i37 = add i64 %shr28.i35, %shl31.i36 + %add32.i37 = or disjoint i64 %shr28.i35, %shl31.i36 br label %_ZN4abslL5Mul32ESt4pairImmEj.exit42 _ZN4abslL5Mul32ESt4pairImmEj.exit42: ; preds = %while.end, %if.end.i30 %retval.sroa.0.0.i38 = phi i64 [ %add32.i37, %if.end.i30 ], [ %add17.i24, %while.end ] %retval.sroa.3.0.i39 = phi i64 [ %add26.i34, %if.end.i30 ], [ %add.i17, %while.end ] - %3 = tail call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %retval.sroa.0.0.i38, i1 false) - %cmp8.not = icmp eq i64 %3, 0 - br i1 %cmp8.not, label %if.end, label %if.then - -if.then: ; preds = %_ZN4abslL5Mul32ESt4pairImmEj.exit42 - %shl = shl i64 %retval.sroa.0.0.i38, %3 - %sub10 = sub nuw nsw i64 64, %3 - %shr = lshr i64 %retval.sroa.3.0.i39, %sub10 - %add = add i64 %shr, %shl - %shl15 = shl i64 %retval.sroa.3.0.i39, %3 - br label %if.end - -if.end: ; preds = %if.then, %_ZN4abslL5Mul32ESt4pairImmEj.exit42 - %retval.sroa.0.1 = phi i64 [ %retval.sroa.0.0.i38, %_ZN4abslL5Mul32ESt4pairImmEj.exit42 ], [ %add, %if.then ] - %retval.sroa.9.1 = phi i64 [ %retval.sroa.3.0.i39, %_ZN4abslL5Mul32ESt4pairImmEj.exit42 ], [ %shl15, %if.then ] - %.fca.0.insert = insertvalue { i64, i64 } poison, i64 %retval.sroa.0.1, 0 - %.fca.1.insert = insertvalue { i64, i64 } %.fca.0.insert, i64 %retval.sroa.9.1, 1 + %3 = freeze i64 %retval.sroa.3.0.i39 + %4 = tail call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %retval.sroa.0.0.i38, i1 false) + %shl15 = shl i64 %3, %4 + %5 = tail call i64 @llvm.fshl.i64(i64 %retval.sroa.0.0.i38, i64 %3, i64 %4) + %.fca.0.insert = insertvalue { i64, i64 } poison, i64 %5, 0 + %.fca.1.insert = insertvalue { i64, i64 } %.fca.0.insert, i64 %shl15, 1 ret { i64, i64 } %.fca.1.insert } @@ -2778,6 +2767,9 @@ declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #1 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umin.i64(i64, i64) #13 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i64 @llvm.fshl.i64(i64, i64, i64) #13 + ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #14 diff --git a/bench/arrow/optimized/basic_decimal.cc.ll b/bench/arrow/optimized/basic_decimal.cc.ll index 6e2f922798e..ed946d8bf6c 100644 --- a/bench/arrow/optimized/basic_decimal.cc.ll +++ b/bench/arrow/optimized/basic_decimal.cc.ll @@ -843,7 +843,7 @@ for.body.i116.i: ; preds = %for.body.i116.i, %f %arrayidx3.i.i = getelementptr inbounds nuw i32, ptr %divisor_array.i, i64 %add.i119.i %17 = load i32, ptr %arrayidx3.i.i, align 4 %shr.i120.i = lshr i32 %17, %sh_prom5.i.i - %or.i.i = or i32 %shr.i120.i, %shl.i118.i + %or.i.i = or disjoint i32 %shr.i120.i, %shl.i118.i store i32 %or.i.i, ptr %arrayidx.i117.i, align 4 %exitcond.not.i121.i = icmp eq i64 %add.i119.i, %.pre27 br i1 %exitcond.not.i121.i, label %for.end.i115.i, label %for.body.i116.i, !llvm.loop !7 @@ -864,7 +864,7 @@ for.body.i135.i: ; preds = %for.end.i115.i, %fo %arrayidx3.i140.i = getelementptr inbounds nuw i32, ptr %dividend_array.i, i64 %add.i139.i %20 = load i32, ptr %arrayidx3.i140.i, align 4 %shr.i141.i = lshr i32 %20, %sh_prom5.i.i - %or.i142.i = or i32 %shr.i141.i, %shl.i138.i + %or.i142.i = or disjoint i32 %shr.i141.i, %shl.i138.i store i32 %or.i142.i, ptr %arrayidx.i137.i, align 4 %exitcond.not.i143.i = icmp eq i64 %add.i139.i, %retval.0.i.i br i1 %exitcond.not.i143.i, label %for.end.i129.loopexit.i, label %for.body.i135.i, !llvm.loop !7 @@ -1027,7 +1027,7 @@ for.body.i152.i: ; preds = %for.body.i152.i, %f %gep.i.i = getelementptr i32, ptr %invariant.gep.i.i, i64 %i.0.in13.i.i %34 = load i32, ptr %gep.i.i, align 4 %shl.i155.i = shl i32 %34, %sh_prom6.i.i - %or.i156.i = or i32 %shl.i155.i, %shr.i154.i + %or.i156.i = or disjoint i32 %shl.i155.i, %shr.i154.i store i32 %or.i156.i, ptr %arrayidx.i153.i, align 4 %cmp2.i.i = icmp samesign ugt i64 %i.0.in13.i.i, 2 br i1 %cmp2.i.i, label %for.body.i152.i, label %for.end.i150.i, !llvm.loop !12 @@ -2876,7 +2876,7 @@ for.body.i112.i: ; preds = %for.body.i112.i, %f %arrayidx3.i.i = getelementptr inbounds nuw i32, ptr %divisor_array.i, i64 %add.i115.i %26 = load i32, ptr %arrayidx3.i.i, align 4 %shr.i.i = lshr i32 %26, %sh_prom5.i.i - %or.i.i = or i32 %shr.i.i, %shl.i114.i + %or.i.i = or disjoint i32 %shr.i.i, %shl.i114.i store i32 %or.i.i, ptr %arrayidx.i113.i, align 4 %exitcond.not.i116.i = icmp eq i64 %add.i115.i, %sub.i.i br i1 %exitcond.not.i116.i, label %for.end.i110.i, label %for.body.i112.i, !llvm.loop !7 @@ -2908,7 +2908,7 @@ for.body.i130.i: ; preds = %for.body.i130.i, %f %arrayidx3.i135.i = getelementptr inbounds nuw i32, ptr %dividend_array.i, i64 %add.i134.i %29 = load i32, ptr %arrayidx3.i135.i, align 4 %shr.i136.i = lshr i32 %29, %sh_prom5.i128.i - %or.i137.i = or i32 %shr.i136.i, %shl.i133.i + %or.i137.i = or disjoint i32 %shr.i136.i, %shl.i133.i store i32 %or.i137.i, ptr %arrayidx.i132.i, align 4 %exitcond.not.i138.i = icmp eq i64 %add.i134.i, %next_index.1.lcssa.i.i.i br i1 %exitcond.not.i138.i, label %for.end.i124.i, label %for.body.i130.i, !llvm.loop !7 @@ -3072,7 +3072,7 @@ for.body.i147.i: ; preds = %for.body.i147.i, %f %gep.i.i = getelementptr i32, ptr %invariant.gep.i.i, i64 %i.0.in13.i.i %43 = load i32, ptr %gep.i.i, align 4 %shl.i150.i = shl i32 %43, %sh_prom6.i.i - %or.i151.i = or i32 %shl.i150.i, %shr.i149.i + %or.i151.i = or disjoint i32 %shl.i150.i, %shr.i149.i store i32 %or.i151.i, ptr %arrayidx.i148.i, align 4 %cmp2.i.i = icmp samesign ugt i64 %i.0.in13.i.i, 2 br i1 %cmp2.i.i, label %for.body.i147.i, label %for.end.i145.i, !llvm.loop !12 diff --git a/bench/boost/optimized/src.ll b/bench/boost/optimized/src.ll index 473435532f2..508c1883eea 100644 --- a/bench/boost/optimized/src.ll +++ b/bench/boost/optimized/src.ll @@ -60703,7 +60703,7 @@ define linkonce_odr hidden { i64, i32 } @_ZN5boost4json6detail8charconv6detail10 %15 = load i64, ptr %14, align 8, !tbaa !11 %16 = shl i64 %15, %6 %17 = lshr i64 %.01622.i.i.i.i, %9 - %18 = or i64 %16, %17 + %18 = or disjoint i64 %16, %17 store i64 %18, ptr %14, align 8, !tbaa !11 %19 = add nuw nsw i64 %.01721.i.i.i.i, 1 %exitcond.not.i.i.i.i = icmp eq i64 %19, %12 @@ -60944,7 +60944,7 @@ _ZN5boost4json6detail8charconv6detail10fast_float11to_extendedIdEENS4_17adjusted %50 = load i64, ptr %49, align 8, !tbaa !11 %51 = shl i64 %50, %42 %52 = lshr i64 %.01622.i.i.i, %45 - %53 = or i64 %51, %52 + %53 = or disjoint i64 %51, %52 store i64 %53, ptr %49, align 8, !tbaa !11 %54 = add nuw nsw i64 %.01721.i.i.i, 1 %exitcond.not.i.i.i = icmp eq i64 %54, %47 @@ -61018,7 +61018,7 @@ _ZSt13copy_backwardIPKmPmET0_T_S4_S3_.exit.i.i.i: ; preds = %60 %85 = load i64, ptr %84, align 8, !tbaa !11 %86 = shl i64 %85, %76 %87 = lshr i64 %.01622.i.i.i36, %79 - %88 = or i64 %86, %87 + %88 = or disjoint i64 %86, %87 store i64 %88, ptr %84, align 8, !tbaa !11 %89 = add nuw nsw i64 %.01721.i.i.i37, 1 %exitcond.not.i.i.i38 = icmp eq i64 %89, %82 diff --git a/bench/c3c/optimized/bigint.c.ll b/bench/c3c/optimized/bigint.c.ll index 77d55a9e39e..730616b0273 100644 --- a/bench/c3c/optimized/bigint.c.ll +++ b/bench/c3c/optimized/bigint.c.ll @@ -332,7 +332,7 @@ define dso_local { i64, i64 } @i128_urem(i64 %0, i64 %1, i64 %2, i64 %3) local_u %26 = shl i64 %2, %14 %27 = sub nuw nsw i64 64, %14 %28 = lshr i64 %3, %27 - %29 = or i64 %28, %26 + %29 = or disjoint i64 %28, %26 %30 = shl i64 %3, %14 br label %i128_shl64.exit.i.preheader @@ -427,7 +427,7 @@ define dso_local { i64, i64 } @i128_udiv(i64 %0, i64 %1, i64 %2, i64 %3) local_u %26 = shl i64 %2, %14 %27 = sub nuw nsw i64 64, %14 %28 = lshr i64 %3, %27 - %29 = or i64 %28, %26 + %29 = or disjoint i64 %28, %26 %30 = shl i64 %3, %14 br label %i128_shl64.exit.i.preheader @@ -727,7 +727,7 @@ define dso_local { i64, i64 } @i128_shl64(i64 %0, i64 %1, i64 noundef %2) local_ %15 = shl i64 %0, %2 %16 = sub nuw nsw i64 64, %2 %17 = lshr i64 %1, %16 - %18 = or i64 %17, %15 + %18 = or disjoint i64 %17, %15 %19 = shl i64 %1, %2 br label %20 @@ -803,7 +803,7 @@ define dso_local { i64, i64 } @i128_extend(i64 %0, i64 %1, i32 noundef %2) local %18 = shl i64 %0, %8 %19 = add nsw i64 %7, -64 %20 = lshr i64 %1, %19 - %21 = or i64 %20, %18 + %21 = add nuw nsw i64 %20, %18 %22 = shl i64 %1, %8 br label %i128_shl64.exit @@ -838,7 +838,7 @@ i128_shl64.exit.thread55: ; preds = %10 %34 = lshr i64 %.sroa.6.0.i, %8 %35 = add nsw i64 %7, -64 %36 = shl i64 %.sroa.011.0.i, %35 - %37 = or i64 %34, %36 + %37 = add nuw nsw i64 %34, %36 %38 = lshr i64 %.sroa.011.0.i, %8 br label %i128_ashr64.exit @@ -855,7 +855,7 @@ i128_shl64.exit.thread55: ; preds = %10 %45 = lshr i64 %.sroa.6.0.i, %8 %46 = add nsw i64 %7, -64 %47 = shl i64 %.sroa.011.0.i, %46 - %48 = or i64 %45, %47 + %48 = add nuw nsw i64 %45, %47 br label %i128_ashr64.exit 49: ; preds = %i128_shl64.exit @@ -871,7 +871,7 @@ i128_shl64.exit.thread55: ; preds = %10 %55 = lshr i64 %.sroa.6.0.i, %8 %56 = add nsw i64 %7, -64 %57 = shl i64 %.sroa.011.0.i, %56 - %58 = or i64 %55, %57 + %58 = add nuw nsw i64 %55, %57 %59 = lshr i64 %.sroa.011.0.i, %8 br label %i128_ashr64.exit @@ -915,7 +915,7 @@ define dso_local { i64, i64 } @i128_ashr64(i64 %0, i64 %1, i64 noundef %2) local %16 = lshr i64 %1, %2 %17 = sub nuw nsw i64 64, %2 %18 = shl i64 %0, %17 - %19 = or i64 %18, %16 + %19 = or disjoint i64 %18, %16 %20 = lshr i64 %0, %2 br label %i128_lshr64.exit @@ -940,7 +940,7 @@ define dso_local { i64, i64 } @i128_ashr64(i64 %0, i64 %1, i64 noundef %2) local %31 = lshr i64 %1, %2 %32 = sub nuw nsw i64 64, %2 %33 = shl i64 %0, %32 - %34 = or i64 %33, %31 + %34 = or disjoint i64 %33, %31 br label %i128_lshr64.exit i128_lshr64.exit: ; preds = %15, %12, %8, %7, %22, %21, %3, %29, %26 @@ -977,7 +977,7 @@ define dso_local { i64, i64 } @i128_lshr64(i64 %0, i64 %1, i64 noundef %2) local %15 = lshr i64 %1, %2 %16 = sub nuw nsw i64 64, %2 %17 = shl i64 %0, %16 - %18 = or i64 %17, %15 + %18 = or disjoint i64 %17, %15 %19 = lshr i64 %0, %2 br label %20 @@ -1179,7 +1179,7 @@ define dso_local { i64, i64 } @i128_shl(i64 %0, i64 %1, i64 %2, i64 %3) local_un %17 = shl i64 %0, %3 %18 = sub nuw nsw i64 64, %3 %19 = lshr i64 %1, %18 - %20 = or i64 %19, %17 + %20 = or disjoint i64 %19, %17 %21 = shl i64 %1, %3 br label %i128_shl64.exit @@ -1237,7 +1237,7 @@ define dso_local { i64, i64 } @i128_lshr(i64 %0, i64 %1, i64 %2, i64 %3) local_u %17 = lshr i64 %1, %3 %18 = sub nuw nsw i64 64, %3 %19 = shl i64 %0, %18 - %20 = or i64 %19, %17 + %20 = or disjoint i64 %19, %17 %21 = lshr i64 %0, %3 br label %i128_lshr64.exit @@ -1287,7 +1287,7 @@ define dso_local { i64, i64 } @i128_ashr(i64 %0, i64 %1, i64 %2, i64 %3) local_u %19 = lshr i64 %1, %3 %20 = sub nuw nsw i64 64, %3 %21 = shl i64 %0, %20 - %22 = or i64 %21, %19 + %22 = or disjoint i64 %21, %19 %23 = lshr i64 %0, %3 br label %i128_ashr64.exit @@ -1312,7 +1312,7 @@ define dso_local { i64, i64 } @i128_ashr(i64 %0, i64 %1, i64 %2, i64 %3) local_u %34 = lshr i64 %1, %3 %35 = sub nuw nsw i64 64, %3 %36 = shl i64 %0, %35 - %37 = or i64 %36, %34 + %37 = or disjoint i64 %36, %34 br label %i128_ashr64.exit i128_ashr64.exit: ; preds = %32, %29, %25, %24, %18, %15, %11, %10, %6, %5 @@ -1832,7 +1832,7 @@ define dso_local void @i128_udivrem(i64 %0, i64 %1, i64 %2, i64 %3, ptr nocaptur %29 = shl i64 %2, %17 %30 = sub nuw nsw i64 64, %17 %31 = lshr i64 %3, %30 - %32 = or i64 %31, %29 + %32 = or disjoint i64 %31, %29 %33 = shl i64 %3, %17 br label %i128_shl64.exit.preheader @@ -1975,7 +1975,7 @@ i128_neg.exit25: ; preds = %18, %17, %i128_neg. %44 = shl i64 %.sroa.07.0, %32 %45 = sub nuw nsw i64 64, %32 %46 = lshr i64 %.sroa.5.0, %45 - %47 = or i64 %46, %44 + %47 = or disjoint i64 %46, %44 %48 = shl i64 %.sroa.5.0, %32 br label %i128_shl64.exit.i.i.preheader @@ -2143,7 +2143,7 @@ i128_neg.exit25: ; preds = %18, %17, %i128_neg. %44 = shl i64 %.sroa.07.0, %32 %45 = sub nuw nsw i64 64, %32 %46 = lshr i64 %.sroa.5.0, %45 - %47 = or i64 %46, %44 + %47 = or disjoint i64 %46, %44 %48 = shl i64 %.sroa.5.0, %32 br label %i128_shl64.exit.i.i.preheader @@ -3002,11 +3002,11 @@ define dso_local void @int_conv(ptr dead_on_unwind noalias nocapture writable wr %34 = shl i64 %21, %20 %35 = sub nuw nsw i64 64, %20 %36 = lshr i64 %23, %35 - %37 = or i64 %36, %34 + %37 = or disjoint i64 %36, %34 %38 = lshr i64 -1, %20 %39 = and i64 %23, %38 %40 = shl i64 %37, %35 - %41 = or i64 %40, %39 + %41 = add nuw nsw i64 %40, %39 %42 = lshr i64 %37, %20 br label %i128_lshr64.exit @@ -3045,11 +3045,11 @@ i128_lshr64.exit: ; preds = %18, %25, %29, %33 %60 = shl i64 %47, %46 %61 = sub nuw nsw i64 64, %46 %62 = lshr i64 %49, %61 - %63 = or i64 %62, %60 + %63 = or disjoint i64 %62, %60 %64 = lshr i64 -1, %46 %65 = and i64 %49, %64 %66 = shl i64 %63, %61 - %67 = or i64 %66, %65 + %67 = add nuw nsw i64 %66, %65 %68 = lshr i64 %63, %46 br label %i128_lshr64.exit45 @@ -3080,7 +3080,7 @@ i128_lshr64.exit45.thread: ; preds = %44 %77 = shl i64 %.sroa.015.0.i41, %46 %78 = sub nuw nsw i64 64, %46 %79 = lshr i64 %.sroa.6.0.i42, %78 - %80 = or i64 %79, %77 + %80 = or disjoint i64 %79, %77 %81 = shl i64 %.sroa.6.0.i42, %46 %.not.i154 = icmp sgt i64 %80, -1 br i1 %.not.i154, label %.thread159, label %.thread164 @@ -3097,7 +3097,7 @@ i128_lshr64.exit45.thread: ; preds = %44 %84 = lshr exact i64 %81, %46 %85 = sub nuw nsw i64 64, %46 %86 = shl i64 %80, %85 - %87 = or i64 %84, %86 + %87 = or disjoint i64 %84, %86 %88 = lshr i64 %80, %46 br label %i128_ashr64.exit @@ -3110,7 +3110,7 @@ i128_lshr64.exit45.thread: ; preds = %44 %92 = lshr exact i64 %81, %46 %93 = sub nuw nsw i64 64, %46 %94 = shl i64 %80, %93 - %95 = or i64 %92, %94 + %95 = or disjoint i64 %92, %94 br label %i128_ashr64.exit i128_ashr64.exit: ; preds = %i128_lshr64.exit45.thread, %.thread126, %82, %.thread159, %89, %.thread164 @@ -3196,7 +3196,7 @@ define dso_local void @int_div(ptr dead_on_unwind noalias nocapture writable wri %38 = shl i64 %13, %26 %39 = sub nuw nsw i64 64, %26 %40 = lshr i64 %15, %39 - %41 = or i64 %40, %38 + %41 = or disjoint i64 %40, %38 %42 = shl i64 %15, %26 br label %i128_shl64.exit.i.i.preheader @@ -3325,7 +3325,7 @@ define dso_local void @int_rem(ptr dead_on_unwind noalias nocapture writable wri %38 = shl i64 %13, %26 %39 = sub nuw nsw i64 64, %26 %40 = lshr i64 %15, %39 - %41 = or i64 %40, %38 + %41 = or disjoint i64 %40, %38 %42 = shl i64 %15, %26 br label %i128_shl64.exit.i.i.preheader @@ -3526,7 +3526,7 @@ define dso_local void @int_shr64(ptr dead_on_unwind noalias nocapture writable w %23 = lshr i64 %10, %2 %24 = sub nuw nsw i64 64, %2 %25 = shl i64 %8, %24 - %26 = or i64 %23, %25 + %26 = or disjoint i64 %23, %25 %27 = lshr i64 %8, %2 br label %i128_lshr64.exit @@ -3564,7 +3564,7 @@ i128_lshr64.exit: ; preds = %12, %13, %15, %19, %41 = lshr i64 %10, %2 %42 = sub nuw nsw i64 64, %2 %43 = shl i64 %8, %42 - %44 = or i64 %41, %43 + %44 = or disjoint i64 %41, %43 %45 = lshr i64 %8, %2 br label %i128_ashr64.exit @@ -3589,7 +3589,7 @@ i128_lshr64.exit: ; preds = %12, %13, %15, %19, %56 = lshr i64 %10, %2 %57 = sub nuw nsw i64 64, %2 %58 = shl i64 %8, %57 - %59 = or i64 %56, %58 + %59 = or disjoint i64 %56, %58 br label %i128_ashr64.exit i128_ashr64.exit: ; preds = %29, %32, %33, %37, %40, %46, %47, %51, %54 @@ -3646,7 +3646,7 @@ define dso_local void @int_shl64(ptr dead_on_unwind noalias nocapture writable w %23 = shl i64 %8, %2 %24 = sub nuw nsw i64 64, %2 %25 = lshr i64 %10, %24 - %26 = or i64 %25, %23 + %26 = or disjoint i64 %25, %23 %27 = shl i64 %10, %2 br label %i128_shl64.exit @@ -3680,7 +3680,7 @@ i128_shl64.exit: ; preds = %12, %13, %15, %19, %40 = shl i64 %8, %2 %41 = sub nuw nsw i64 64, %2 %42 = lshr i64 %10, %41 - %43 = or i64 %42, %40 + %43 = or disjoint i64 %42, %40 %44 = shl i64 %10, %2 br label %i128_shl64.exit10 diff --git a/bench/clamav/optimized/qtmd.c.ll b/bench/clamav/optimized/qtmd.c.ll index 28a9f925397..ce607da2167 100644 --- a/bench/clamav/optimized/qtmd.c.ll +++ b/bench/clamav/optimized/qtmd.c.ll @@ -1393,7 +1393,7 @@ define i32 @qtmd_decompress(ptr noundef %0, i64 noundef %1) local_unnamed_addr # %565 = shl i32 %.09611753, %564 %566 = sub nsw i32 32, %564 %567 = lshr i32 %.14862, %566 - %568 = or i32 %567, %565 + %568 = or disjoint i32 %567, %565 %569 = shl i32 %.14862, %564 %570 = sub nsw i32 %.14895, %564 %571 = trunc i32 %563 to i8 @@ -1686,7 +1686,7 @@ define i32 @qtmd_decompress(ptr noundef %0, i64 noundef %1) local_unnamed_addr # %716 = shl i32 %.19621719, %715 %717 = sub nsw i32 32, %715 %718 = lshr i32 %.19867, %717 - %719 = or i32 %718, %716 + %719 = or disjoint i32 %718, %716 %720 = shl i32 %.19867, %715 %721 = sub nsw i32 %.19900, %715 %722 = trunc i32 %714 to i8 @@ -1980,7 +1980,7 @@ define i32 @qtmd_decompress(ptr noundef %0, i64 noundef %1) local_unnamed_addr # %868 = shl i32 %.29631653, %867 %869 = sub nsw i32 32, %867 %870 = lshr i32 %.23871, %869 - %871 = or i32 %870, %868 + %871 = or disjoint i32 %870, %868 %872 = shl i32 %.23871, %867 %873 = sub nsw i32 %.23904, %867 %874 = trunc i32 %866 to i8 @@ -2286,7 +2286,7 @@ define i32 @qtmd_decompress(ptr noundef %0, i64 noundef %1) local_unnamed_addr # %1023 = shl i32 %.39641686, %1022 %1024 = sub nsw i32 32, %1022 %1025 = lshr i32 %.27875, %1024 - %1026 = or i32 %1025, %1023 + %1026 = or disjoint i32 %1025, %1023 %1027 = shl i32 %.27875, %1022 %1028 = sub nsw i32 %.27908, %1022 %1029 = trunc i32 %1021 to i8 diff --git a/bench/cpython/optimized/dtoa.ll b/bench/cpython/optimized/dtoa.ll index 5ab025de218..32ae71c2797 100644 --- a/bench/cpython/optimized/dtoa.ll +++ b/bench/cpython/optimized/dtoa.ll @@ -2453,7 +2453,7 @@ if.then33: ; preds = %if.end31 %15 = load i32, ptr %arrayidx4, align 4 %sub39 = sub nsw i32 32, %scale.addr.0 %shl = shl i32 %15, %sub39 - %or40 = or i32 %shl, %shr36 + %or40 = or disjoint i32 %shl, %shr36 store i32 %or40, ptr %x, align 8 %shr45 = lshr i32 %15, %scale.addr.0 store i32 %shr45, ptr %arrayidx4, align 4 diff --git a/bench/duckdb/optimized/ub_duckdb_common_types.cpp.ll b/bench/duckdb/optimized/ub_duckdb_common_types.cpp.ll index 54dfc02fea8..7169b1218a1 100644 --- a/bench/duckdb/optimized/ub_duckdb_common_types.cpp.ll +++ b/bench/duckdb/optimized/ub_duckdb_common_types.cpp.ll @@ -33016,22 +33016,18 @@ if.then13: ; preds = %if.else if.else14: ; preds = %if.else %cmp15 = icmp samesign ult i64 %1, 64 + %4 = load i64, ptr %this, align 8, !tbaa !747 br i1 %cmp15, label %if.then16, label %if.else23 if.then16: ; preds = %if.else14 - %shl = shl i64 %0, %1 - %4 = load i64, ptr %this, align 8, !tbaa !747 - %sub = sub nuw nsw i64 64, %1 - %shr = lshr i64 %4, %sub - %add = add i64 %shr, %shl + %add = tail call i64 @llvm.fshl.i64(i64 %0, i64 %4, i64 %1) %and = and i64 %add, 9223372036854775807 %shl20 = shl i64 %4, %1 br label %if.end33 if.else23: ; preds = %if.else14 - %5 = load i64, ptr %this, align 8, !tbaa !747 %sub26 = add nsw i64 %1, -64 - %shl27 = shl i64 %5, %sub26 + %shl27 = shl i64 %4, %sub26 %and28 = and i64 %shl27, 9223372036854775807 br label %if.end33 @@ -33370,22 +33366,18 @@ if.then13.i: ; preds = %if.else.i if.else14.i: ; preds = %if.else.i %cmp15.i = icmp samesign ult i64 %1, 64 + %4 = load i64, ptr %this, align 8, !tbaa !747 br i1 %cmp15.i, label %if.then16.i, label %if.else23.i if.then16.i: ; preds = %if.else14.i - %shl.i = shl i64 %0, %1 - %4 = load i64, ptr %this, align 8, !tbaa !747 - %sub.i = sub nuw nsw i64 64, %1 - %shr.i = lshr i64 %4, %sub.i - %add.i = add i64 %shr.i, %shl.i + %add.i = tail call i64 @llvm.fshl.i64(i64 %0, i64 %4, i64 %1) %and.i = and i64 %add.i, 9223372036854775807 %shl20.i = shl i64 %4, %1 br label %if.end33.i if.else23.i: ; preds = %if.else14.i - %5 = load i64, ptr %this, align 8, !tbaa !747 %sub26.i = add nsw i64 %1, -64 - %shl27.i = shl i64 %5, %sub26.i + %shl27.i = shl i64 %4, %sub26.i %and28.i = and i64 %shl27.i, 9223372036854775807 br label %if.end33.i @@ -33398,9 +33390,9 @@ if.end33.i: ; preds = %if.else23.i, %if.th br label %_ZNK6duckdb9hugeint_tlsERKS0_.exit _ZNK6duckdb9hugeint_tlsERKS0_.exit: ; preds = %if.end33.i, %if.then13.i, %if.then5.i, %if.then.i - %6 = load <2 x i64>, ptr %retval.i, align 16 + %5 = load <2 x i64>, ptr %retval.i, align 16 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %retval.i) - store <2 x i64> %6, ptr %this, align 8, !tbaa !87 + store <2 x i64> %5, ptr %this, align 8, !tbaa !87 ret ptr %this } @@ -48629,7 +48621,7 @@ for.body.i.prol: ; preds = %for.body.i.preheade %shr.i.prol = lshr i64 %scalar.recur.prol, %rem.i.i %44 = load i64, ptr %source_validity12.0110.i.prol, align 8, !tbaa !87 %shl.i.prol = shl i64 %44, %sub.i - %or.i.prol = or i64 %shl.i.prol, %shr.i.prol + %or.i.prol = or disjoint i64 %shl.i.prol, %shr.i.prol %incdec.ptr21.i.prol = getelementptr inbounds nuw i8, ptr %target_validity16.0107.i.prol, i64 8 store i64 %or.i.prol, ptr %target_validity16.0107.i.prol, align 8, !tbaa !87 %source_validity12.0.i.prol = getelementptr inbounds nuw i8, ptr %source_validity12.0110.i.prol, i64 8 @@ -48668,28 +48660,28 @@ for.body.i: ; preds = %for.body.i.prol.loo %shr.i = lshr i64 %scalar.recur, %rem.i.i %48 = load i64, ptr %source_validity12.0110.i, align 8, !tbaa !87 %shl.i = shl i64 %48, %sub.i - %or.i = or i64 %shl.i, %shr.i + %or.i = or disjoint i64 %shl.i, %shr.i %incdec.ptr21.i = getelementptr inbounds nuw i8, ptr %target_validity16.0107.i, i64 8 store i64 %or.i, ptr %target_validity16.0107.i, align 8, !tbaa !87 %source_validity12.0.i = getelementptr inbounds nuw i8, ptr %source_validity12.0110.i, i64 8 %shr.i.1 = lshr i64 %48, %rem.i.i %49 = load i64, ptr %source_validity12.0.i, align 8, !tbaa !87 %shl.i.1 = shl i64 %49, %sub.i - %or.i.1 = or i64 %shl.i.1, %shr.i.1 + %or.i.1 = or disjoint i64 %shl.i.1, %shr.i.1 %incdec.ptr21.i.1 = getelementptr inbounds nuw i8, ptr %target_validity16.0107.i, i64 16 store i64 %or.i.1, ptr %incdec.ptr21.i, align 8, !tbaa !87 %source_validity12.0.i.1 = getelementptr inbounds nuw i8, ptr %source_validity12.0110.i, i64 16 %shr.i.2 = lshr i64 %49, %rem.i.i %50 = load i64, ptr %source_validity12.0.i.1, align 8, !tbaa !87 %shl.i.2 = shl i64 %50, %sub.i - %or.i.2 = or i64 %shl.i.2, %shr.i.2 + %or.i.2 = or disjoint i64 %shl.i.2, %shr.i.2 %incdec.ptr21.i.2 = getelementptr inbounds nuw i8, ptr %target_validity16.0107.i, i64 24 store i64 %or.i.2, ptr %incdec.ptr21.i.1, align 8, !tbaa !87 %source_validity12.0.i.2 = getelementptr inbounds nuw i8, ptr %source_validity12.0110.i, i64 24 %shr.i.3 = lshr i64 %50, %rem.i.i %51 = load i64, ptr %source_validity12.0.i.2, align 8, !tbaa !87 %shl.i.3 = shl i64 %51, %sub.i - %or.i.3 = or i64 %shl.i.3, %shr.i.3 + %or.i.3 = or disjoint i64 %shl.i.3, %shr.i.3 %incdec.ptr21.i.3 = getelementptr inbounds nuw i8, ptr %target_validity16.0107.i, i64 32 store i64 %or.i.3, ptr %incdec.ptr21.i.2, align 8, !tbaa !87 %inc.i.3 = add nuw nsw i64 %i.0109.i, 4 @@ -48705,7 +48697,7 @@ if.then22.i: ; preds = %for.cond.cleanup.i if.then26.i: ; preds = %if.then22.i %52 = load i64, ptr %source_validity12.0.lcssa.i, align 8, !tbaa !87 %shl28.i = shl i64 %52, %sub.i - %or29.i = or i64 %shl28.i, %shr24.i + %or29.i = or disjoint i64 %shl28.i, %shr24.i br label %if.end.i if.end.i: ; preds = %if.then26.i, %if.then22.i @@ -49045,7 +49037,7 @@ for.body.prol: ; preds = %for.body.preheader1 %shr.prol = lshr i64 %scalar.recur.prol, %rem.i %36 = load i64, ptr %source_validity12.0110.prol, align 8, !tbaa !87 %shl.prol = shl i64 %36, %sub - %or.prol = or i64 %shl.prol, %shr.prol + %or.prol = or disjoint i64 %shl.prol, %shr.prol %incdec.ptr21.prol = getelementptr inbounds nuw i8, ptr %target_validity16.0107.prol, i64 8 store i64 %or.prol, ptr %target_validity16.0107.prol, align 8, !tbaa !87 %source_validity12.0.prol = getelementptr inbounds nuw i8, ptr %source_validity12.0110.prol, i64 8 @@ -49084,28 +49076,28 @@ for.body: ; preds = %for.body.prol.loope %shr = lshr i64 %scalar.recur, %rem.i %40 = load i64, ptr %source_validity12.0110, align 8, !tbaa !87 %shl = shl i64 %40, %sub - %or = or i64 %shl, %shr + %or = or disjoint i64 %shl, %shr %incdec.ptr21 = getelementptr inbounds nuw i8, ptr %target_validity16.0107, i64 8 store i64 %or, ptr %target_validity16.0107, align 8, !tbaa !87 %source_validity12.0 = getelementptr inbounds nuw i8, ptr %source_validity12.0110, i64 8 %shr.1 = lshr i64 %40, %rem.i %41 = load i64, ptr %source_validity12.0, align 8, !tbaa !87 %shl.1 = shl i64 %41, %sub - %or.1 = or i64 %shl.1, %shr.1 + %or.1 = or disjoint i64 %shl.1, %shr.1 %incdec.ptr21.1 = getelementptr inbounds nuw i8, ptr %target_validity16.0107, i64 16 store i64 %or.1, ptr %incdec.ptr21, align 8, !tbaa !87 %source_validity12.0.1 = getelementptr inbounds nuw i8, ptr %source_validity12.0110, i64 16 %shr.2 = lshr i64 %41, %rem.i %42 = load i64, ptr %source_validity12.0.1, align 8, !tbaa !87 %shl.2 = shl i64 %42, %sub - %or.2 = or i64 %shl.2, %shr.2 + %or.2 = or disjoint i64 %shl.2, %shr.2 %incdec.ptr21.2 = getelementptr inbounds nuw i8, ptr %target_validity16.0107, i64 24 store i64 %or.2, ptr %incdec.ptr21.1, align 8, !tbaa !87 %source_validity12.0.2 = getelementptr inbounds nuw i8, ptr %source_validity12.0110, i64 24 %shr.3 = lshr i64 %42, %rem.i %43 = load i64, ptr %source_validity12.0.2, align 8, !tbaa !87 %shl.3 = shl i64 %43, %sub - %or.3 = or i64 %shl.3, %shr.3 + %or.3 = or disjoint i64 %shl.3, %shr.3 %incdec.ptr21.3 = getelementptr inbounds nuw i8, ptr %target_validity16.0107, i64 32 store i64 %or.3, ptr %incdec.ptr21.2, align 8, !tbaa !87 %inc.3 = add nuw nsw i64 %i.0109, 4 @@ -49121,7 +49113,7 @@ if.then22: ; preds = %for.cond.cleanup if.then26: ; preds = %if.then22 %44 = load i64, ptr %source_validity12.0.lcssa, align 8, !tbaa !87 %shl28 = shl i64 %44, %sub - %or29 = or i64 %shl28, %shr24 + %or29 = or disjoint i64 %shl28, %shr24 br label %if.end if.end: ; preds = %if.then26, %if.then22 diff --git a/bench/meshlab/optimized/gltf_loader.cpp.ll b/bench/meshlab/optimized/gltf_loader.cpp.ll index 73cf8f353c1..550c61b30c6 100644 --- a/bench/meshlab/optimized/gltf_loader.cpp.ll +++ b/bench/meshlab/optimized/gltf_loader.cpp.ll @@ -20304,7 +20304,7 @@ _ZL20stbi__extend_receiveP10stbi__jpegi.exit: ; preds = %61, %64 %67 = shl i32 %66, %.0.i %68 = sub nsw i32 32, %.0.i %69 = lshr i32 %66, %68 - %70 = or i32 %67, %69 + %70 = or disjoint i32 %67, %69 %71 = zext i8 %.0.i.in to i64 %72 = getelementptr inbounds nuw [17 x i32], ptr @_ZL11stbi__bmask, i64 0, i64 %71 %73 = load i32, ptr %72, align 4 @@ -20912,7 +20912,7 @@ _ZL20stbi__extend_receiveP10stbi__jpegi.exit: ; preds = %_ZL22stbi__jpeg_huf %79 = shl i32 %77, %.0.i28 %80 = sub nsw i32 32, %.0.i28 %81 = lshr i32 %77, %80 - %82 = or i32 %79, %81 + %82 = or disjoint i32 %79, %81 %83 = sext i32 %.0.i28 to i64 %84 = getelementptr inbounds [17 x i32], ptr @_ZL11stbi__bmask, i64 0, i64 %83 %85 = load i32, ptr %84, align 4 diff --git a/bench/openjdk/optimized/mlib_c_ImageLookUp_f.ll b/bench/openjdk/optimized/mlib_c_ImageLookUp_f.ll index 023a26b580a..d57d71dab59 100644 --- a/bench/openjdk/optimized/mlib_c_ImageLookUp_f.ll +++ b/bench/openjdk/optimized/mlib_c_ImageLookUp_f.ll @@ -9384,10 +9384,10 @@ define hidden void @mlib_c_ImageLookUpSI_U8_U8(ptr noundef readonly %0, i32 noun %556 = load i32, ptr %555, align 4 %557 = lshr i32 %.0453549, %531 %558 = shl i32 %553, %530 - %559 = add i32 %558, %557 + %559 = or disjoint i32 %558, %557 %560 = lshr i32 %553, %531 %561 = shl i32 %556, %530 - %562 = add i32 %561, %560 + %562 = or disjoint i32 %561, %560 %563 = load i8, ptr %.1457547, align 1 %564 = getelementptr inbounds nuw i8, ptr %.1457547, i64 1 %565 = load i8, ptr %564, align 1 @@ -9414,10 +9414,10 @@ define hidden void @mlib_c_ImageLookUpSI_U8_U8(ptr noundef readonly %0, i32 noun %576 = load i32, ptr %575, align 4 %577 = lshr i32 %.0453.lcssa, %531 %578 = shl i32 %573, %530 - %579 = add i32 %578, %577 + %579 = or disjoint i32 %578, %577 %580 = lshr i32 %573, %531 %581 = shl i32 %576, %530 - %582 = add i32 %581, %580 + %582 = or disjoint i32 %581, %580 store i32 %579, ptr %.1459.lcssa, align 4 %583 = getelementptr inbounds nuw i8, ptr %.1459.lcssa, i64 4 store i32 %582, ptr %583, align 4 @@ -10197,7 +10197,7 @@ define hidden void @mlib_c_ImageLookUpSI_S16_U8(ptr nocapture noundef readonly % %450 = or disjoint i32 %449, %445 %451 = lshr i32 %.0412, %401 %452 = shl i32 %450, %400 - %453 = add i32 %452, %451 + %453 = or disjoint i32 %452, %451 %454 = load i16, ptr %.1369410, align 2 store i32 %453, ptr %.1371409, align 4 %455 = add nuw nsw i32 %.2375408, 1 @@ -10228,7 +10228,7 @@ define hidden void @mlib_c_ImageLookUpSI_S16_U8(ptr nocapture noundef readonly % %476 = or disjoint i32 %475, %471 %477 = lshr i32 %450, %401 %478 = shl i32 %476, %400 - %479 = add i32 %478, %477 + %479 = or disjoint i32 %478, %477 store i32 %479, ptr %456, align 4 %480 = getelementptr inbounds nuw i8, ptr %.1371409, i64 8 %481 = load i32, ptr %480, align 4 @@ -10975,7 +10975,7 @@ define hidden void @mlib_c_ImageLookUpSI_U16_U8(ptr nocapture noundef readonly % %448 = or disjoint i32 %447, %443 %449 = lshr i32 %.0412, %399 %450 = shl i32 %448, %398 - %451 = add i32 %450, %449 + %451 = or disjoint i32 %450, %449 %452 = load i16, ptr %.1369410, align 2 store i32 %451, ptr %.1371409, align 4 %453 = add nuw nsw i32 %.2375408, 1 @@ -11006,7 +11006,7 @@ define hidden void @mlib_c_ImageLookUpSI_U16_U8(ptr nocapture noundef readonly % %474 = or disjoint i32 %473, %469 %475 = lshr i32 %448, %399 %476 = shl i32 %474, %398 - %477 = add i32 %476, %475 + %477 = or disjoint i32 %476, %475 store i32 %477, ptr %454, align 4 %478 = getelementptr inbounds nuw i8, ptr %.1371409, i64 8 %479 = load i32, ptr %478, align 4 diff --git a/bench/php/optimized/hash_ripemd.ll b/bench/php/optimized/hash_ripemd.ll index 0eaa496b27b..ada70b72031 100644 --- a/bench/php/optimized/hash_ripemd.ll +++ b/bench/php/optimized/hash_ripemd.ll @@ -1061,7 +1061,7 @@ RIPEMDDecode.exit: ; preds = %11, %RIPEMDDecode.e %46 = shl i32 %42, %45 %47 = sub nsw i32 32, %45 %48 = lshr i32 %42, %47 - %49 = or i32 %48, %46 + %49 = or disjoint i32 %48, %46 %50 = and i32 %.0185226, %.0193224 %51 = xor i32 %.0185226, -1 %52 = and i32 %.0189225, %51 @@ -1080,7 +1080,7 @@ RIPEMDDecode.exit: ; preds = %11, %RIPEMDDecode.e %65 = shl i32 %61, %64 %66 = sub nsw i32 32, %64 %67 = lshr i32 %61, %66 - %68 = or i32 %67, %65 + %68 = or disjoint i32 %67, %65 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 16 br i1 %exitcond.not, label %.preheader218, label %RIPEMDDecode.exit @@ -1117,7 +1117,7 @@ RIPEMDDecode.exit: ; preds = %11, %RIPEMDDecode.e %88 = shl i32 %84, %87 %89 = sub nsw i32 32, %87 %90 = lshr i32 %84, %89 - %91 = or i32 %90, %88 + %91 = or disjoint i32 %90, %88 %92 = xor i32 %.1190234, -1 %93 = or i32 %.1194233, %92 %94 = xor i32 %93, %.1186235 @@ -1137,7 +1137,7 @@ RIPEMDDecode.exit: ; preds = %11, %RIPEMDDecode.e %108 = shl i32 %104, %107 %109 = sub nsw i32 32, %107 %110 = lshr i32 %104, %109 - %111 = or i32 %110, %108 + %111 = or disjoint i32 %110, %108 %indvars.iv.next264 = add nuw nsw i64 %indvars.iv263, 1 %exitcond266.not = icmp eq i64 %indvars.iv.next264, 32 br i1 %exitcond266.not, label %.preheader217, label %.preheader218 @@ -1173,7 +1173,7 @@ RIPEMDDecode.exit: ; preds = %11, %RIPEMDDecode.e %130 = shl i32 %126, %129 %131 = sub nsw i32 32, %129 %132 = lshr i32 %126, %131 - %133 = or i32 %132, %130 + %133 = or disjoint i32 %132, %130 %134 = and i32 %.2191243, %.2195242 %135 = xor i32 %.2195242, -1 %136 = and i32 %.2187244, %135 @@ -1194,7 +1194,7 @@ RIPEMDDecode.exit: ; preds = %11, %RIPEMDDecode.e %151 = shl i32 %147, %150 %152 = sub nsw i32 32, %150 %153 = lshr i32 %147, %152 - %154 = or i32 %153, %151 + %154 = or disjoint i32 %153, %151 %indvars.iv.next268 = add nuw nsw i64 %indvars.iv267, 1 %exitcond270.not = icmp eq i64 %indvars.iv.next268, 48 br i1 %exitcond270.not, label %.preheader, label %.preheader217 @@ -1231,7 +1231,7 @@ RIPEMDDecode.exit: ; preds = %11, %RIPEMDDecode.e %174 = shl i32 %170, %173 %175 = sub nsw i32 32, %173 %176 = lshr i32 %170, %175 - %177 = or i32 %176, %174 + %177 = or disjoint i32 %176, %174 %178 = xor i32 %.3192252, %.3196251 %179 = xor i32 %178, %.3188253 %180 = add i32 %179, %.3200250 @@ -1250,7 +1250,7 @@ RIPEMDDecode.exit: ; preds = %11, %RIPEMDDecode.e %193 = shl i32 %189, %192 %194 = sub nsw i32 32, %192 %195 = lshr i32 %189, %194 - %196 = or i32 %195, %193 + %196 = or disjoint i32 %195, %193 %indvars.iv.next272 = add nuw nsw i64 %indvars.iv271, 1 %exitcond274.not = icmp eq i64 %indvars.iv.next272, 64 br i1 %exitcond274.not, label %197, label %.preheader @@ -1348,7 +1348,7 @@ RIPEMDDecode.exit: ; preds = %19, %RIPEMDDecode.e %54 = shl i32 %50, %53 %55 = sub nsw i32 32, %53 %56 = lshr i32 %50, %55 - %57 = or i32 %56, %54 + %57 = or disjoint i32 %56, %54 %58 = and i32 %.0196237, %.0204235 %59 = xor i32 %.0196237, -1 %60 = and i32 %.0200236, %59 @@ -1367,7 +1367,7 @@ RIPEMDDecode.exit: ; preds = %19, %RIPEMDDecode.e %73 = shl i32 %69, %72 %74 = sub nsw i32 32, %72 %75 = lshr i32 %69, %74 - %76 = or i32 %75, %73 + %76 = or disjoint i32 %75, %73 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 16 br i1 %exitcond.not, label %.preheader229, label %RIPEMDDecode.exit @@ -1404,7 +1404,7 @@ RIPEMDDecode.exit: ; preds = %19, %RIPEMDDecode.e %96 = shl i32 %92, %95 %97 = sub nsw i32 32, %95 %98 = lshr i32 %92, %97 - %99 = or i32 %98, %96 + %99 = or disjoint i32 %98, %96 %100 = xor i32 %.1201245, -1 %101 = or i32 %.1205244, %100 %102 = xor i32 %101, %.1197246 @@ -1424,7 +1424,7 @@ RIPEMDDecode.exit: ; preds = %19, %RIPEMDDecode.e %116 = shl i32 %112, %115 %117 = sub nsw i32 32, %115 %118 = lshr i32 %112, %117 - %119 = or i32 %118, %116 + %119 = or disjoint i32 %118, %116 %indvars.iv.next275 = add nuw nsw i64 %indvars.iv274, 1 %exitcond277.not = icmp eq i64 %indvars.iv.next275, 32 br i1 %exitcond277.not, label %.preheader228, label %.preheader229 @@ -1460,7 +1460,7 @@ RIPEMDDecode.exit: ; preds = %19, %RIPEMDDecode.e %138 = shl i32 %134, %137 %139 = sub nsw i32 32, %137 %140 = lshr i32 %134, %139 - %141 = or i32 %140, %138 + %141 = or disjoint i32 %140, %138 %142 = and i32 %.2202254, %.2206253 %143 = xor i32 %.2206253, -1 %144 = and i32 %.2198255, %143 @@ -1481,7 +1481,7 @@ RIPEMDDecode.exit: ; preds = %19, %RIPEMDDecode.e %159 = shl i32 %155, %158 %160 = sub nsw i32 32, %158 %161 = lshr i32 %155, %160 - %162 = or i32 %161, %159 + %162 = or disjoint i32 %161, %159 %indvars.iv.next279 = add nuw nsw i64 %indvars.iv278, 1 %exitcond281.not = icmp eq i64 %indvars.iv.next279, 48 br i1 %exitcond281.not, label %.preheader, label %.preheader228 @@ -1518,7 +1518,7 @@ RIPEMDDecode.exit: ; preds = %19, %RIPEMDDecode.e %182 = shl i32 %178, %181 %183 = sub nsw i32 32, %181 %184 = lshr i32 %178, %183 - %185 = or i32 %184, %182 + %185 = or disjoint i32 %184, %182 %186 = xor i32 %.3203263, %.3207262 %187 = xor i32 %186, %.3199264 %188 = add i32 %187, %.3211261 @@ -1537,7 +1537,7 @@ RIPEMDDecode.exit: ; preds = %19, %RIPEMDDecode.e %201 = shl i32 %197, %200 %202 = sub nsw i32 32, %200 %203 = lshr i32 %197, %202 - %204 = or i32 %203, %201 + %204 = or disjoint i32 %203, %201 %indvars.iv.next283 = add nuw nsw i64 %indvars.iv282, 1 %exitcond285.not = icmp eq i64 %indvars.iv.next283, 64 br i1 %exitcond285.not, label %205, label %.preheader @@ -1635,8 +1635,8 @@ RIPEMDDecode.exit: ; preds = %13, %RIPEMDDecode.e %48 = shl i32 %44, %47 %49 = sub nsw i32 32, %47 %50 = lshr i32 %44, %49 - %51 = or i32 %50, %48 - %52 = add i32 %51, %.0284316 + %51 = add i32 %48, %.0284316 + %52 = add i32 %51, %50 %53 = tail call i32 @llvm.fshl.i32(i32 %.0294314, i32 %.0294314, i32 10) %54 = xor i32 %.0264320, -1 %55 = or i32 %.0269319, %54 @@ -1655,8 +1655,8 @@ RIPEMDDecode.exit: ; preds = %13, %RIPEMDDecode.e %68 = shl i32 %64, %67 %69 = sub nsw i32 32, %67 %70 = lshr i32 %64, %69 - %71 = or i32 %70, %68 - %72 = add i32 %71, %.0259321 + %71 = add i32 %68, %.0259321 + %72 = add i32 %71, %70 %73 = tail call i32 @llvm.fshl.i32(i32 %.0269319, i32 %.0269319, i32 10) %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 16 @@ -1696,8 +1696,8 @@ RIPEMDDecode.exit: ; preds = %13, %RIPEMDDecode.e %93 = shl i32 %89, %92 %94 = sub nsw i32 32, %92 %95 = lshr i32 %89, %94 - %96 = or i32 %95, %93 - %97 = add i32 %96, %.1285327 + %96 = add i32 %93, %.1285327 + %97 = add i32 %96, %95 %98 = tail call i32 @llvm.fshl.i32(i32 %.1295325, i32 %.1295325, i32 10) %99 = and i32 %.1265331, %.1275329 %100 = xor i32 %.1265331, -1 @@ -1719,8 +1719,8 @@ RIPEMDDecode.exit: ; preds = %13, %RIPEMDDecode.e %116 = shl i32 %112, %115 %117 = sub nsw i32 32, %115 %118 = lshr i32 %112, %117 - %119 = or i32 %118, %116 - %120 = add i32 %119, %.1260332 + %119 = add i32 %116, %.1260332 + %120 = add i32 %119, %118 %121 = tail call i32 @llvm.fshl.i32(i32 %.1270330, i32 %.1270330, i32 10) %indvars.iv.next388 = add nuw nsw i64 %indvars.iv387, 1 %exitcond390.not = icmp eq i64 %indvars.iv.next388, 32 @@ -1759,8 +1759,8 @@ RIPEMDDecode.exit: ; preds = %13, %RIPEMDDecode.e %140 = shl i32 %136, %139 %141 = sub nsw i32 32, %139 %142 = lshr i32 %136, %141 - %143 = or i32 %142, %140 - %144 = add i32 %143, %.2286338 + %143 = add i32 %140, %.2286338 + %144 = add i32 %143, %142 %145 = tail call i32 @llvm.fshl.i32(i32 %.2296336, i32 %.2296336, i32 10) %146 = xor i32 %.2271341, -1 %147 = or i32 %.2276340, %146 @@ -1781,8 +1781,8 @@ RIPEMDDecode.exit: ; preds = %13, %RIPEMDDecode.e %162 = shl i32 %158, %161 %163 = sub nsw i32 32, %161 %164 = lshr i32 %158, %163 - %165 = or i32 %164, %162 - %166 = add i32 %165, %.2261343 + %165 = add i32 %162, %.2261343 + %166 = add i32 %165, %164 %167 = tail call i32 @llvm.fshl.i32(i32 %.2271341, i32 %.2271341, i32 10) %indvars.iv.next392 = add nuw nsw i64 %indvars.iv391, 1 %exitcond394.not = icmp eq i64 %indvars.iv.next392, 48 @@ -1822,8 +1822,8 @@ RIPEMDDecode.exit: ; preds = %13, %RIPEMDDecode.e %187 = shl i32 %183, %186 %188 = sub nsw i32 32, %186 %189 = lshr i32 %183, %188 - %190 = or i32 %189, %187 - %191 = add i32 %190, %.3287349 + %190 = add i32 %187, %.3287349 + %191 = add i32 %190, %189 %192 = tail call i32 @llvm.fshl.i32(i32 %.3297347, i32 %.3297347, i32 10) %193 = and i32 %.3272352, %.3277351 %194 = xor i32 %.3277351, -1 @@ -1845,8 +1845,8 @@ RIPEMDDecode.exit: ; preds = %13, %RIPEMDDecode.e %210 = shl i32 %206, %209 %211 = sub nsw i32 32, %209 %212 = lshr i32 %206, %211 - %213 = or i32 %212, %210 - %214 = add i32 %213, %.3262354 + %213 = add i32 %210, %.3262354 + %214 = add i32 %213, %212 %215 = tail call i32 @llvm.fshl.i32(i32 %.3272352, i32 %.3272352, i32 10) %indvars.iv.next396 = add nuw nsw i64 %indvars.iv395, 1 %exitcond398.not = icmp eq i64 %indvars.iv.next396, 64 @@ -1885,8 +1885,8 @@ RIPEMDDecode.exit: ; preds = %13, %RIPEMDDecode.e %234 = shl i32 %230, %233 %235 = sub nsw i32 32, %233 %236 = lshr i32 %230, %235 - %237 = or i32 %236, %234 - %238 = add i32 %237, %.4288360 + %237 = add i32 %234, %.4288360 + %238 = add i32 %237, %236 %239 = tail call i32 @llvm.fshl.i32(i32 %.4298358, i32 %.4298358, i32 10) %240 = xor i32 %.4273363, %.4278362 %241 = xor i32 %240, %.4268364 @@ -1906,8 +1906,8 @@ RIPEMDDecode.exit: ; preds = %13, %RIPEMDDecode.e %255 = shl i32 %251, %254 %256 = sub nsw i32 32, %254 %257 = lshr i32 %251, %256 - %258 = or i32 %257, %255 - %259 = add i32 %258, %.4263365 + %258 = add i32 %255, %.4263365 + %259 = add i32 %258, %257 %260 = tail call i32 @llvm.fshl.i32(i32 %.4273363, i32 %.4273363, i32 10) %indvars.iv.next400 = add nuw nsw i64 %indvars.iv399, 1 %exitcond402.not = icmp eq i64 %indvars.iv.next400, 80 @@ -2015,8 +2015,8 @@ RIPEMDDecode.exit: ; preds = %23, %RIPEMDDecode.e %58 = shl i32 %54, %57 %59 = sub nsw i32 32, %57 %60 = lshr i32 %54, %59 - %61 = or i32 %60, %58 - %62 = add i32 %61, %.0298330 + %61 = add i32 %58, %.0298330 + %62 = add i32 %61, %60 %63 = tail call i32 @llvm.fshl.i32(i32 %.0308328, i32 %.0308328, i32 10) %64 = xor i32 %.0278334, -1 %65 = or i32 %.0283333, %64 @@ -2035,8 +2035,8 @@ RIPEMDDecode.exit: ; preds = %23, %RIPEMDDecode.e %78 = shl i32 %74, %77 %79 = sub nsw i32 32, %77 %80 = lshr i32 %74, %79 - %81 = or i32 %80, %78 - %82 = add i32 %81, %.0273335 + %81 = add i32 %78, %.0273335 + %82 = add i32 %81, %80 %83 = tail call i32 @llvm.fshl.i32(i32 %.0283333, i32 %.0283333, i32 10) %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 16 @@ -2076,8 +2076,8 @@ RIPEMDDecode.exit: ; preds = %23, %RIPEMDDecode.e %103 = shl i32 %99, %102 %104 = sub nsw i32 32, %102 %105 = lshr i32 %99, %104 - %106 = or i32 %105, %103 - %107 = add i32 %106, %.1299341 + %106 = add i32 %103, %.1299341 + %107 = add i32 %106, %105 %108 = tail call i32 @llvm.fshl.i32(i32 %.1309339, i32 %.1309339, i32 10) %109 = and i32 %.1279345, %.1289343 %110 = xor i32 %.1279345, -1 @@ -2099,8 +2099,8 @@ RIPEMDDecode.exit: ; preds = %23, %RIPEMDDecode.e %126 = shl i32 %122, %125 %127 = sub nsw i32 32, %125 %128 = lshr i32 %122, %127 - %129 = or i32 %128, %126 - %130 = add i32 %129, %.1274346 + %129 = add i32 %126, %.1274346 + %130 = add i32 %129, %128 %131 = tail call i32 @llvm.fshl.i32(i32 %.1284344, i32 %.1284344, i32 10) %indvars.iv.next402 = add nuw nsw i64 %indvars.iv401, 1 %exitcond404.not = icmp eq i64 %indvars.iv.next402, 32 @@ -2139,8 +2139,8 @@ RIPEMDDecode.exit: ; preds = %23, %RIPEMDDecode.e %150 = shl i32 %146, %149 %151 = sub nsw i32 32, %149 %152 = lshr i32 %146, %151 - %153 = or i32 %152, %150 - %154 = add i32 %153, %.2300352 + %153 = add i32 %150, %.2300352 + %154 = add i32 %153, %152 %155 = tail call i32 @llvm.fshl.i32(i32 %.2310350, i32 %.2310350, i32 10) %156 = xor i32 %.2285355, -1 %157 = or i32 %.2290354, %156 @@ -2161,8 +2161,8 @@ RIPEMDDecode.exit: ; preds = %23, %RIPEMDDecode.e %172 = shl i32 %168, %171 %173 = sub nsw i32 32, %171 %174 = lshr i32 %168, %173 - %175 = or i32 %174, %172 - %176 = add i32 %175, %.2275357 + %175 = add i32 %172, %.2275357 + %176 = add i32 %175, %174 %177 = tail call i32 @llvm.fshl.i32(i32 %.2285355, i32 %.2285355, i32 10) %indvars.iv.next406 = add nuw nsw i64 %indvars.iv405, 1 %exitcond408.not = icmp eq i64 %indvars.iv.next406, 48 @@ -2202,8 +2202,8 @@ RIPEMDDecode.exit: ; preds = %23, %RIPEMDDecode.e %197 = shl i32 %193, %196 %198 = sub nsw i32 32, %196 %199 = lshr i32 %193, %198 - %200 = or i32 %199, %197 - %201 = add i32 %200, %.3301363 + %200 = add i32 %197, %.3301363 + %201 = add i32 %200, %199 %202 = tail call i32 @llvm.fshl.i32(i32 %.3311361, i32 %.3311361, i32 10) %203 = and i32 %.3286366, %.3291365 %204 = xor i32 %.3291365, -1 @@ -2225,8 +2225,8 @@ RIPEMDDecode.exit: ; preds = %23, %RIPEMDDecode.e %220 = shl i32 %216, %219 %221 = sub nsw i32 32, %219 %222 = lshr i32 %216, %221 - %223 = or i32 %222, %220 - %224 = add i32 %223, %.3276368 + %223 = add i32 %220, %.3276368 + %224 = add i32 %223, %222 %225 = tail call i32 @llvm.fshl.i32(i32 %.3286366, i32 %.3286366, i32 10) %indvars.iv.next410 = add nuw nsw i64 %indvars.iv409, 1 %exitcond412.not = icmp eq i64 %indvars.iv.next410, 64 @@ -2265,8 +2265,8 @@ RIPEMDDecode.exit: ; preds = %23, %RIPEMDDecode.e %244 = shl i32 %240, %243 %245 = sub nsw i32 32, %243 %246 = lshr i32 %240, %245 - %247 = or i32 %246, %244 - %248 = add i32 %247, %.4302374 + %247 = add i32 %244, %.4302374 + %248 = add i32 %247, %246 %249 = tail call i32 @llvm.fshl.i32(i32 %.4312372, i32 %.4312372, i32 10) %250 = xor i32 %.4287377, %.4292376 %251 = xor i32 %250, %.4282378 @@ -2286,8 +2286,8 @@ RIPEMDDecode.exit: ; preds = %23, %RIPEMDDecode.e %265 = shl i32 %261, %264 %266 = sub nsw i32 32, %264 %267 = lshr i32 %261, %266 - %268 = or i32 %267, %265 - %269 = add i32 %268, %.4277379 + %268 = add i32 %265, %.4277379 + %269 = add i32 %268, %267 %270 = tail call i32 @llvm.fshl.i32(i32 %.4287377, i32 %.4287377, i32 10) %indvars.iv.next414 = add nuw nsw i64 %indvars.iv413, 1 %exitcond416.not = icmp eq i64 %indvars.iv.next414, 80 diff --git a/bench/php/optimized/hash_snefru.ll b/bench/php/optimized/hash_snefru.ll index b7def2bec90..2680bbc659e 100644 --- a/bench/php/optimized/hash_snefru.ll +++ b/bench/php/optimized/hash_snefru.ll @@ -468,52 +468,52 @@ define internal fastcc void @Snefru(ptr nocapture noundef %0) unnamed_addr #5 { %137 = sub nsw i32 32, %136 %138 = lshr i32 %134, %136 %139 = shl i32 %134, %137 - %140 = or i32 %139, %138 + %140 = or disjoint i32 %139, %138 %141 = lshr i32 %55, %136 %142 = shl i32 %55, %137 - %143 = or i32 %142, %141 + %143 = or disjoint i32 %142, %141 %144 = lshr i32 %61, %136 %145 = shl i32 %61, %137 - %146 = or i32 %145, %144 + %146 = or disjoint i32 %145, %144 %147 = lshr i32 %67, %136 %148 = shl i32 %67, %137 - %149 = or i32 %148, %147 + %149 = or disjoint i32 %148, %147 %150 = lshr i32 %73, %136 %151 = shl i32 %73, %137 - %152 = or i32 %151, %150 + %152 = or disjoint i32 %151, %150 %153 = lshr i32 %79, %136 %154 = shl i32 %79, %137 - %155 = or i32 %154, %153 + %155 = or disjoint i32 %154, %153 %156 = lshr i32 %85, %136 %157 = shl i32 %85, %137 - %158 = or i32 %157, %156 + %158 = or disjoint i32 %157, %156 %159 = lshr i32 %91, %136 %160 = shl i32 %91, %137 - %161 = or i32 %160, %159 + %161 = or disjoint i32 %160, %159 %162 = lshr i32 %97, %136 %163 = shl i32 %97, %137 - %164 = or i32 %163, %162 + %164 = or disjoint i32 %163, %162 %165 = lshr i32 %103, %136 %166 = shl i32 %103, %137 - %167 = or i32 %166, %165 + %167 = or disjoint i32 %166, %165 %168 = lshr i32 %109, %136 %169 = shl i32 %109, %137 - %170 = or i32 %169, %168 + %170 = or disjoint i32 %169, %168 %171 = lshr i32 %115, %136 %172 = shl i32 %115, %137 - %173 = or i32 %172, %171 + %173 = or disjoint i32 %172, %171 %174 = lshr i32 %121, %136 %175 = shl i32 %121, %137 - %176 = or i32 %175, %174 + %176 = or disjoint i32 %175, %174 %177 = lshr i32 %127, %136 %178 = shl i32 %127, %137 - %179 = or i32 %178, %177 + %179 = or disjoint i32 %178, %177 %180 = lshr i32 %133, %136 %181 = shl i32 %133, %137 - %182 = or i32 %181, %180 + %182 = or disjoint i32 %181, %180 %183 = lshr i32 %128, %136 %184 = shl i32 %128, %137 - %185 = or i32 %184, %183 + %185 = or disjoint i32 %184, %183 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 4 br i1 %exitcond.not, label %186, label %38 diff --git a/bench/postgres/optimized/nodeHash.ll b/bench/postgres/optimized/nodeHash.ll index 2021de512c9..6eb0d3f56d9 100644 --- a/bench/postgres/optimized/nodeHash.ll +++ b/bench/postgres/optimized/nodeHash.ll @@ -454,7 +454,7 @@ ExecHashGetSkewBucket.exit.i: ; preds = %.lr.ph.i.i14 %261 = lshr i32 %253, %260 %262 = sub i32 32, %260 %263 = shl i32 %253, %262 - %264 = or i32 %263, %261 + %264 = or disjoint i32 %263, %261 %265 = add i32 %255, -1 %266 = and i32 %264, %265 br label %ExecHashGetBucketAndBatch.exit.i.i.i @@ -1765,7 +1765,7 @@ define dso_local void @ExecHashTableInsert(ptr noundef %0, ptr noundef %1, i32 n %15 = lshr i32 %2, %14 %16 = sub i32 32, %14 %17 = shl i32 %2, %16 - %18 = or i32 %17, %15 + %18 = or disjoint i32 %17, %15 %19 = add i32 %8, -1 %20 = and i32 %18, %19 br label %ExecHashGetBucketAndBatch.exit @@ -1983,7 +1983,7 @@ define dso_local void @ExecHashGetBucketAndBatch(ptr nocapture noundef readonly %14 = lshr i32 %1, %13 %15 = sub i32 32, %13 %16 = shl i32 %1, %15 - %17 = or i32 %16, %14 + %17 = or disjoint i32 %16, %14 %18 = add i32 %7, -1 %19 = and i32 %17, %18 br label %20 @@ -2131,7 +2131,7 @@ define internal fastcc void @ExecHashIncreaseNumBatches(ptr noundef %0) unnamed_ %78 = lshr i32 %70, %77 %79 = sub i32 32, %77 %80 = shl i32 %70, %79 - %81 = or i32 %80, %78 + %81 = or disjoint i32 %80, %78 %82 = add i32 %72, -1 %83 = and i32 %81, %82 br label %ExecHashGetBucketAndBatch.exit @@ -2313,7 +2313,7 @@ ExecHashGetBucketAndBatch.exit: ; preds = %.backedge %16 = lshr i32 %2, %15 %17 = sub i32 32, %15 %18 = shl i32 %2, %17 - %19 = or i32 %18, %16 + %19 = or disjoint i32 %18, %16 %20 = add i32 %13, -1 %21 = and i32 %19, %20 %22 = icmp eq i32 %21, 0 @@ -4305,7 +4305,7 @@ ExecHashGetBucketAndBatch.exit: ; preds = %175 %186 = lshr i32 %179, %185 %187 = sub i32 32, %185 %188 = shl i32 %179, %187 - %189 = or i32 %188, %186 + %189 = or disjoint i32 %188, %186 %190 = add i32 %181, -1 %191 = and i32 %189, %190 %192 = icmp eq i32 %191, 0 @@ -4472,7 +4472,7 @@ ExecParallelHashRepartitionFirst.exit: ; preds = %242, %139 %290 = lshr i32 %288, %289 %291 = sub i32 32, %289 %292 = shl i32 %288, %291 - %293 = or i32 %292, %290 + %293 = or disjoint i32 %292, %290 %294 = add i32 %285, -1 %295 = and i32 %293, %294 %296 = sext i32 %295 to i64