@@ -132,3 +132,32 @@ declare noalias ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr()
132132declare i64 @llvm.amdgcn.dispatch.id ()
133133declare noalias ptr addrspace (4 ) @llvm.amdgcn.dispatch.ptr ()
134134
135+
136+ ; Taken from memcpy-param-combinations.ll, tests PTRADD handling in
137+ ; SelectionDAGAddressAnalysis.
138+ define void @memcpy_p1_p4_sz16_align_1_1 (ptr addrspace (1 ) align 1 %dst , ptr addrspace (4 ) align 1 readonly %src ) {
139+ ; GFX942_PTRADD-LABEL: memcpy_p1_p4_sz16_align_1_1:
140+ ; GFX942_PTRADD: ; %bb.0: ; %entry
141+ ; GFX942_PTRADD-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
142+ ; GFX942_PTRADD-NEXT: global_load_dwordx2 v[4:5], v[2:3], off
143+ ; GFX942_PTRADD-NEXT: s_waitcnt vmcnt(0)
144+ ; GFX942_PTRADD-NEXT: global_store_dwordx2 v[0:1], v[4:5], off
145+ ; GFX942_PTRADD-NEXT: global_load_dwordx2 v[2:3], v[2:3], off offset:8
146+ ; GFX942_PTRADD-NEXT: s_waitcnt vmcnt(0)
147+ ; GFX942_PTRADD-NEXT: global_store_dwordx2 v[0:1], v[2:3], off offset:8
148+ ; GFX942_PTRADD-NEXT: s_waitcnt vmcnt(0)
149+ ; GFX942_PTRADD-NEXT: s_setpc_b64 s[30:31]
150+ ;
151+ ; GFX942_LEGACY-LABEL: memcpy_p1_p4_sz16_align_1_1:
152+ ; GFX942_LEGACY: ; %bb.0: ; %entry
153+ ; GFX942_LEGACY-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
154+ ; GFX942_LEGACY-NEXT: global_load_dwordx4 v[2:5], v[2:3], off
155+ ; GFX942_LEGACY-NEXT: s_waitcnt vmcnt(0)
156+ ; GFX942_LEGACY-NEXT: global_store_dwordx4 v[0:1], v[2:5], off
157+ ; GFX942_LEGACY-NEXT: s_waitcnt vmcnt(0)
158+ ; GFX942_LEGACY-NEXT: s_setpc_b64 s[30:31]
159+ entry:
160+ tail call void @llvm.memcpy.p1.p4.i64 (ptr addrspace (1 ) noundef nonnull align 1 %dst , ptr addrspace (4 ) noundef nonnull align 1 %src , i64 16 , i1 false )
161+ ret void
162+ }
163+
0 commit comments