Skip to content

Commit 2212ea8

Browse files
committed
Add a memcpy test for arrays of 3 ints
1 parent cb67e16 commit 2212ea8

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

llvm/test/CodeGen/DirectX/legalize-memcpy.ll

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,31 @@ define void @replace_int_memcpy_test() #0 {
3737
ret void
3838
}
3939

40+
define void @replace_3int_memcpy_test() #0 {
41+
; CHECK-LABEL: define void @replace_3int_memcpy_test(
42+
; CHECK-SAME: ) #[[ATTR0]] {
43+
; CHECK-NEXT: [[TMP1:%.*]] = alloca [3 x i32], align 4
44+
; CHECK-NEXT: [[TMP2:%.*]] = alloca [3 x i32], align 4
45+
; CHECK-NEXT: [[GEP:%.*]] = getelementptr i32, ptr [[TMP1]], i32 0
46+
; CHECK-NEXT: [[TMP3:%.*]] = load i32, ptr [[GEP]], align 4
47+
; CHECK-NEXT: [[GEP1:%.*]] = getelementptr i32, ptr [[TMP2]], i32 0
48+
; CHECK-NEXT: store i32 [[TMP3]], ptr [[GEP1]], align 4
49+
; CHECK-NEXT: [[GEP2:%.*]] = getelementptr i32, ptr [[TMP1]], i32 1
50+
; CHECK-NEXT: [[TMP4:%.*]] = load i32, ptr [[GEP2]], align 4
51+
; CHECK-NEXT: [[GEP3:%.*]] = getelementptr i32, ptr [[TMP2]], i32 1
52+
; CHECK-NEXT: store i32 [[TMP4]], ptr [[GEP3]], align 4
53+
; CHECK-NEXT: [[GEP4:%.*]] = getelementptr i32, ptr [[TMP1]], i32 2
54+
; CHECK-NEXT: [[TMP5:%.*]] = load i32, ptr [[GEP4]], align 4
55+
; CHECK-NEXT: [[GEP5:%.*]] = getelementptr i32, ptr [[TMP2]], i32 2
56+
; CHECK-NEXT: store i32 [[TMP5]], ptr [[GEP5]], align 4
57+
; CHECK-NEXT: ret void
58+
;
59+
%1 = alloca [3 x i32], align 4
60+
%2 = alloca [3 x i32], align 4
61+
call void @llvm.memcpy.p0.p0.i32(ptr nonnull align 4 dereferenceable(12) %2, ptr align 4 dereferenceable(12) %1, i32 12, i1 false)
62+
ret void
63+
}
64+
4065
define void @replace_int16_memcpy_test() #0 {
4166
; CHECK-LABEL: define void @replace_int16_memcpy_test(
4267
; CHECK-SAME: ) #[[ATTR0]] {

0 commit comments

Comments
 (0)