[llvm] 76b9973 - [DSE] Strengthen test coverage for memset.pattern
Philip Reames via llvm-commits
llvm-commits at lists.llvm.org
Mon May 5 07:34:29 PDT 2025
Author: Philip Reames
Date: 2025-05-05T07:32:31-07:00
New Revision: 76b9973a78023bb7fa42e8e63c7b40799b6c8900
URL: https://github.com/llvm/llvm-project/commit/76b9973a78023bb7fa42e8e63c7b40799b6c8900
DIFF: https://github.com/llvm/llvm-project/commit/76b9973a78023bb7fa42e8e63c7b40799b6c8900.diff
LOG: [DSE] Strengthen test coverage for memset.pattern
Added:
Modified:
llvm/test/Transforms/DeadStoreElimination/memset-and-memcpy.ll
Removed:
################################################################################
diff --git a/llvm/test/Transforms/DeadStoreElimination/memset-and-memcpy.ll b/llvm/test/Transforms/DeadStoreElimination/memset-and-memcpy.ll
index 39550c65772a1..98b662ec85161 100644
--- a/llvm/test/Transforms/DeadStoreElimination/memset-and-memcpy.ll
+++ b/llvm/test/Transforms/DeadStoreElimination/memset-and-memcpy.ll
@@ -117,4 +117,38 @@ define void @test_store_memcpy_inline(ptr noalias %P, ptr noalias %Q) {
ret void
}
+;; Overwrite of memset.pattern by memcpy.
+define void @memset_pattern_overwrite(ptr %P, ptr noalias %Q) nounwind ssp {
+; CHECK-LABEL: @memset_pattern_overwrite(
+; CHECK-NEXT: tail call void @llvm.memcpy.p0.p0.i64(ptr [[P:%.*]], ptr [[Q:%.*]], i64 12, i1 false)
+; CHECK-NEXT: ret void
+;
+ tail call void @llvm.experimental.memset.pattern.p0.i64(ptr %P, i8 42, i64 8, i1 false)
+ tail call void @llvm.memcpy.p0.p0.i64(ptr %P, ptr %Q, i64 12, i1 false)
+ ret void
+}
+
+define void @memset_pattern_overwrite2(ptr %P, ptr noalias %Q) nounwind ssp {
+; CHECK-LABEL: @memset_pattern_overwrite2(
+; CHECK-NEXT: tail call void @llvm.memcpy.p0.p0.i64(ptr [[P:%.*]], ptr [[Q:%.*]], i64 12, i1 false)
+; CHECK-NEXT: ret void
+;
+ tail call void @llvm.experimental.memset.pattern(ptr %P, i16 270, i64 4, i1 false)
+ tail call void @llvm.memcpy.p0.p0.i64(ptr %P, ptr %Q, i64 12, i1 false)
+ ret void
+}
+
+define void @memset_pattern_value_noalias(ptr %P, ptr noalias %Q) nounwind ssp {
+; CHECK-LABEL: @memset_pattern_value_noalias(
+; CHECK-NEXT: tail call void @llvm.experimental.memset.pattern.p0.p0.i64(ptr [[Q:%.*]], ptr [[P:%.*]], i64 8, i1 false)
+; CHECK-NEXT: tail call void @llvm.memcpy.p0.p0.i64(ptr [[P]], ptr [[Q]], i64 12, i1 false)
+; CHECK-NEXT: ret void
+;
+ tail call void @llvm.memset.p0.i64(ptr %P, i8 42, i64 8, i1 false)
+ tail call void @llvm.experimental.memset.pattern.p0.i64(ptr %Q, ptr %P, i64 8, i1 false)
+ tail call void @llvm.memcpy.p0.p0.i64(ptr %P, ptr %Q, i64 12, i1 false)
+ ret void
+}
+
+
declare void @llvm.memcpy.inline.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64 immarg, i1 immarg)
More information about the llvm-commits
mailing list