174 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 -verify-machineinstrs -run-pass si-insert-waitcnts -o - %s | FileCheck -check-prefix=GFX12 %s3 4---5name: scc_write_in_other_block6body: |7 ; GFX12-LABEL: name: scc_write_in_other_block8 ; GFX12: bb.0:9 ; GFX12-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)10 ; GFX12-NEXT: {{ $}}11 ; GFX12-NEXT: S_WAIT_LOADCNT_DSCNT 012 ; GFX12-NEXT: S_WAIT_EXPCNT 013 ; GFX12-NEXT: S_WAIT_SAMPLECNT 014 ; GFX12-NEXT: S_WAIT_BVHCNT 015 ; GFX12-NEXT: S_WAIT_KMCNT 016 ; GFX12-NEXT: S_CMP_EQ_U32 $sgpr0, 0, implicit-def $scc17 ; GFX12-NEXT: V_CMPX_EQ_U32_nosdst_e32 0, killed $vgpr0, implicit-def $exec, implicit $exec18 ; GFX12-NEXT: S_CBRANCH_EXECZ %bb.2, implicit $exec19 ; GFX12-NEXT: {{ $}}20 ; GFX12-NEXT: bb.1:21 ; GFX12-NEXT: successors: %bb.2(0x80000000)22 ; GFX12-NEXT: {{ $}}23 ; GFX12-NEXT: renamable $sgpr1 = S_CSELECT_B32 1, 0, implicit killed $scc24 ; GFX12-NEXT: S_BARRIER_SIGNAL_ISFIRST_IMM -1, implicit-def $scc, implicit killed $scc25 ; GFX12-NEXT: $vgpr2 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit $exec26 ; GFX12-NEXT: GLOBAL_STORE_DWORD $vgpr3_vgpr4, $vgpr2, 0, 0, implicit $exec27 ; GFX12-NEXT: {{ $}}28 ; GFX12-NEXT: bb.2:29 ; GFX12-NEXT: S_WAIT_KMCNT 030 ; GFX12-NEXT: renamable $sgpr1 = S_CSELECT_B32 10, 20, implicit killed $scc31 ; GFX12-NEXT: $vgpr5 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit $exec32 ; GFX12-NEXT: GLOBAL_STORE_DWORD $vgpr6_vgpr7, $vgpr5, 0, 0, implicit $exec33 ; GFX12-NEXT: S_ENDPGM 034 bb.0:35 S_CMP_EQ_U32 $sgpr0, 0, implicit-def $scc36 V_CMPX_EQ_U32_nosdst_e32 0, killed $vgpr0, implicit-def $exec, implicit $exec37 S_CBRANCH_EXECZ %bb.2, implicit $exec38 39 bb.1:40 renamable $sgpr1 = S_CSELECT_B32 1, 0, implicit killed $scc41 S_BARRIER_SIGNAL_ISFIRST_IMM -1, implicit-def $scc, implicit killed $scc42 $vgpr2 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit $exec43 GLOBAL_STORE_DWORD $vgpr3_vgpr4, $vgpr2, 0, 0, implicit $exec44 45 bb.2:46 renamable $sgpr1 = S_CSELECT_B32 10, 20, implicit killed $scc47 $vgpr5 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit $exec48 GLOBAL_STORE_DWORD $vgpr6_vgpr7, $vgpr5, 0, 0, implicit $exec49 S_ENDPGM 050...51 52---53name: scc_write_in_other_block_with_barrier_wait54body: |55 ; GFX12-LABEL: name: scc_write_in_other_block_with_barrier_wait56 ; GFX12: bb.0:57 ; GFX12-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)58 ; GFX12-NEXT: {{ $}}59 ; GFX12-NEXT: S_WAIT_LOADCNT_DSCNT 060 ; GFX12-NEXT: S_WAIT_EXPCNT 061 ; GFX12-NEXT: S_WAIT_SAMPLECNT 062 ; GFX12-NEXT: S_WAIT_BVHCNT 063 ; GFX12-NEXT: S_WAIT_KMCNT 064 ; GFX12-NEXT: S_CMP_EQ_U32 $sgpr0, 0, implicit-def $scc65 ; GFX12-NEXT: V_CMPX_EQ_U32_nosdst_e32 0, killed $vgpr0, implicit-def $exec, implicit $exec66 ; GFX12-NEXT: S_CBRANCH_EXECZ %bb.2, implicit $exec67 ; GFX12-NEXT: {{ $}}68 ; GFX12-NEXT: bb.1:69 ; GFX12-NEXT: successors: %bb.2(0x80000000)70 ; GFX12-NEXT: {{ $}}71 ; GFX12-NEXT: renamable $sgpr1 = S_CSELECT_B32 1, 0, implicit killed $scc72 ; GFX12-NEXT: S_BARRIER_SIGNAL_ISFIRST_IMM -1, implicit-def $scc, implicit killed $scc73 ; GFX12-NEXT: $vgpr2 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit $exec74 ; GFX12-NEXT: GLOBAL_STORE_DWORD $vgpr3_vgpr4, $vgpr2, 0, 0, implicit $exec75 ; GFX12-NEXT: {{ $}}76 ; GFX12-NEXT: bb.2:77 ; GFX12-NEXT: S_BARRIER_WAIT -178 ; GFX12-NEXT: renamable $sgpr1 = S_CSELECT_B32 10, 20, implicit killed $scc79 ; GFX12-NEXT: $vgpr5 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit $exec80 ; GFX12-NEXT: GLOBAL_STORE_DWORD $vgpr6_vgpr7, $vgpr5, 0, 0, implicit $exec81 ; GFX12-NEXT: S_ENDPGM 082 bb.0:83 S_CMP_EQ_U32 $sgpr0, 0, implicit-def $scc84 V_CMPX_EQ_U32_nosdst_e32 0, killed $vgpr0, implicit-def $exec, implicit $exec85 S_CBRANCH_EXECZ %bb.2, implicit $exec86 87 bb.1:88 renamable $sgpr1 = S_CSELECT_B32 1, 0, implicit killed $scc89 S_BARRIER_SIGNAL_ISFIRST_IMM -1, implicit-def $scc, implicit killed $scc90 $vgpr2 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit $exec91 GLOBAL_STORE_DWORD $vgpr3_vgpr4, $vgpr2, 0, 0, implicit $exec92 93 bb.2:94 S_BARRIER_WAIT -195 renamable $sgpr1 = S_CSELECT_B32 10, 20, implicit killed $scc96 $vgpr5 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit $exec97 GLOBAL_STORE_DWORD $vgpr6_vgpr7, $vgpr5, 0, 0, implicit $exec98 S_ENDPGM 099...100 101---102name: scc_write_in_multiple_blocks_with_barrier_wait103body: |104 ; GFX12-LABEL: name: scc_write_in_multiple_blocks_with_barrier_wait105 ; GFX12: bb.0:106 ; GFX12-NEXT: successors: %bb.4(0x40000000), %bb.1(0x40000000)107 ; GFX12-NEXT: {{ $}}108 ; GFX12-NEXT: S_WAIT_LOADCNT_DSCNT 0109 ; GFX12-NEXT: S_WAIT_EXPCNT 0110 ; GFX12-NEXT: S_WAIT_SAMPLECNT 0111 ; GFX12-NEXT: S_WAIT_BVHCNT 0112 ; GFX12-NEXT: S_WAIT_KMCNT 0113 ; GFX12-NEXT: S_CMP_EQ_U32 $sgpr0, 0, implicit-def $scc114 ; GFX12-NEXT: V_CMPX_EQ_U32_nosdst_e32 0, killed $vgpr0, implicit-def $exec, implicit $exec115 ; GFX12-NEXT: S_CBRANCH_EXECZ %bb.4, implicit $exec116 ; GFX12-NEXT: {{ $}}117 ; GFX12-NEXT: bb.1:118 ; GFX12-NEXT: successors: %bb.3(0x40000000), %bb.2(0x40000000)119 ; GFX12-NEXT: {{ $}}120 ; GFX12-NEXT: V_CMPX_EQ_U32_nosdst_e32 0, killed $vgpr1, implicit-def $exec, implicit $exec121 ; GFX12-NEXT: S_CBRANCH_EXECZ %bb.3, implicit $exec122 ; GFX12-NEXT: {{ $}}123 ; GFX12-NEXT: bb.2:124 ; GFX12-NEXT: successors: %bb.5(0x80000000)125 ; GFX12-NEXT: {{ $}}126 ; GFX12-NEXT: S_BARRIER_SIGNAL_ISFIRST_IMM 0, implicit-def $scc, implicit killed $scc127 ; GFX12-NEXT: S_BRANCH %bb.5128 ; GFX12-NEXT: {{ $}}129 ; GFX12-NEXT: bb.3:130 ; GFX12-NEXT: successors: %bb.5(0x80000000)131 ; GFX12-NEXT: {{ $}}132 ; GFX12-NEXT: S_BARRIER_SIGNAL_ISFIRST_IMM 1, implicit-def $scc, implicit killed $scc133 ; GFX12-NEXT: S_BRANCH %bb.5134 ; GFX12-NEXT: {{ $}}135 ; GFX12-NEXT: bb.4:136 ; GFX12-NEXT: successors: %bb.5(0x80000000)137 ; GFX12-NEXT: {{ $}}138 ; GFX12-NEXT: S_BARRIER_SIGNAL_ISFIRST_IMM -1, implicit-def $scc, implicit killed $scc139 ; GFX12-NEXT: {{ $}}140 ; GFX12-NEXT: bb.5:141 ; GFX12-NEXT: S_BARRIER_WAIT -1142 ; GFX12-NEXT: S_WAIT_KMCNT 0143 ; GFX12-NEXT: renamable $sgpr1 = S_CSELECT_B32 10, 20, implicit killed $scc144 ; GFX12-NEXT: $vgpr5 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit $exec145 ; GFX12-NEXT: GLOBAL_STORE_DWORD $vgpr6_vgpr7, $vgpr5, 0, 0, implicit $exec146 ; GFX12-NEXT: S_ENDPGM 0147 bb.0:148 S_CMP_EQ_U32 $sgpr0, 0, implicit-def $scc149 V_CMPX_EQ_U32_nosdst_e32 0, killed $vgpr0, implicit-def $exec, implicit $exec150 S_CBRANCH_EXECZ %bb.4, implicit $exec151 152 bb.1:153 V_CMPX_EQ_U32_nosdst_e32 0, killed $vgpr1, implicit-def $exec, implicit $exec154 S_CBRANCH_EXECZ %bb.3, implicit $exec155 156 bb.2:157 S_BARRIER_SIGNAL_ISFIRST_IMM 0, implicit-def $scc, implicit killed $scc158 S_BRANCH %bb.5159 160 bb.3:161 S_BARRIER_SIGNAL_ISFIRST_IMM 1, implicit-def $scc, implicit killed $scc162 S_BRANCH %bb.5163 164 bb.4:165 S_BARRIER_SIGNAL_ISFIRST_IMM -1, implicit-def $scc, implicit killed $scc166 167 bb.5:168 S_BARRIER_WAIT -1169 renamable $sgpr1 = S_CSELECT_B32 10, 20, implicit killed $scc170 $vgpr5 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit $exec171 GLOBAL_STORE_DWORD $vgpr6_vgpr7, $vgpr5, 0, 0, implicit $exec172 S_ENDPGM 0173...174