@@ -84,4 +84,58 @@ entry:
8484  ret  void 
8585}
8686
87+ define  amdgpu_kernel void  @memset_array_ptr_alloca (ptr  %out ) {
88+ ; CHECK-LABEL: @memset_array_ptr_alloca( 
89+ ; CHECK-NEXT:    store i64 0, ptr [[OUT:%.*]], align 8 
90+ ; CHECK-NEXT:    ret void 
91+ ; 
92+   %alloca  = alloca  [6  x ptr ], align  16 , addrspace (5 )
93+   call  void  @llvm.memset.p5.i64 (ptr  addrspace (5 ) %alloca , i8  0 , i64  48 , i1  false )
94+   %load  = load  i64 , ptr  addrspace (5 ) %alloca 
95+   store  i64  %load , ptr  %out 
96+   ret  void 
97+ }
98+ 
99+ define  amdgpu_kernel void  @memset_vector_ptr_alloca (ptr  %out ) {
100+ ; CHECK-LABEL: @memset_vector_ptr_alloca( 
101+ ; CHECK-NEXT:    store i64 0, ptr [[OUT:%.*]], align 8 
102+ ; CHECK-NEXT:    ret void 
103+ ; 
104+   %alloca  = alloca  <6  x ptr >, align  16 , addrspace (5 )
105+   call  void  @llvm.memset.p5.i64 (ptr  addrspace (5 ) %alloca , i8  0 , i64  48 , i1  false )
106+   %load  = load  i64 , ptr  addrspace (5 ) %alloca 
107+   store  i64  %load , ptr  %out 
108+   ret  void 
109+ }
110+ 
111+ define  amdgpu_kernel void  @memset_array_of_array_ptr_alloca (ptr  %out ) {
112+ ; CHECK-LABEL: @memset_array_of_array_ptr_alloca( 
113+ ; CHECK-NEXT:    [[ALLOCA:%.*]] = alloca [2 x [3 x ptr]], align 16, addrspace(5) 
114+ ; CHECK-NEXT:    call void @llvm.memset.p5.i64(ptr addrspace(5) [[ALLOCA]], i8 0, i64 48, i1 false) 
115+ ; CHECK-NEXT:    [[LOAD:%.*]] = load i64, ptr addrspace(5) [[ALLOCA]], align 8 
116+ ; CHECK-NEXT:    store i64 [[LOAD]], ptr [[OUT:%.*]], align 8 
117+ ; CHECK-NEXT:    ret void 
118+ ; 
119+   %alloca  = alloca  [2  x [3  x ptr ]], align  16 , addrspace (5 )
120+   call  void  @llvm.memset.p5.i64 (ptr  addrspace (5 ) %alloca , i8  0 , i64  48 , i1  false )
121+   %load  = load  i64 , ptr  addrspace (5 ) %alloca 
122+   store  i64  %load , ptr  %out 
123+   ret  void 
124+ }
125+ 
126+ define  amdgpu_kernel void  @memset_array_of_vec_ptr_alloca (ptr  %out ) {
127+ ; CHECK-LABEL: @memset_array_of_vec_ptr_alloca( 
128+ ; CHECK-NEXT:    [[ALLOCA:%.*]] = alloca [2 x <3 x ptr>], align 16, addrspace(5) 
129+ ; CHECK-NEXT:    call void @llvm.memset.p5.i64(ptr addrspace(5) [[ALLOCA]], i8 0, i64 48, i1 false) 
130+ ; CHECK-NEXT:    [[LOAD:%.*]] = load i64, ptr addrspace(5) [[ALLOCA]], align 8 
131+ ; CHECK-NEXT:    store i64 [[LOAD]], ptr [[OUT:%.*]], align 8 
132+ ; CHECK-NEXT:    ret void 
133+ ; 
134+   %alloca  = alloca  [2  x <3  x ptr >], align  16 , addrspace (5 )
135+   call  void  @llvm.memset.p5.i64 (ptr  addrspace (5 ) %alloca , i8  0 , i64  48 , i1  false )
136+   %load  = load  i64 , ptr  addrspace (5 ) %alloca 
137+   store  i64  %load , ptr  %out 
138+   ret  void 
139+ }
140+ 
87141declare  void  @llvm.memset.p5.i64 (ptr  addrspace (5 ) nocapture  writeonly , i8 , i64 , i1  immarg)
0 commit comments