Skip to content

Commit 76b9973

Browse files
committed
[DSE] Strengthen test coverage for memset.pattern
1 parent aadf35c commit 76b9973

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

llvm/test/Transforms/DeadStoreElimination/memset-and-memcpy.ll

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,4 +117,38 @@ define void @test_store_memcpy_inline(ptr noalias %P, ptr noalias %Q) {
117117
ret void
118118
}
119119

120+
;; Overwrite of memset.pattern by memcpy.
121+
define void @memset_pattern_overwrite(ptr %P, ptr noalias %Q) nounwind ssp {
122+
; CHECK-LABEL: @memset_pattern_overwrite(
123+
; CHECK-NEXT: tail call void @llvm.memcpy.p0.p0.i64(ptr [[P:%.*]], ptr [[Q:%.*]], i64 12, i1 false)
124+
; CHECK-NEXT: ret void
125+
;
126+
tail call void @llvm.experimental.memset.pattern.p0.i64(ptr %P, i8 42, i64 8, i1 false)
127+
tail call void @llvm.memcpy.p0.p0.i64(ptr %P, ptr %Q, i64 12, i1 false)
128+
ret void
129+
}
130+
131+
define void @memset_pattern_overwrite2(ptr %P, ptr noalias %Q) nounwind ssp {
132+
; CHECK-LABEL: @memset_pattern_overwrite2(
133+
; CHECK-NEXT: tail call void @llvm.memcpy.p0.p0.i64(ptr [[P:%.*]], ptr [[Q:%.*]], i64 12, i1 false)
134+
; CHECK-NEXT: ret void
135+
;
136+
tail call void @llvm.experimental.memset.pattern(ptr %P, i16 270, i64 4, i1 false)
137+
tail call void @llvm.memcpy.p0.p0.i64(ptr %P, ptr %Q, i64 12, i1 false)
138+
ret void
139+
}
140+
141+
define void @memset_pattern_value_noalias(ptr %P, ptr noalias %Q) nounwind ssp {
142+
; CHECK-LABEL: @memset_pattern_value_noalias(
143+
; CHECK-NEXT: tail call void @llvm.experimental.memset.pattern.p0.p0.i64(ptr [[Q:%.*]], ptr [[P:%.*]], i64 8, i1 false)
144+
; CHECK-NEXT: tail call void @llvm.memcpy.p0.p0.i64(ptr [[P]], ptr [[Q]], i64 12, i1 false)
145+
; CHECK-NEXT: ret void
146+
;
147+
tail call void @llvm.memset.p0.i64(ptr %P, i8 42, i64 8, i1 false)
148+
tail call void @llvm.experimental.memset.pattern.p0.i64(ptr %Q, ptr %P, i64 8, i1 false)
149+
tail call void @llvm.memcpy.p0.p0.i64(ptr %P, ptr %Q, i64 12, i1 false)
150+
ret void
151+
}
152+
153+
120154
declare void @llvm.memcpy.inline.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64 immarg, i1 immarg)

0 commit comments

Comments
 (0)