11; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
22; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1250 -mattr=+wavefrontsize32,-wavefrontsize64 < %s | FileCheck -check-prefixes=GFX1250,GFX1250-SDAG %s
3- ; RUN: llc -global-isel=1 -global-isel-abort=2 -mtriple=amdgcn -mcpu=gfx1250 -mattr=+wavefrontsize32,-wavefrontsize64 < %s | FileCheck -check-prefixes=GFX1250,GFX1250-GISEL %s
3+ ; RUN: llc -global-isel=1 -new-reg-bank-select - global-isel-abort=2 -mtriple=amdgcn -mcpu=gfx1250 -mattr=+wavefrontsize32,-wavefrontsize64 < %s | FileCheck -check-prefixes=GFX1250,GFX1250-GISEL %s
44
55define amdgpu_ps void @global_load_tr4_b64_vaddr (ptr addrspace (1 ) %addr , ptr addrspace (1 ) %use ) {
66; GFX1250-LABEL: global_load_tr4_b64_vaddr:
@@ -213,6 +213,22 @@ entry:
213213 ret void
214214}
215215
216+ define amdgpu_ps void @ds_load_tr4_b64_saddr (ptr addrspace (3 ) inreg %addr , ptr addrspace (1 ) %use ) {
217+ ; GFX1250-LABEL: ds_load_tr4_b64_saddr:
218+ ; GFX1250: ; %bb.0: ; %entry
219+ ; GFX1250-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1 ; msbs: dst=0 src0=0 src1=0 src2=0
220+ ; GFX1250-NEXT: v_mov_b32_e32 v2, s0
221+ ; GFX1250-NEXT: ds_load_tr4_b64 v[2:3], v2 offset:32
222+ ; GFX1250-NEXT: s_wait_dscnt 0x0
223+ ; GFX1250-NEXT: global_store_b64 v[0:1], v[2:3], off
224+ ; GFX1250-NEXT: s_endpgm
225+ entry:
226+ %gep = getelementptr i64 , ptr addrspace (3 ) %addr , i32 4
227+ %val = call <2 x i32 > @llvm.amdgcn.ds.load.tr4.b64.v2i32.p3 (ptr addrspace (3 ) %gep )
228+ store <2 x i32 > %val , ptr addrspace (1 ) %use
229+ ret void
230+ }
231+
216232define amdgpu_ps void @ds_load_tr8_b64 (ptr addrspace (3 ) %addr , ptr addrspace (1 ) %use ) {
217233; GFX1250-SDAG-LABEL: ds_load_tr8_b64:
218234; GFX1250-SDAG: ; %bb.0: ; %entry
@@ -238,6 +254,22 @@ entry:
238254 ret void
239255}
240256
257+ define amdgpu_ps void @ds_load_tr8_b64_saddr (ptr addrspace (3 ) inreg %addr , ptr addrspace (1 ) %use ) {
258+ ; GFX1250-LABEL: ds_load_tr8_b64_saddr:
259+ ; GFX1250: ; %bb.0: ; %entry
260+ ; GFX1250-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1 ; msbs: dst=0 src0=0 src1=0 src2=0
261+ ; GFX1250-NEXT: v_mov_b32_e32 v2, s0
262+ ; GFX1250-NEXT: ds_load_tr8_b64 v[2:3], v2 offset:32
263+ ; GFX1250-NEXT: s_wait_dscnt 0x0
264+ ; GFX1250-NEXT: global_store_b64 v[0:1], v[2:3], off
265+ ; GFX1250-NEXT: s_endpgm
266+ entry:
267+ %gep = getelementptr i64 , ptr addrspace (3 ) %addr , i32 4
268+ %val = call <2 x i32 > @llvm.amdgcn.ds.load.tr8.b64.v2i32.p3 (ptr addrspace (3 ) %gep )
269+ store <2 x i32 > %val , ptr addrspace (1 ) %use
270+ ret void
271+ }
272+
241273define amdgpu_ps void @ds_load_tr6_b96 (ptr addrspace (3 ) %addr , ptr addrspace (1 ) %use ) {
242274; GFX1250-SDAG-LABEL: ds_load_tr6_b96:
243275; GFX1250-SDAG: ; %bb.0: ; %entry
@@ -263,6 +295,22 @@ entry:
263295 ret void
264296}
265297
298+ define amdgpu_ps void @ds_load_tr6_b96_saddr (ptr addrspace (3 ) inreg %addr , ptr addrspace (1 ) %use ) {
299+ ; GFX1250-LABEL: ds_load_tr6_b96_saddr:
300+ ; GFX1250: ; %bb.0: ; %entry
301+ ; GFX1250-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1 ; msbs: dst=0 src0=0 src1=0 src2=0
302+ ; GFX1250-NEXT: v_mov_b32_e32 v2, s0
303+ ; GFX1250-NEXT: ds_load_tr6_b96 v[2:4], v2 offset:32
304+ ; GFX1250-NEXT: s_wait_dscnt 0x0
305+ ; GFX1250-NEXT: global_store_b96 v[0:1], v[2:4], off
306+ ; GFX1250-NEXT: s_endpgm
307+ entry:
308+ %gep = getelementptr i64 , ptr addrspace (3 ) %addr , i32 4
309+ %val = call <3 x i32 > @llvm.amdgcn.ds.load.tr6.b96.v3i32.p3 (ptr addrspace (3 ) %gep )
310+ store <3 x i32 > %val , ptr addrspace (1 ) %use
311+ ret void
312+ }
313+
266314define amdgpu_ps void @ds_load_tr16_b128_v8i16 (ptr addrspace (3 ) %addr , ptr addrspace (1 ) %use ) {
267315; GFX1250-SDAG-LABEL: ds_load_tr16_b128_v8i16:
268316; GFX1250-SDAG: ; %bb.0: ; %entry
@@ -288,6 +336,22 @@ entry:
288336 ret void
289337}
290338
339+ define amdgpu_ps void @ds_load_tr16_b128_v8i16_saddr (ptr addrspace (3 ) inreg %addr , ptr addrspace (1 ) %use ) {
340+ ; GFX1250-LABEL: ds_load_tr16_b128_v8i16_saddr:
341+ ; GFX1250: ; %bb.0: ; %entry
342+ ; GFX1250-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1 ; msbs: dst=0 src0=0 src1=0 src2=0
343+ ; GFX1250-NEXT: v_mov_b32_e32 v2, s0
344+ ; GFX1250-NEXT: ds_load_tr16_b128 v[2:5], v2 offset:32
345+ ; GFX1250-NEXT: s_wait_dscnt 0x0
346+ ; GFX1250-NEXT: global_store_b128 v[0:1], v[2:5], off
347+ ; GFX1250-NEXT: s_endpgm
348+ entry:
349+ %gep = getelementptr i64 , ptr addrspace (3 ) %addr , i32 4
350+ %val = call <8 x i16 > @llvm.amdgcn.ds.load.tr16.b128.v8i16.p3 (ptr addrspace (3 ) %gep )
351+ store <8 x i16 > %val , ptr addrspace (1 ) %use
352+ ret void
353+ }
354+
291355define amdgpu_ps void @ds_load_tr16_b128_v8f16 (ptr addrspace (3 ) %addr , ptr addrspace (1 ) %use ) {
292356; GFX1250-SDAG-LABEL: ds_load_tr16_b128_v8f16:
293357; GFX1250-SDAG: ; %bb.0: ; %entry
0 commit comments