@@ -5,92 +5,72 @@ define void @replace_float_memset_test() #0 {
5
5
; CHECK-LABEL: define void @replace_float_memset_test(
6
6
; CHECK-SAME: ) #[[ATTR0:[0-9]+]] {
7
7
; 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]])
9
8
; CHECK-NEXT: [[GEP:%.*]] = getelementptr [2 x float], ptr [[ACCUM_I_FLAT]], i32 0, i32 0
10
9
; CHECK-NEXT: store float 0.000000e+00, ptr [[GEP]], align 4
11
10
; CHECK-NEXT: [[GEP1:%.*]] = getelementptr [2 x float], ptr [[ACCUM_I_FLAT]], i32 0, i32 1
12
11
; 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]])
14
12
; CHECK-NEXT: ret void
15
13
;
16
14
%accum.i.flat = alloca [2 x float ], align 4
17
- call void @llvm.lifetime.start.p0 (i64 8 , ptr nonnull %accum.i.flat )
18
15
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 )
20
16
ret void
21
17
}
22
18
23
19
define void @replace_half_memset_test () #0 {
24
20
; CHECK-LABEL: define void @replace_half_memset_test(
25
21
; CHECK-SAME: ) #[[ATTR0]] {
26
22
; 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]])
28
23
; CHECK-NEXT: [[GEP:%.*]] = getelementptr [2 x half], ptr [[ACCUM_I_FLAT]], i32 0, i32 0
29
24
; CHECK-NEXT: store half 0xH0000, ptr [[GEP]], align 2
30
25
; CHECK-NEXT: [[GEP1:%.*]] = getelementptr [2 x half], ptr [[ACCUM_I_FLAT]], i32 0, i32 1
31
26
; 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]])
33
27
; CHECK-NEXT: ret void
34
28
;
35
29
%accum.i.flat = alloca [2 x half ], align 4
36
- call void @llvm.lifetime.start.p0 (i64 4 , ptr nonnull %accum.i.flat )
37
30
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 )
39
31
ret void
40
32
}
41
33
42
34
define void @replace_double_memset_test () #0 {
43
35
; CHECK-LABEL: define void @replace_double_memset_test(
44
36
; CHECK-SAME: ) #[[ATTR0]] {
45
37
; 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]])
47
38
; CHECK-NEXT: [[GEP:%.*]] = getelementptr [2 x double], ptr [[ACCUM_I_FLAT]], i32 0, i32 0
48
39
; CHECK-NEXT: store double 0.000000e+00, ptr [[GEP]], align 8
49
40
; CHECK-NEXT: [[GEP1:%.*]] = getelementptr [2 x double], ptr [[ACCUM_I_FLAT]], i32 0, i32 1
50
41
; 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]])
52
42
; CHECK-NEXT: ret void
53
43
;
54
44
%accum.i.flat = alloca [2 x double ], align 4
55
- call void @llvm.lifetime.start.p0 (i64 16 , ptr nonnull %accum.i.flat )
56
45
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 )
58
46
ret void
59
47
}
60
48
61
49
define void @replace_int16_memset_test () #0 {
62
50
; CHECK-LABEL: define void @replace_int16_memset_test(
63
51
; CHECK-SAME: ) #[[ATTR0]] {
64
52
; 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]])
66
53
; CHECK-NEXT: [[GEP:%.*]] = getelementptr [2 x i16], ptr [[CACHE_I]], i32 0, i32 0
67
54
; CHECK-NEXT: store i16 0, ptr [[GEP]], align 2
68
55
; CHECK-NEXT: [[GEP1:%.*]] = getelementptr [2 x i16], ptr [[CACHE_I]], i32 0, i32 1
69
56
; CHECK-NEXT: store i16 0, ptr [[GEP1]], align 2
70
- ; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[CACHE_I]])
71
57
; CHECK-NEXT: ret void
72
58
;
73
59
%cache.i = alloca [2 x i16 ], align 2
74
- call void @llvm.lifetime.start.p0 (i64 4 , ptr nonnull %cache.i )
75
60
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 )
77
61
ret void
78
62
}
79
63
80
64
define void @replace_int_memset_test () #0 {
81
65
; CHECK-LABEL: define void @replace_int_memset_test(
82
66
; CHECK-SAME: ) #[[ATTR0]] {
83
67
; 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]])
85
68
; CHECK-NEXT: [[GEP:%.*]] = getelementptr [1 x i32], ptr [[ACCUM_I_FLAT]], i32 0, i32 0
86
69
; 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]])
88
70
; CHECK-NEXT: ret void
89
71
;
90
72
%accum.i.flat = alloca [1 x i32 ], align 4
91
- call void @llvm.lifetime.start.p0 (i64 4 , ptr nonnull %accum.i.flat )
92
73
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 )
94
74
ret void
95
75
}
96
76
@@ -101,25 +81,19 @@ define void @replace_int_memset_to_var_test() #0 {
101
81
; CHECK-NEXT: [[I:%.*]] = alloca i32, align 4
102
82
; CHECK-NEXT: store i32 1, ptr [[I]], align 4
103
83
; 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]])
105
84
; CHECK-NEXT: [[GEP:%.*]] = getelementptr [1 x i32], ptr [[ACCUM_I_FLAT]], i32 0, i32 0
106
85
; 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]])
108
86
; CHECK-NEXT: ret void
109
87
;
110
88
%accum.i.flat = alloca [1 x i32 ], align 4
111
89
%i = alloca i8 , align 4
112
90
store i8 1 , ptr %i
113
91
%i8.load = load i8 , ptr %i
114
- call void @llvm.lifetime.start.p0 (i64 4 , ptr nonnull %accum.i.flat )
115
92
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 )
117
93
ret void
118
94
}
119
95
120
96
attributes #0 = {"hlsl.export" }
121
97
122
98
123
- declare void @llvm.lifetime.end.p0 (i64 immarg, ptr captures(none))
124
- declare void @llvm.lifetime.start.p0 (i64 immarg, ptr captures(none))
125
99
declare void @llvm.memset.p0.i32 (ptr writeonly captures(none), i8 , i32 , i1 immarg)
0 commit comments