@@ -7,20 +7,16 @@ define void @replace_2x4xint_global_memcpy_test() #0 {
77; CHECK-LABEL: define void @replace_2x4xint_global_memcpy_test(
88; CHECK-SAME: ) #[[ATTR0:[0-9]+]] {
99; CHECK-NEXT: [[TMP1:%.*]] = alloca [2 x <4 x i32>], align 16
10- ; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr nonnull [[TMP1]])
1110; CHECK-NEXT: [[TMP2:%.*]] = load <4 x i32>, ptr addrspace(2) @outputStrides, align 16
1211; CHECK-NEXT: [[GEP:%.*]] = getelementptr <4 x i32>, ptr [[TMP1]], i32 0
1312; CHECK-NEXT: store <4 x i32> [[TMP2]], ptr [[GEP]], align 16
1413; CHECK-NEXT: [[TMP3:%.*]] = load <4 x i32>, ptr addrspace(2) getelementptr (<4 x i32>, ptr addrspace(2) @outputStrides, i32 1), align 16
1514; CHECK-NEXT: [[GEP1:%.*]] = getelementptr <4 x i32>, ptr [[TMP1]], i32 1
1615; CHECK-NEXT: store <4 x i32> [[TMP3]], ptr [[GEP1]], align 16
17- ; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr nonnull [[TMP1]])
1816; CHECK-NEXT: ret void
1917;
2018 %1 = alloca [2 x <4 x i32 >], align 16
21- call void @llvm.lifetime.start.p0 (i64 32 , ptr nonnull %1 )
2219 call void @llvm.memcpy.p0.p2.i32 (ptr nonnull align 16 dereferenceable (32 ) %1 , ptr addrspace (2 ) align 16 dereferenceable (32 ) @outputStrides , i32 32 , i1 false )
23- call void @llvm.lifetime.end.p0 (i64 32 , ptr nonnull %1 )
2420 ret void
2521}
2622
@@ -29,23 +25,15 @@ define void @replace_int_memcpy_test() #0 {
2925; CHECK-SAME: ) #[[ATTR0]] {
3026; CHECK-NEXT: [[TMP1:%.*]] = alloca [1 x i32], align 4
3127; CHECK-NEXT: [[TMP2:%.*]] = alloca [1 x i32], align 4
32- ; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[TMP1]])
33- ; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[TMP2]])
3428; CHECK-NEXT: [[GEP:%.*]] = getelementptr i32, ptr [[TMP1]], i32 0
3529; CHECK-NEXT: [[TMP3:%.*]] = load i32, ptr [[GEP]], align 4
3630; CHECK-NEXT: [[GEP1:%.*]] = getelementptr i32, ptr [[TMP2]], i32 0
3731; CHECK-NEXT: store i32 [[TMP3]], ptr [[GEP1]], align 4
38- ; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[TMP2]])
39- ; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[TMP1]])
4032; CHECK-NEXT: ret void
4133;
4234 %1 = alloca [1 x i32 ], align 4
4335 %2 = alloca [1 x i32 ], align 4
44- call void @llvm.lifetime.start.p0 (i64 4 , ptr nonnull %1 )
45- call void @llvm.lifetime.start.p0 (i64 4 , ptr nonnull %2 )
4636 call void @llvm.memcpy.p0.p0.i32 (ptr nonnull align 4 dereferenceable (4 ) %2 , ptr align 4 dereferenceable (4 ) %1 , i32 4 , i1 false )
47- call void @llvm.lifetime.end.p0 (i64 4 , ptr nonnull %2 )
48- call void @llvm.lifetime.end.p0 (i64 4 , ptr nonnull %1 )
4937 ret void
5038}
5139
@@ -54,8 +42,6 @@ define void @replace_int16_memcpy_test() #0 {
5442; CHECK-SAME: ) #[[ATTR0]] {
5543; CHECK-NEXT: [[TMP1:%.*]] = alloca [2 x i16], align 2
5644; CHECK-NEXT: [[TMP2:%.*]] = alloca [2 x i16], align 2
57- ; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[TMP1]])
58- ; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[TMP2]])
5945; CHECK-NEXT: [[GEP:%.*]] = getelementptr i16, ptr [[TMP1]], i32 0
6046; CHECK-NEXT: [[TMP3:%.*]] = load i16, ptr [[GEP]], align 2
6147; CHECK-NEXT: [[GEP1:%.*]] = getelementptr i16, ptr [[TMP2]], i32 0
@@ -64,17 +50,11 @@ define void @replace_int16_memcpy_test() #0 {
6450; CHECK-NEXT: [[TMP4:%.*]] = load i16, ptr [[GEP2]], align 2
6551; CHECK-NEXT: [[GEP3:%.*]] = getelementptr i16, ptr [[TMP2]], i32 1
6652; CHECK-NEXT: store i16 [[TMP4]], ptr [[GEP3]], align 2
67- ; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[TMP2]])
68- ; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[TMP1]])
6953; CHECK-NEXT: ret void
7054;
7155 %1 = alloca [2 x i16 ], align 2
7256 %2 = alloca [2 x i16 ], align 2
73- call void @llvm.lifetime.start.p0 (i64 4 , ptr nonnull %1 )
74- call void @llvm.lifetime.start.p0 (i64 4 , ptr nonnull %2 )
7557 call void @llvm.memcpy.p0.p0.i32 (ptr nonnull align 2 dereferenceable (4 ) %2 , ptr align 2 dereferenceable (4 ) %1 , i32 4 , i1 false )
76- call void @llvm.lifetime.end.p0 (i64 4 , ptr nonnull %2 )
77- call void @llvm.lifetime.end.p0 (i64 4 , ptr nonnull %1 )
7858 ret void
7959}
8060
@@ -83,8 +63,6 @@ define void @replace_float_memcpy_test() #0 {
8363; CHECK-SAME: ) #[[ATTR0]] {
8464; CHECK-NEXT: [[TMP1:%.*]] = alloca [2 x float], align 4
8565; CHECK-NEXT: [[TMP2:%.*]] = alloca [2 x float], align 4
86- ; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr nonnull [[TMP1]])
87- ; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr nonnull [[TMP2]])
8866; CHECK-NEXT: [[GEP:%.*]] = getelementptr float, ptr [[TMP1]], i32 0
8967; CHECK-NEXT: [[TMP3:%.*]] = load float, ptr [[GEP]], align 4
9068; CHECK-NEXT: [[GEP1:%.*]] = getelementptr float, ptr [[TMP2]], i32 0
@@ -93,17 +71,11 @@ define void @replace_float_memcpy_test() #0 {
9371; CHECK-NEXT: [[TMP4:%.*]] = load float, ptr [[GEP2]], align 4
9472; CHECK-NEXT: [[GEP3:%.*]] = getelementptr float, ptr [[TMP2]], i32 1
9573; CHECK-NEXT: store float [[TMP4]], ptr [[GEP3]], align 4
96- ; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr nonnull [[TMP2]])
97- ; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr nonnull [[TMP1]])
9874; CHECK-NEXT: ret void
9975;
10076 %1 = alloca [2 x float ], align 4
10177 %2 = alloca [2 x float ], align 4
102- call void @llvm.lifetime.start.p0 (i64 8 , ptr nonnull %1 )
103- call void @llvm.lifetime.start.p0 (i64 8 , ptr nonnull %2 )
10478 call void @llvm.memcpy.p0.p0.i32 (ptr nonnull align 4 dereferenceable (8 ) %2 , ptr align 4 dereferenceable (8 ) %1 , i32 8 , i1 false )
105- call void @llvm.lifetime.end.p0 (i64 8 , ptr nonnull %2 )
106- call void @llvm.lifetime.end.p0 (i64 8 , ptr nonnull %1 )
10779 ret void
10880}
10981
@@ -112,8 +84,6 @@ define void @replace_double_memcpy_test() #0 {
11284; CHECK-SAME: ) #[[ATTR0]] {
11385; CHECK-NEXT: [[TMP1:%.*]] = alloca [2 x double], align 4
11486; CHECK-NEXT: [[TMP2:%.*]] = alloca [2 x double], align 4
115- ; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr nonnull [[TMP1]])
116- ; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr nonnull [[TMP2]])
11787; CHECK-NEXT: [[GEP:%.*]] = getelementptr double, ptr [[TMP1]], i32 0
11888; CHECK-NEXT: [[TMP3:%.*]] = load double, ptr [[GEP]], align 8
11989; CHECK-NEXT: [[GEP1:%.*]] = getelementptr double, ptr [[TMP2]], i32 0
@@ -122,17 +92,11 @@ define void @replace_double_memcpy_test() #0 {
12292; CHECK-NEXT: [[TMP4:%.*]] = load double, ptr [[GEP2]], align 8
12393; CHECK-NEXT: [[GEP3:%.*]] = getelementptr double, ptr [[TMP2]], i32 1
12494; CHECK-NEXT: store double [[TMP4]], ptr [[GEP3]], align 8
125- ; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr nonnull [[TMP2]])
126- ; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr nonnull [[TMP1]])
12795; CHECK-NEXT: ret void
12896;
12997 %1 = alloca [2 x double ], align 4
13098 %2 = alloca [2 x double ], align 4
131- call void @llvm.lifetime.start.p0 (i64 16 , ptr nonnull %1 )
132- call void @llvm.lifetime.start.p0 (i64 16 , ptr nonnull %2 )
13399 call void @llvm.memcpy.p0.p0.i32 (ptr nonnull align 4 dereferenceable (8 ) %2 , ptr align 4 dereferenceable (8 ) %1 , i32 16 , i1 false )
134- call void @llvm.lifetime.end.p0 (i64 16 , ptr nonnull %2 )
135- call void @llvm.lifetime.end.p0 (i64 16 , ptr nonnull %1 )
136100 ret void
137101}
138102
@@ -141,8 +105,6 @@ define void @replace_half_memcpy_test() #0 {
141105; CHECK-SAME: ) #[[ATTR0]] {
142106; CHECK-NEXT: [[TMP1:%.*]] = alloca [2 x half], align 2
143107; CHECK-NEXT: [[TMP2:%.*]] = alloca [2 x half], align 2
144- ; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[TMP1]])
145- ; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[TMP2]])
146108; CHECK-NEXT: [[GEP:%.*]] = getelementptr half, ptr [[TMP1]], i32 0
147109; CHECK-NEXT: [[TMP3:%.*]] = load half, ptr [[GEP]], align 2
148110; CHECK-NEXT: [[GEP1:%.*]] = getelementptr half, ptr [[TMP2]], i32 0
@@ -151,24 +113,15 @@ define void @replace_half_memcpy_test() #0 {
151113; CHECK-NEXT: [[TMP4:%.*]] = load half, ptr [[GEP2]], align 2
152114; CHECK-NEXT: [[GEP3:%.*]] = getelementptr half, ptr [[TMP2]], i32 1
153115; CHECK-NEXT: store half [[TMP4]], ptr [[GEP3]], align 2
154- ; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[TMP2]])
155- ; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[TMP1]])
156116; CHECK-NEXT: ret void
157117;
158118 %1 = alloca [2 x half ], align 2
159119 %2 = alloca [2 x half ], align 2
160- call void @llvm.lifetime.start.p0 (i64 4 , ptr nonnull %1 )
161- call void @llvm.lifetime.start.p0 (i64 4 , ptr nonnull %2 )
162120 call void @llvm.memcpy.p0.p0.i32 (ptr nonnull align 2 dereferenceable (4 ) %2 , ptr align 2 dereferenceable (4 ) %1 , i32 4 , i1 false )
163- call void @llvm.lifetime.end.p0 (i64 4 , ptr nonnull %2 )
164- call void @llvm.lifetime.end.p0 (i64 4 , ptr nonnull %1 )
165121 ret void
166122}
167123
168124attributes #0 = {"hlsl.export" }
169125
170-
171- declare void @llvm.lifetime.end.p0 (i64 immarg, ptr captures(none))
172- declare void @llvm.lifetime.start.p0 (i64 immarg, ptr captures(none))
173126declare void @llvm.memcpy.p0.p2.i32 (ptr noalias , ptr addrspace (2 ) noalias readonly , i32 , i1 )
174127declare void @llvm.memcpy.p0.p0.i32 (ptr noalias , ptr noalias readonly , i32 , i1 )
0 commit comments