133 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 52# RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -run-pass si-insert-waitcnts -o - %s | FileCheck %s3 4 5# Check storecnt is not eliminated after global_wb/wbinv or6# loadcnt after inv.7---8 9name: wb_storecnt10body: |11 ; CHECK-LABEL: name: wb_storecnt12 ; CHECK: bb.0:13 ; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)14 ; CHECK-NEXT: {{ $}}15 ; CHECK-NEXT: S_WAIT_LOADCNT_DSCNT 016 ; CHECK-NEXT: S_WAIT_EXPCNT 017 ; CHECK-NEXT: S_WAIT_SAMPLECNT 018 ; CHECK-NEXT: S_WAIT_BVHCNT 019 ; CHECK-NEXT: S_WAIT_KMCNT 020 ; CHECK-NEXT: S_WAIT_STORECNT 021 ; CHECK-NEXT: S_CMP_EQ_U32 renamable $sgpr1, 0, implicit-def $scc22 ; CHECK-NEXT: S_CBRANCH_SCC1 %bb.2, implicit killed $scc23 ; CHECK-NEXT: {{ $}}24 ; CHECK-NEXT: bb.1:25 ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)26 ; CHECK-NEXT: {{ $}}27 ; CHECK-NEXT: GLOBAL_WB 16, implicit $exec28 ; CHECK-NEXT: S_WAIT_STORECNT 029 ; CHECK-NEXT: GLOBAL_STORE_DWORD_SADDR renamable $vgpr0, renamable $vgpr1, renamable $sgpr2_sgpr3, 0, 16, implicit $exec30 ; CHECK-NEXT: S_CBRANCH_SCC0 %bb.1, implicit killed $scc31 ; CHECK-NEXT: {{ $}}32 ; CHECK-NEXT: bb.2:33 ; CHECK-NEXT: S_ENDPGM 034 bb.0:35 S_WAIT_LOADCNT_soft 036 S_WAIT_STORECNT_soft 037 S_WAIT_DSCNT_soft 038 S_CMP_EQ_U32 renamable $sgpr1, 0, implicit-def $scc39 S_CBRANCH_SCC1 %bb.2, implicit killed $scc40 bb.1:41 GLOBAL_WB 16, implicit $exec42 S_WAIT_LOADCNT_soft 043 S_WAIT_STORECNT_soft 044 GLOBAL_STORE_DWORD_SADDR renamable $vgpr0, renamable $vgpr1, renamable $sgpr2_sgpr3, 0, 16, implicit $exec45 S_CBRANCH_SCC0 %bb.1, implicit killed $scc46 bb.2:47 S_ENDPGM 048...49---50 51name: wbinv_storecnt52body: |53 ; CHECK-LABEL: name: wbinv_storecnt54 ; CHECK: bb.0:55 ; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)56 ; CHECK-NEXT: {{ $}}57 ; CHECK-NEXT: S_WAIT_LOADCNT_DSCNT 058 ; CHECK-NEXT: S_WAIT_EXPCNT 059 ; CHECK-NEXT: S_WAIT_SAMPLECNT 060 ; CHECK-NEXT: S_WAIT_BVHCNT 061 ; CHECK-NEXT: S_WAIT_KMCNT 062 ; CHECK-NEXT: S_WAIT_STORECNT 063 ; CHECK-NEXT: S_CMP_EQ_U32 renamable $sgpr1, 0, implicit-def $scc64 ; CHECK-NEXT: S_CBRANCH_SCC1 %bb.2, implicit killed $scc65 ; CHECK-NEXT: {{ $}}66 ; CHECK-NEXT: bb.1:67 ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)68 ; CHECK-NEXT: {{ $}}69 ; CHECK-NEXT: GLOBAL_WBINV 16, implicit $exec70 ; CHECK-NEXT: S_WAIT_STORECNT 071 ; CHECK-NEXT: GLOBAL_STORE_DWORD_SADDR renamable $vgpr0, renamable $vgpr1, renamable $sgpr2_sgpr3, 0, 16, implicit $exec72 ; CHECK-NEXT: S_CBRANCH_SCC0 %bb.1, implicit killed $scc73 ; CHECK-NEXT: {{ $}}74 ; CHECK-NEXT: bb.2:75 ; CHECK-NEXT: S_ENDPGM 076 bb.0:77 S_WAIT_LOADCNT_soft 078 S_WAIT_STORECNT_soft 079 S_WAIT_DSCNT_soft 080 S_CMP_EQ_U32 renamable $sgpr1, 0, implicit-def $scc81 S_CBRANCH_SCC1 %bb.2, implicit killed $scc82 bb.1:83 GLOBAL_WBINV 16, implicit $exec84 S_WAIT_LOADCNT_soft 085 S_WAIT_STORECNT_soft 086 GLOBAL_STORE_DWORD_SADDR renamable $vgpr0, renamable $vgpr1, renamable $sgpr2_sgpr3, 0, 16, implicit $exec87 S_CBRANCH_SCC0 %bb.1, implicit killed $scc88 bb.2:89 S_ENDPGM 090...91---92 93name: inv_loadcnt94body: |95 ; CHECK-LABEL: name: inv_loadcnt96 ; CHECK: bb.0:97 ; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)98 ; CHECK-NEXT: {{ $}}99 ; CHECK-NEXT: S_WAIT_LOADCNT_DSCNT 0100 ; CHECK-NEXT: S_WAIT_EXPCNT 0101 ; CHECK-NEXT: S_WAIT_SAMPLECNT 0102 ; CHECK-NEXT: S_WAIT_BVHCNT 0103 ; CHECK-NEXT: S_WAIT_KMCNT 0104 ; CHECK-NEXT: S_WAIT_STORECNT 0105 ; CHECK-NEXT: S_CMP_EQ_U32 renamable $sgpr1, 0, implicit-def $scc106 ; CHECK-NEXT: S_CBRANCH_SCC1 %bb.2, implicit killed $scc107 ; CHECK-NEXT: {{ $}}108 ; CHECK-NEXT: bb.1:109 ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)110 ; CHECK-NEXT: {{ $}}111 ; CHECK-NEXT: GLOBAL_INV 16, implicit $exec112 ; CHECK-NEXT: S_WAIT_LOADCNT 0113 ; CHECK-NEXT: GLOBAL_STORE_DWORD_SADDR renamable $vgpr0, renamable $vgpr1, renamable $sgpr2_sgpr3, 0, 16, implicit $exec114 ; CHECK-NEXT: S_CBRANCH_SCC0 %bb.1, implicit killed $scc115 ; CHECK-NEXT: {{ $}}116 ; CHECK-NEXT: bb.2:117 ; CHECK-NEXT: S_ENDPGM 0118 bb.0:119 S_WAIT_LOADCNT_soft 0120 S_WAIT_STORECNT_soft 0121 S_WAIT_DSCNT_soft 0122 S_CMP_EQ_U32 renamable $sgpr1, 0, implicit-def $scc123 S_CBRANCH_SCC1 %bb.2, implicit killed $scc124 bb.1:125 GLOBAL_INV 16, implicit $exec126 S_WAIT_LOADCNT_soft 0127 S_WAIT_STORECNT_soft 0128 GLOBAL_STORE_DWORD_SADDR renamable $vgpr0, renamable $vgpr1, renamable $sgpr2_sgpr3, 0, 16, implicit $exec129 S_CBRANCH_SCC0 %bb.1, implicit killed $scc130 bb.2:131 S_ENDPGM 0132...133