@@ -132,3 +132,32 @@ declare noalias ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr()
132
132
declare i64 @llvm.amdgcn.dispatch.id ()
133
133
declare noalias ptr addrspace (4 ) @llvm.amdgcn.dispatch.ptr ()
134
134
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