@@ -126,3 +126,31 @@ define amdgpu_kernel void @llvm_amdgcn_queue_ptr(ptr addrspace(1) %ptr) #0 {
126126 store volatile i64 %dispatch.id , ptr addrspace (1 ) %ptr
127127 ret void
128128}
129+
130+ ; Taken from memcpy-param-combinations.ll, tests PTRADD handling in
131+ ; SelectionDAGAddressAnalysis.
132+ define void @memcpy_p1_p4_sz16_align_1_1 (ptr addrspace (1 ) align 1 %dst , ptr addrspace (4 ) align 1 readonly %src ) {
133+ ; GFX942_PTRADD-LABEL: memcpy_p1_p4_sz16_align_1_1:
134+ ; GFX942_PTRADD: ; %bb.0: ; %entry
135+ ; GFX942_PTRADD-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
136+ ; GFX942_PTRADD-NEXT: global_load_dwordx2 v[4:5], v[2:3], off
137+ ; GFX942_PTRADD-NEXT: s_waitcnt vmcnt(0)
138+ ; GFX942_PTRADD-NEXT: global_store_dwordx2 v[0:1], v[4:5], off
139+ ; GFX942_PTRADD-NEXT: global_load_dwordx2 v[2:3], v[2:3], off offset:8
140+ ; GFX942_PTRADD-NEXT: s_waitcnt vmcnt(0)
141+ ; GFX942_PTRADD-NEXT: global_store_dwordx2 v[0:1], v[2:3], off offset:8
142+ ; GFX942_PTRADD-NEXT: s_waitcnt vmcnt(0)
143+ ; GFX942_PTRADD-NEXT: s_setpc_b64 s[30:31]
144+ ;
145+ ; GFX942_LEGACY-LABEL: memcpy_p1_p4_sz16_align_1_1:
146+ ; GFX942_LEGACY: ; %bb.0: ; %entry
147+ ; GFX942_LEGACY-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
148+ ; GFX942_LEGACY-NEXT: global_load_dwordx4 v[2:5], v[2:3], off
149+ ; GFX942_LEGACY-NEXT: s_waitcnt vmcnt(0)
150+ ; GFX942_LEGACY-NEXT: global_store_dwordx4 v[0:1], v[2:5], off
151+ ; GFX942_LEGACY-NEXT: s_waitcnt vmcnt(0)
152+ ; GFX942_LEGACY-NEXT: s_setpc_b64 s[30:31]
153+ entry:
154+ 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 )
155+ ret void
156+ }
0 commit comments