120 lines · plain
1# RUN: llc -mtriple=amdgcn -mcpu=gfx942 -verify-machineinstrs -run-pass si-insert-waitcnts -o - %s | FileCheck -check-prefix=GCN %s2 3# GCN-LABEL: name: buffer_load_dword_lds_ds_read4# GCN: BUFFER_LOAD_DWORD_LDS_IDXEN5# GCN-NEXT: S_WAITCNT 39526# vmcnt(0)7# GCN-NEXT: DS_READ_B32_gfx98---9name: buffer_load_dword_lds_ds_read10body: |11 bb.0:12 $m0 = S_MOV_B32 013 BUFFER_LOAD_DWORD_LDS_IDXEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 4, 0, 0, implicit $exec, implicit $m0 :: (load (s32) from `ptr addrspace(1) poison` + 4), (store (s32) into `ptr addrspace(3) poison` + 4)14 $vgpr0 = DS_READ_B32_gfx9 $vgpr1, 0, 0, implicit $m0, implicit $exec :: (load (s32) from `ptr addrspace(3) poison`)15 S_ENDPGM 016 17...18 19# GCN-LABEL: name: buffer_load_dword_lds_vmcnt_120# GCN: BUFFER_LOAD_DWORD_LDS_IDXEN21# GCN-NEXT: BUFFER_LOAD_DWORD_IDXEN22# GCN-NEXT: S_WAITCNT 395323# vmcnt(1)24# GCN-NEXT: DS_READ_B32_gfx925---26name: buffer_load_dword_lds_vmcnt_127body: |28 bb.0:29 $m0 = S_MOV_B32 030 BUFFER_LOAD_DWORD_LDS_IDXEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 4, 0, 0, implicit $exec, implicit $m0 :: (load (s32) from `ptr addrspace(1) poison`), (store (s32) into `ptr addrspace(3) poison`)31 $vgpr10 = BUFFER_LOAD_DWORD_IDXEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 4, 0, 0, implicit $exec, implicit $m0 :: (load (s32) from `ptr addrspace(1) poison`)32 $vgpr0 = DS_READ_B32_gfx9 $vgpr1, 0, 0, implicit $m0, implicit $exec :: (load (s32) from `ptr addrspace(3) poison`)33 S_ENDPGM 034 35...36 37# GCN-LABEL: name: buffer_load_dword_lds_flat_read38# GCN: BUFFER_LOAD_DWORD_LDS_IDXEN39# GCN-NEXT: S_WAITCNT 395240# vmcnt(0)41# GCN-NEXT: FLAT_LOAD_DWORD42---43name: buffer_load_dword_lds_flat_read44body: |45 bb.0:46 $m0 = S_MOV_B32 047 BUFFER_LOAD_DWORD_LDS_IDXEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 4, 0, 0, implicit $exec, implicit $m0 :: (load (s32) from `ptr addrspace(1) poison`), (store (s32) into `ptr addrspace(3) poison`)48 $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr :: (load (s32) from `ptr poison`)49 50 S_ENDPGM 051 52...53 54# GCN-LABEL: name: global_load_lds_dword_ds_read55# GCN: GLOBAL_LOAD_LDS_DWORD56# GCN-NEXT: S_WAITCNT 395257# vmcnt(0)58# GCN-NEXT: DS_READ_B32_gfx959---60name: global_load_lds_dword_ds_read61body: |62 bb.0:63 $m0 = S_MOV_B32 064 GLOBAL_LOAD_LDS_DWORD $vgpr0_vgpr1, 4, 0, implicit $exec, implicit $m0 :: (load (s32) from `ptr addrspace(1) poison` + 4), (store (s32) into `ptr addrspace(3) poison` + 4)65 $vgpr0 = DS_READ_B32_gfx9 $vgpr1, 0, 0, implicit $m0, implicit $exec :: (load (s32) from `ptr addrspace(3) poison`)66 S_ENDPGM 067 68...69 70# GCN-LABEL: name: scratch_load_lds_dword_ds_read71# GCN: SCRATCH_LOAD_LDS_DWORD72# GCN-NEXT: S_WAITCNT 395273# vmcnt(0)74# GCN-NEXT: DS_READ_B32_gfx975---76name: scratch_load_lds_dword_ds_read77body: |78 bb.0:79 $m0 = S_MOV_B32 080 SCRATCH_LOAD_LDS_DWORD $vgpr0, 4, 0, implicit $exec, implicit $m0 :: (load (s32) from `ptr addrspace(5) poison` + 4), (store (s32) into `ptr addrspace(3) poison` + 4)81 $vgpr0 = DS_READ_B32_gfx9 $vgpr1, 0, 0, implicit $m0, implicit $exec :: (load (s32) from `ptr addrspace(3) poison`)82 S_ENDPGM 083 84...85 86# GCN-LABEL: name: buffer_store_lds_dword_ds_read87# GCN: BUFFER_STORE_LDS_DWORD88# GCN-NEXT: DS_READ_B32_gfx989---90name: buffer_store_lds_dword_ds_read91body: |92 bb.0:93 $m0 = S_MOV_B32 094 BUFFER_STORE_LDS_DWORD $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 4, 0, 0, implicit $exec, implicit $m0 :: (load (s32) from `ptr addrspace(3) poison` + 4), (store (s32) into `ptr addrspace(1) poison` + 4)95 $vgpr0 = DS_READ_B32_gfx9 $vgpr1, 0, 0, implicit $m0, implicit $exec :: (load (s32) from `ptr addrspace(3) poison`)96 S_ENDPGM 097 98...99 100# No need to wait before load from VMEM to LDS.101# GCN-LABEL: name: series_of_buffer_load_dword_lds_ds_read102# GCN: BUFFER_LOAD_DWORD_LDS_IDXEN103# GCN-NEXT: BUFFER_LOAD_DWORD_LDS_IDXEN104# GCN-NEXT: BUFFER_LOAD_DWORD_LDS_IDXEN105# GCN-NEXT: S_WAITCNT 3952106# vmcnt(0)107# GCN-NEXT: DS_READ_B32_gfx9108---109name: series_of_buffer_load_dword_lds_ds_read110body: |111 bb.0:112 $m0 = S_MOV_B32 0113 BUFFER_LOAD_DWORD_LDS_IDXEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 0, 0, 0, implicit $exec, implicit $m0 :: (load (s32) from `ptr addrspace(1) poison`), (store (s32) into `ptr addrspace(3) poison`)114 BUFFER_LOAD_DWORD_LDS_IDXEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 4, 0, 0, implicit $exec, implicit $m0 :: (load (s32) from `ptr addrspace(1) poison` + 4), (store (s32) into `ptr addrspace(3) poison` + 4)115 BUFFER_LOAD_DWORD_LDS_IDXEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 8, 0, 0, implicit $exec, implicit $m0 :: (load (s32) from `ptr addrspace(1) poison` + 8), (store (s32) into `ptr addrspace(3) poison` + 8)116 $vgpr0 = DS_READ_B32_gfx9 $vgpr1, 0, 0, implicit $m0, implicit $exec :: (load (s32) from `ptr addrspace(3) poison`)117 S_ENDPGM 0118 119...120