@@ -5,92 +5,72 @@ define void @replace_float_memset_test() #0 {
55; CHECK-LABEL: define void @replace_float_memset_test(
66; CHECK-SAME: ) #[[ATTR0:[0-9]+]] {
77; CHECK-NEXT: [[ACCUM_I_FLAT:%.*]] = alloca [2 x float], align 4
8- ; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr nonnull [[ACCUM_I_FLAT]])
98; CHECK-NEXT: [[GEP:%.*]] = getelementptr [2 x float], ptr [[ACCUM_I_FLAT]], i32 0, i32 0
109; CHECK-NEXT: store float 0.000000e+00, ptr [[GEP]], align 4
1110; CHECK-NEXT: [[GEP1:%.*]] = getelementptr [2 x float], ptr [[ACCUM_I_FLAT]], i32 0, i32 1
1211; CHECK-NEXT: store float 0.000000e+00, ptr [[GEP1]], align 4
13- ; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr nonnull [[ACCUM_I_FLAT]])
1412; CHECK-NEXT: ret void
1513;
1614 %accum.i.flat = alloca [2 x float ], align 4
17- call void @llvm.lifetime.start.p0 (i64 8 , ptr nonnull %accum.i.flat )
1815 call void @llvm.memset.p0.i32 (ptr nonnull align 4 dereferenceable (8 ) %accum.i.flat , i8 0 , i32 8 , i1 false )
19- call void @llvm.lifetime.end.p0 (i64 8 , ptr nonnull %accum.i.flat )
2016 ret void
2117}
2218
2319define void @replace_half_memset_test () #0 {
2420; CHECK-LABEL: define void @replace_half_memset_test(
2521; CHECK-SAME: ) #[[ATTR0]] {
2622; CHECK-NEXT: [[ACCUM_I_FLAT:%.*]] = alloca [2 x half], align 4
27- ; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[ACCUM_I_FLAT]])
2823; CHECK-NEXT: [[GEP:%.*]] = getelementptr [2 x half], ptr [[ACCUM_I_FLAT]], i32 0, i32 0
2924; CHECK-NEXT: store half 0xH0000, ptr [[GEP]], align 2
3025; CHECK-NEXT: [[GEP1:%.*]] = getelementptr [2 x half], ptr [[ACCUM_I_FLAT]], i32 0, i32 1
3126; CHECK-NEXT: store half 0xH0000, ptr [[GEP1]], align 2
32- ; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[ACCUM_I_FLAT]])
3327; CHECK-NEXT: ret void
3428;
3529 %accum.i.flat = alloca [2 x half ], align 4
36- call void @llvm.lifetime.start.p0 (i64 4 , ptr nonnull %accum.i.flat )
3730 call void @llvm.memset.p0.i32 (ptr nonnull align 4 dereferenceable (8 ) %accum.i.flat , i8 0 , i32 4 , i1 false )
38- call void @llvm.lifetime.end.p0 (i64 4 , ptr nonnull %accum.i.flat )
3931 ret void
4032}
4133
4234define void @replace_double_memset_test () #0 {
4335; CHECK-LABEL: define void @replace_double_memset_test(
4436; CHECK-SAME: ) #[[ATTR0]] {
4537; CHECK-NEXT: [[ACCUM_I_FLAT:%.*]] = alloca [2 x double], align 4
46- ; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr nonnull [[ACCUM_I_FLAT]])
4738; CHECK-NEXT: [[GEP:%.*]] = getelementptr [2 x double], ptr [[ACCUM_I_FLAT]], i32 0, i32 0
4839; CHECK-NEXT: store double 0.000000e+00, ptr [[GEP]], align 8
4940; CHECK-NEXT: [[GEP1:%.*]] = getelementptr [2 x double], ptr [[ACCUM_I_FLAT]], i32 0, i32 1
5041; CHECK-NEXT: store double 0.000000e+00, ptr [[GEP1]], align 8
51- ; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr nonnull [[ACCUM_I_FLAT]])
5242; CHECK-NEXT: ret void
5343;
5444 %accum.i.flat = alloca [2 x double ], align 4
55- call void @llvm.lifetime.start.p0 (i64 16 , ptr nonnull %accum.i.flat )
5645 call void @llvm.memset.p0.i32 (ptr nonnull align 4 dereferenceable (8 ) %accum.i.flat , i8 0 , i32 16 , i1 false )
57- call void @llvm.lifetime.end.p0 (i64 16 , ptr nonnull %accum.i.flat )
5846 ret void
5947}
6048
6149define void @replace_int16_memset_test () #0 {
6250; CHECK-LABEL: define void @replace_int16_memset_test(
6351; CHECK-SAME: ) #[[ATTR0]] {
6452; CHECK-NEXT: [[CACHE_I:%.*]] = alloca [2 x i16], align 2
65- ; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[CACHE_I]])
6653; CHECK-NEXT: [[GEP:%.*]] = getelementptr [2 x i16], ptr [[CACHE_I]], i32 0, i32 0
6754; CHECK-NEXT: store i16 0, ptr [[GEP]], align 2
6855; CHECK-NEXT: [[GEP1:%.*]] = getelementptr [2 x i16], ptr [[CACHE_I]], i32 0, i32 1
6956; CHECK-NEXT: store i16 0, ptr [[GEP1]], align 2
70- ; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[CACHE_I]])
7157; CHECK-NEXT: ret void
7258;
7359 %cache.i = alloca [2 x i16 ], align 2
74- call void @llvm.lifetime.start.p0 (i64 4 , ptr nonnull %cache.i )
7560 call void @llvm.memset.p0.i32 (ptr nonnull align 2 dereferenceable (4 ) %cache.i , i8 0 , i32 4 , i1 false )
76- call void @llvm.lifetime.end.p0 (i64 4 , ptr nonnull %cache.i )
7761 ret void
7862}
7963
8064define void @replace_int_memset_test () #0 {
8165; CHECK-LABEL: define void @replace_int_memset_test(
8266; CHECK-SAME: ) #[[ATTR0]] {
8367; CHECK-NEXT: [[ACCUM_I_FLAT:%.*]] = alloca [1 x i32], align 4
84- ; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[ACCUM_I_FLAT]])
8568; CHECK-NEXT: [[GEP:%.*]] = getelementptr [1 x i32], ptr [[ACCUM_I_FLAT]], i32 0, i32 0
8669; CHECK-NEXT: store i32 0, ptr [[GEP]], align 4
87- ; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[ACCUM_I_FLAT]])
8870; CHECK-NEXT: ret void
8971;
9072 %accum.i.flat = alloca [1 x i32 ], align 4
91- call void @llvm.lifetime.start.p0 (i64 4 , ptr nonnull %accum.i.flat )
9273 call void @llvm.memset.p0.i32 (ptr nonnull align 4 dereferenceable (8 ) %accum.i.flat , i8 0 , i32 4 , i1 false )
93- call void @llvm.lifetime.end.p0 (i64 4 , ptr nonnull %accum.i.flat )
9474 ret void
9575}
9676
@@ -101,25 +81,19 @@ define void @replace_int_memset_to_var_test() #0 {
10181; CHECK-NEXT: [[I:%.*]] = alloca i32, align 4
10282; CHECK-NEXT: store i32 1, ptr [[I]], align 4
10383; CHECK-NEXT: [[I8_LOAD:%.*]] = load i32, ptr [[I]], align 4
104- ; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[ACCUM_I_FLAT]])
10584; CHECK-NEXT: [[GEP:%.*]] = getelementptr [1 x i32], ptr [[ACCUM_I_FLAT]], i32 0, i32 0
10685; CHECK-NEXT: store i32 [[I8_LOAD]], ptr [[GEP]], align 4
107- ; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[ACCUM_I_FLAT]])
10886; CHECK-NEXT: ret void
10987;
11088 %accum.i.flat = alloca [1 x i32 ], align 4
11189 %i = alloca i8 , align 4
11290 store i8 1 , ptr %i
11391 %i8.load = load i8 , ptr %i
114- call void @llvm.lifetime.start.p0 (i64 4 , ptr nonnull %accum.i.flat )
11592 call void @llvm.memset.p0.i32 (ptr nonnull align 4 dereferenceable (8 ) %accum.i.flat , i8 %i8.load , i32 4 , i1 false )
116- call void @llvm.lifetime.end.p0 (i64 4 , ptr nonnull %accum.i.flat )
11793 ret void
11894}
11995
12096attributes #0 = {"hlsl.export" }
12197
12298
123- declare void @llvm.lifetime.end.p0 (i64 immarg, ptr captures(none))
124- declare void @llvm.lifetime.start.p0 (i64 immarg, ptr captures(none))
12599declare void @llvm.memset.p0.i32 (ptr writeonly captures(none), i8 , i32 , i1 immarg)
0 commit comments