196 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -verify-machineinstrs -run-pass si-insert-waitcnts -o - %s | FileCheck -check-prefix=GFX10 %s3# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -verify-machineinstrs -run-pass si-insert-waitcnts -o - %s | FileCheck -check-prefix=GFX11 %s4 5---6name: test_waitcnt_preexisting_vscnt_unmodified7body: |8 bb.0:9 liveins: $vgpr0_vgpr1, $vgpr210 11 ; GFX10-LABEL: name: test_waitcnt_preexisting_vscnt_unmodified12 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr213 ; GFX10-NEXT: {{ $}}14 ; GFX10-NEXT: S_WAITCNT 015 ; GFX10-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec16 ; GFX10-NEXT: S_WAITCNT_VSCNT undef $sgpr_null, 017 ; GFX10-NEXT: S_BARRIER18 ; GFX10-NEXT: $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr19 ; GFX10-NEXT: S_WAITCNT 11220 ; GFX10-NEXT: FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr21 ; GFX10-NEXT: S_ENDPGM 022 ;23 ; GFX11-LABEL: name: test_waitcnt_preexisting_vscnt_unmodified24 ; GFX11: liveins: $vgpr0_vgpr1, $vgpr225 ; GFX11-NEXT: {{ $}}26 ; GFX11-NEXT: S_WAITCNT 027 ; GFX11-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec28 ; GFX11-NEXT: S_WAITCNT_VSCNT undef $sgpr_null, 029 ; GFX11-NEXT: S_BARRIER30 ; GFX11-NEXT: $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr31 ; GFX11-NEXT: S_WAITCNT 732 ; GFX11-NEXT: FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr33 ; GFX11-NEXT: S_ENDPGM 034 GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec35 S_WAITCNT_VSCNT_soft undef $sgpr_null, 036 S_BARRIER37 $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr38 FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr39 S_ENDPGM 040...41 42---43name: test_waitcnt_preexisting_vscnt_needs_vscnt44body: |45 bb.0:46 liveins: $vgpr0_vgpr1, $vgpr247 48 ; GFX10-LABEL: name: test_waitcnt_preexisting_vscnt_needs_vscnt49 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr250 ; GFX10-NEXT: {{ $}}51 ; GFX10-NEXT: S_WAITCNT 052 ; GFX10-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec53 ; GFX10-NEXT: S_WAITCNT_VSCNT undef $sgpr_null, 154 ; GFX10-NEXT: S_BARRIER55 ; GFX10-NEXT: $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr56 ; GFX10-NEXT: S_WAITCNT 11257 ; GFX10-NEXT: FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr58 ; GFX10-NEXT: S_ENDPGM 059 ;60 ; GFX11-LABEL: name: test_waitcnt_preexisting_vscnt_needs_vscnt61 ; GFX11: liveins: $vgpr0_vgpr1, $vgpr262 ; GFX11-NEXT: {{ $}}63 ; GFX11-NEXT: S_WAITCNT 064 ; GFX11-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec65 ; GFX11-NEXT: S_WAITCNT_VSCNT undef $sgpr_null, 166 ; GFX11-NEXT: S_BARRIER67 ; GFX11-NEXT: $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr68 ; GFX11-NEXT: S_WAITCNT 769 ; GFX11-NEXT: FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr70 ; GFX11-NEXT: S_ENDPGM 071 GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec72 S_WAITCNT_VSCNT_soft undef $sgpr_null, 173 S_BARRIER74 $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr75 FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr76 S_ENDPGM 077...78 79---80name: test_waitcnt_preexisting_vscnt_with_other_waitcnt81body: |82 bb.0:83 liveins: $vgpr0_vgpr1, $vgpr284 85 ; GFX10-LABEL: name: test_waitcnt_preexisting_vscnt_with_other_waitcnt86 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr287 ; GFX10-NEXT: {{ $}}88 ; GFX10-NEXT: S_WAITCNT 089 ; GFX10-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec90 ; GFX10-NEXT: S_WAITCNT_VSCNT undef $sgpr_null, 091 ; GFX10-NEXT: S_BARRIER92 ; GFX10-NEXT: $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr93 ; GFX10-NEXT: S_WAITCNT 11294 ; GFX10-NEXT: FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr95 ; GFX10-NEXT: S_ENDPGM 096 ;97 ; GFX11-LABEL: name: test_waitcnt_preexisting_vscnt_with_other_waitcnt98 ; GFX11: liveins: $vgpr0_vgpr1, $vgpr299 ; GFX11-NEXT: {{ $}}100 ; GFX11-NEXT: S_WAITCNT 0101 ; GFX11-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec102 ; GFX11-NEXT: S_WAITCNT_VSCNT undef $sgpr_null, 0103 ; GFX11-NEXT: S_BARRIER104 ; GFX11-NEXT: $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr105 ; GFX11-NEXT: S_WAITCNT 7106 ; GFX11-NEXT: FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr107 ; GFX11-NEXT: S_ENDPGM 0108 GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec109 S_WAITCNT_soft 112110 S_WAITCNT_VSCNT_soft undef $sgpr_null, 0111 S_BARRIER112 $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr113 FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr114 S_ENDPGM 0115...116 117---118name: test_waitcnt_preexisting_vscnt_combined119body: |120 bb.0:121 liveins: $vgpr0_vgpr1, $vgpr2122 123 ; GFX10-LABEL: name: test_waitcnt_preexisting_vscnt_combined124 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2125 ; GFX10-NEXT: {{ $}}126 ; GFX10-NEXT: S_WAITCNT 0127 ; GFX10-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec128 ; GFX10-NEXT: S_WAITCNT_VSCNT undef $sgpr_null, 0129 ; GFX10-NEXT: S_BARRIER130 ; GFX10-NEXT: $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr131 ; GFX10-NEXT: S_WAITCNT 112132 ; GFX10-NEXT: FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr133 ; GFX10-NEXT: S_ENDPGM 0134 ;135 ; GFX11-LABEL: name: test_waitcnt_preexisting_vscnt_combined136 ; GFX11: liveins: $vgpr0_vgpr1, $vgpr2137 ; GFX11-NEXT: {{ $}}138 ; GFX11-NEXT: S_WAITCNT 0139 ; GFX11-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec140 ; GFX11-NEXT: S_WAITCNT_VSCNT undef $sgpr_null, 0141 ; GFX11-NEXT: S_BARRIER142 ; GFX11-NEXT: $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr143 ; GFX11-NEXT: S_WAITCNT 7144 ; GFX11-NEXT: FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr145 ; GFX11-NEXT: S_ENDPGM 0146 GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec147 S_WAITCNT_VSCNT_soft undef $sgpr_null, 0148 S_WAITCNT_VSCNT_soft undef $sgpr_null, 1149 S_WAITCNT_VSCNT_soft undef $sgpr_null, 2150 S_BARRIER151 $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr152 FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr153 S_ENDPGM 0154...155 156---157name: test_waitcnt_preexisting_vscnt_combined_both_types158body: |159 bb.0:160 liveins: $vgpr0_vgpr1, $vgpr2161 162 ; GFX10-LABEL: name: test_waitcnt_preexisting_vscnt_combined_both_types163 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2164 ; GFX10-NEXT: {{ $}}165 ; GFX10-NEXT: S_WAITCNT 0166 ; GFX10-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec167 ; GFX10-NEXT: S_WAITCNT_VSCNT undef $sgpr_null, 1168 ; GFX10-NEXT: S_BARRIER169 ; GFX10-NEXT: $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr170 ; GFX10-NEXT: S_WAITCNT 112171 ; GFX10-NEXT: FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr172 ; GFX10-NEXT: S_ENDPGM 0173 ;174 ; GFX11-LABEL: name: test_waitcnt_preexisting_vscnt_combined_both_types175 ; GFX11: liveins: $vgpr0_vgpr1, $vgpr2176 ; GFX11-NEXT: {{ $}}177 ; GFX11-NEXT: S_WAITCNT 0178 ; GFX11-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec179 ; GFX11-NEXT: S_WAITCNT_VSCNT undef $sgpr_null, 1180 ; GFX11-NEXT: S_BARRIER181 ; GFX11-NEXT: $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr182 ; GFX11-NEXT: S_WAITCNT 7183 ; GFX11-NEXT: FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr184 ; GFX11-NEXT: S_ENDPGM 0185 GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec186 S_WAITCNT_soft 0187 S_WAITCNT_VSCNT_soft undef $sgpr_null, 1188 S_WAITCNT_soft 0189 S_WAITCNT_VSCNT_soft undef $sgpr_null, 2190 S_WAITCNT_soft 0191 S_BARRIER192 $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr193 FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr194 S_ENDPGM 0195...196