@@ -126,3 +126,31 @@ define amdgpu_kernel void @llvm_amdgcn_queue_ptr(ptr addrspace(1) %ptr) #0 {
126
126
store volatile i64 %dispatch.id , ptr addrspace (1 ) %ptr
127
127
ret void
128
128
}
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