brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.1 KiB · 675a1c9 Raw
134 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 52# RUN: llc -mtriple=amdgcn -mcpu=gfx942 -verify-machineinstrs -run-pass si-insert-waitcnts -o - %s | FileCheck -check-prefix=GCN %s3 4 5# Expected vmcnt(0) since the direct load is the only load.6---7name: dma_then_fence8body:             |9  bb.0:10    ; GCN-LABEL: name: dma_then_fence11    ; GCN: S_WAITCNT 012    ; GCN-NEXT: $m0 = S_MOV_B32 013    ; GCN-NEXT: 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, addrspace 1), (store (s32) into `ptr addrspace(3) poison` + 4, addrspace 3)14    ; GCN-NEXT: S_WAITCNT 395215    ; GCN-NEXT: $vgpr1 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec16    ; GCN-NEXT: S_ENDPGM 017    $m0 = S_MOV_B32 018    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)19    S_WAITCNT_lds_direct20    $vgpr1 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec21    S_ENDPGM 022 23...24 25# Expected vmcnt(1) since the global load is not processed by SIInsertWaitcnts.26 27---28name: dma_then_global_load29body:             |30  bb.0:31    ; GCN-LABEL: name: dma_then_global_load32    ; GCN: S_WAITCNT 033    ; GCN-NEXT: $m0 = S_MOV_B32 034    ; GCN-NEXT: 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, addrspace 1), (store (s32) into `ptr addrspace(3) poison` + 4, addrspace 3)35    ; GCN-NEXT: $vgpr2 = GLOBAL_LOAD_DWORD $vgpr4_vgpr5, 0, 0, implicit $exec36    ; GCN-NEXT: S_WAITCNT 395337    ; GCN-NEXT: $vgpr1 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec38    ; GCN-NEXT: S_ENDPGM 039    $m0 = S_MOV_B32 040    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)41    $vgpr2 = GLOBAL_LOAD_DWORD $vgpr4_vgpr5, 0, 0, implicit $exec42    S_WAITCNT_lds_direct43    $vgpr1 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec44    S_ENDPGM 045 46...47 48# Expected no vmcnt since there is no direct load to LDS, and the global load is not processed by SIInsertWaitcnts.49 50---51name: no_dma_just_fence52body:             |53  bb.0:54    ; GCN-LABEL: name: no_dma_just_fence55    ; GCN: S_WAITCNT 056    ; GCN-NEXT: $vgpr2 = GLOBAL_LOAD_DWORD $vgpr4_vgpr5, 0, 0, implicit $exec57    ; GCN-NEXT: $vgpr1 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec58    ; GCN-NEXT: S_ENDPGM 059    $vgpr2 = GLOBAL_LOAD_DWORD $vgpr4_vgpr5, 0, 0, implicit $exec60    S_WAITCNT_lds_direct61    $vgpr1 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec62    S_ENDPGM 063 64...65 66# Expected vmcnt(1) since the global load is not processed by SIInsertWaitcnts.67 68---69name: dma_then_system_fence70body:             |71  bb.0:72    ; GCN-LABEL: name: dma_then_system_fence73    ; GCN: S_WAITCNT 074    ; GCN-NEXT: 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, addrspace 1), (store (s32) into `ptr addrspace(3) poison` + 4, addrspace 3)75    ; GCN-NEXT: $vgpr2 = GLOBAL_LOAD_DWORD $vgpr4_vgpr5, 0, 0, implicit $exec76    ; GCN-NEXT: S_WAITCNT 395377    ; GCN-NEXT: $vgpr1 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec78    ; GCN-NEXT: S_ENDPGM 079    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)80    $vgpr2 = GLOBAL_LOAD_DWORD $vgpr4_vgpr5, 0, 0, implicit $exec81    S_WAITCNT_lds_direct82    $vgpr1 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec83    S_ENDPGM 084 85...86 87# The computed vmcnt(1) gets merged with the existing vmcnt(0).88 89---90name: merge_with_prev_wait91body:             |92  bb.0:93    ; GCN-LABEL: name: merge_with_prev_wait94    ; GCN: S_WAITCNT 095    ; GCN-NEXT: $m0 = S_MOV_B32 096    ; GCN-NEXT: 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, addrspace 1), (store (s32) into `ptr addrspace(3) poison` + 4, addrspace 3)97    ; GCN-NEXT: $vgpr2 = GLOBAL_LOAD_DWORD $vgpr4_vgpr5, 0, 0, implicit $exec98    ; GCN-NEXT: S_WAITCNT 395299    ; GCN-NEXT: $vgpr1 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec100    ; GCN-NEXT: S_ENDPGM 0101    $m0 = S_MOV_B32 0102    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)103    $vgpr2 = GLOBAL_LOAD_DWORD $vgpr4_vgpr5, 0, 0, implicit $exec104    S_WAITCNT 3952105    S_WAITCNT_lds_direct106    $vgpr1 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec107    S_ENDPGM 0108 109...110 111# The computed vmcnt(1) gets merged with the existing vmcnt(0).112 113---114name: merge_with_next_wait115body:             |116  bb.0:117    ; GCN-LABEL: name: merge_with_next_wait118    ; GCN: S_WAITCNT 0119    ; GCN-NEXT: $m0 = S_MOV_B32 0120    ; GCN-NEXT: 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, addrspace 1), (store (s32) into `ptr addrspace(3) poison` + 4, addrspace 3)121    ; GCN-NEXT: $vgpr2 = GLOBAL_LOAD_DWORD $vgpr4_vgpr5, 0, 0, implicit $exec122    ; GCN-NEXT: S_WAITCNT 3952123    ; GCN-NEXT: $vgpr1 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec124    ; GCN-NEXT: S_ENDPGM 0125    $m0 = S_MOV_B32 0126    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)127    $vgpr2 = GLOBAL_LOAD_DWORD $vgpr4_vgpr5, 0, 0, implicit $exec128    S_WAITCNT_lds_direct129    S_WAITCNT 3952130    $vgpr1 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec131    S_ENDPGM 0132 133...134