1152 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -mattr=+wavefrontsize64 -verify-machineinstrs -run-pass post-RA-hazard-rec -o - %s | FileCheck -check-prefixes=GCN,GFX11 %s3# RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -mattr=+wavefrontsize64 -verify-machineinstrs -run-pass post-RA-hazard-rec,amdgpu-wait-sgpr-hazards -o - %s | FileCheck -check-prefixes=GCN,GFX12 %s4 5--- |6 @mem = internal unnamed_addr addrspace(4) constant [4 x <4 x i32>] [<4 x i32> <i32 0, i32 0, i32 0, i32 0>, <4 x i32> <i32 0, i32 0, i32 0, i32 0>, <4 x i32> <i32 0, i32 0, i32 0, i32 0>, <4 x i32> <i32 0, i32 0, i32 0, i32 0>]7 8 define amdgpu_gs void @mask_hazard_getpc1() { ret void }9 define amdgpu_gs void @mask_hazard_getpc2() { ret void }10 define amdgpu_gs void @mask_hazard_vcc1() { ret void }11 define amdgpu_gs void @mask_hazard_vcc2() { ret void }12 define amdgpu_gs void @mask_hazard_cndmask_dpp1() { ret void }13 define amdgpu_gs void @mask_hazard_cndmask_dpp2() { ret void }14 define amdgpu_gs void @mask_hazard_cndmask_dpp3() { ret void }15 define amdgpu_gs void @mask_hazard_addc1() { ret void }16 define amdgpu_gs void @mask_hazard_addc2() { ret void }17 define amdgpu_gs void @mask_hazard_addc3() { ret void }18 define amdgpu_gs void @mask_hazard_addc4() { ret void }19 define amdgpu_gs void @mask_hazard_subb1() { ret void }20 define amdgpu_gs void @mask_hazard_subb2() { ret void }21 define amdgpu_gs void @mask_hazard_subb3() { ret void }22 define amdgpu_gs void @mask_hazard_subb4() { ret void }23 define amdgpu_gs void @mask_hazard_subbrev1() { ret void }24 define amdgpu_gs void @mask_hazard_subbrev2() { ret void }25 define amdgpu_gs void @mask_hazard_subbrev3() { ret void }26 define amdgpu_gs void @mask_hazard_subbrev4() { ret void }27 define amdgpu_gs void @mask_hazard_div_fmas_f32() { ret void }28 define amdgpu_gs void @mask_hazard_div_fmas_f64() { ret void }29 define amdgpu_gs void @mask_hazard_subreg1() { ret void }30 define amdgpu_gs void @mask_hazard_subreg2() { ret void }31 define amdgpu_gs void @mask_hazard_subreg3() { ret void }32 define amdgpu_gs void @mask_hazard_subreg4() { ret void }33 define amdgpu_gs void @mask_hazard_subreg5() { ret void }34 define amdgpu_gs void @mask_hazard_waitcnt() { ret void }35 define amdgpu_gs void @mask_hazard_gap1() { ret void }36 define amdgpu_gs void @mask_hazard_gap2() { ret void }37 define amdgpu_gs void @mask_hazard_gap3() { ret void }38 define amdgpu_gs void @mask_hazard_no_hazard1() { ret void }39 define amdgpu_gs void @mask_hazard_no_hazard2() { ret void }40 define amdgpu_gs void @mask_hazard_no_hazard3() { ret void }41 define amdgpu_gs void @mask_hazard_cancel_hazard1() { ret void }42 define amdgpu_gs void @mask_hazard_cancel_hazard2() { ret void }43 define amdgpu_gs void @mask_hazard_cancel_hazard3() { ret void }44 define amdgpu_gs void @mask_hazard_cancel_hazard4() { ret void }45 define amdgpu_gs void @mask_hazard_partial_cancel1() { ret void }46 define amdgpu_gs void @mask_hazard_partial_cancel2() { ret void }47 define amdgpu_gs void @mask_hazard_partial_cancel3() { ret void }48 define amdgpu_gs void @mask_hazard_partial_cancel4() { ret void }49 define amdgpu_gs void @mask_hazard_valu_readlane1() { ret void }50 define amdgpu_gs void @mask_hazard_valu_readlane2() { ret void }51 define amdgpu_gs void @mask_hazard_valu_readlane3() { ret void }52 define amdgpu_gs void @mask_hazard_valu_readfirstlane() { ret void }53 define amdgpu_gs void @mask_hazard_valu_vcmp_vcc() { ret void }54 define amdgpu_gs void @mask_hazard_valu_vcmp_sgpr() { ret void }55 define amdgpu_gs void @mask_hazard_combine1() { ret void }56 define amdgpu_gs void @mask_hazard_combine2() { ret void }57 define amdgpu_gs void @mask_hazard_combine3() { ret void }58 define amdgpu_gs void @mask_hazard_combine4() { ret void }59 define amdgpu_gs void @mask_hazard_combine5() { ret void }60...61 62---63name: mask_hazard_getpc164body: |65 bb.0:66 ; GCN-LABEL: name: mask_hazard_getpc167 ; GCN: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec68 ; GCN-NEXT: $sgpr0_sgpr1 = S_GETPC_B6469 ; GCN-NEXT: S_WAITCNT_DEPCTR 6543870 ; GCN-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, 0, implicit-def $scc71 ; GCN-NEXT: S_ENDPGM 072 $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec73 $sgpr0_sgpr1 = S_GETPC_B6474 $sgpr0 = S_ADD_U32 $sgpr0, 0, implicit-def $scc75 S_ENDPGM 076...77 78---79name: mask_hazard_getpc280body: |81 bb.0:82 ; GCN-LABEL: name: mask_hazard_getpc283 ; GCN: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec84 ; GCN-NEXT: BUNDLE implicit-def $sgpr0_sgpr1 {85 ; GCN-NEXT: $sgpr0_sgpr1 = S_GETPC_B6486 ; GCN-NEXT: S_WAITCNT_DEPCTR 6543887 ; GCN-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, target-flags(amdgpu-rel32-lo) @mem + 8, implicit-def $scc88 ; GCN-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, target-flags(amdgpu-rel32-lo) @mem + 16, implicit-def $scc, implicit $scc89 ; GCN-NEXT: }90 ; GCN-NEXT: S_ENDPGM 091 $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec92 BUNDLE implicit-def $sgpr0_sgpr1 {93 $sgpr0_sgpr1 = S_GETPC_B6494 $sgpr0 = S_ADD_U32 $sgpr0, target-flags(amdgpu-rel32-lo) @mem + 4, implicit-def $scc95 $sgpr1 = S_ADDC_U32 $sgpr1, target-flags(amdgpu-rel32-lo) @mem + 12, implicit-def $scc, implicit $scc96 }97 S_ENDPGM 098...99 100---101name: mask_hazard_vcc1102body: |103 bb.0:104 ; GFX11-LABEL: name: mask_hazard_vcc1105 ; GFX11: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec106 ; GFX11-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc107 ; GFX11-NEXT: S_WAITCNT_DEPCTR 65438108 ; GFX11-NEXT: S_ENDPGM 0109 ;110 ; GFX12-LABEL: name: mask_hazard_vcc1111 ; GFX12: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec112 ; GFX12-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc113 ; GFX12-NEXT: S_ENDPGM 0114 $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec115 $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc116 S_ENDPGM 0117...118 119---120name: mask_hazard_vcc2121body: |122 bb.0:123 ; GFX11-LABEL: name: mask_hazard_vcc2124 ; GFX11: $vgpr1 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec125 ; GFX11-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc126 ; GFX11-NEXT: S_WAITCNT_DEPCTR 65438127 ; GFX11-NEXT: S_ENDPGM 0128 ;129 ; GFX12-LABEL: name: mask_hazard_vcc2130 ; GFX12: $vgpr1 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec131 ; GFX12-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc132 ; GFX12-NEXT: S_ENDPGM 0133 $vgpr1 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec134 $vcc = S_CSELECT_B64 -1, 0, implicit $scc135 S_ENDPGM 0136...137 138---139name: mask_hazard_cndmask_dpp1140body: |141 bb.0:142 ; GFX11-LABEL: name: mask_hazard_cndmask_dpp1143 ; GFX11: $vgpr0 = V_CNDMASK_B32_dpp $vgpr0, 0, $vgpr1, 0, $vgpr2, 1, 15, 15, 1, implicit $vcc, implicit $exec144 ; GFX11-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc145 ; GFX11-NEXT: S_WAITCNT_DEPCTR 65438146 ; GFX11-NEXT: S_ENDPGM 0147 ;148 ; GFX12-LABEL: name: mask_hazard_cndmask_dpp1149 ; GFX12: $vgpr0 = V_CNDMASK_B32_dpp $vgpr0, 0, $vgpr1, 0, $vgpr2, 1, 15, 15, 1, implicit $vcc, implicit $exec150 ; GFX12-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc151 ; GFX12-NEXT: S_ENDPGM 0152 $vgpr0 = V_CNDMASK_B32_dpp $vgpr0, 0, $vgpr1, 0, $vgpr2, 1, 15, 15, 1, implicit $vcc, implicit $exec153 $vcc = S_CSELECT_B64 -1, 0, implicit $scc154 S_ENDPGM 0155...156 157---158name: mask_hazard_cndmask_dpp2159body: |160 bb.0:161 ; GFX11-LABEL: name: mask_hazard_cndmask_dpp2162 ; GFX11: $vgpr0 = V_CNDMASK_B32_e64_dpp $vgpr0, 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, 1, 15, 15, 1, implicit $exec163 ; GFX11-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc164 ; GFX11-NEXT: S_WAITCNT_DEPCTR 65438165 ; GFX11-NEXT: S_ENDPGM 0166 ;167 ; GFX12-LABEL: name: mask_hazard_cndmask_dpp2168 ; GFX12: $vgpr0 = V_CNDMASK_B32_e64_dpp $vgpr0, 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, 1, 15, 15, 1, implicit $exec169 ; GFX12-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc170 ; GFX12-NEXT: S_ENDPGM 0171 $vgpr0 = V_CNDMASK_B32_e64_dpp $vgpr0, 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, 1, 15, 15, 1, implicit $exec172 $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc173 S_ENDPGM 0174...175 176---177name: mask_hazard_cndmask_dpp3178body: |179 bb.0:180 ; GFX11-LABEL: name: mask_hazard_cndmask_dpp3181 ; GFX11: $vgpr0 = V_CNDMASK_B16_fake16_e64_dpp $vgpr0, 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, 1, 15, 15, 1, implicit $exec182 ; GFX11-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc183 ; GFX11-NEXT: S_WAITCNT_DEPCTR 65438184 ; GFX11-NEXT: S_ENDPGM 0185 ;186 ; GFX12-LABEL: name: mask_hazard_cndmask_dpp3187 ; GFX12: $vgpr0 = V_CNDMASK_B16_fake16_e64_dpp $vgpr0, 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, 1, 15, 15, 1, implicit $exec188 ; GFX12-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc189 ; GFX12-NEXT: S_ENDPGM 0190 $vgpr0 = V_CNDMASK_B16_fake16_e64_dpp $vgpr0, 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, 1, 15, 15, 1, implicit $exec191 $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc192 S_ENDPGM 0193...194 195---196name: mask_hazard_addc1197body: |198 bb.0:199 ; GFX11-LABEL: name: mask_hazard_addc1200 ; GFX11: $vgpr1, $vcc = V_ADDC_U32_e64 0, $vgpr1, $sgpr2_sgpr3, 0, implicit $exec201 ; GFX11-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc202 ; GFX11-NEXT: S_WAITCNT_DEPCTR 65438203 ; GFX11-NEXT: S_ENDPGM 0204 ;205 ; GFX12-LABEL: name: mask_hazard_addc1206 ; GFX12: $vgpr1, $vcc = V_ADDC_U32_e64 0, $vgpr1, $sgpr2_sgpr3, 0, implicit $exec207 ; GFX12-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc208 ; GFX12-NEXT: S_ENDPGM 0209 $vgpr1, $vcc = V_ADDC_U32_e64 0, $vgpr1, $sgpr2_sgpr3, 0, implicit $exec210 $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc211 S_ENDPGM 0212...213 214---215name: mask_hazard_addc2216body: |217 bb.0:218 ; GFX11-LABEL: name: mask_hazard_addc2219 ; GFX11: $vgpr1 = V_ADDC_U32_e32 0, $vgpr1, implicit-def $vcc, implicit $vcc, implicit $exec220 ; GFX11-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc221 ; GFX11-NEXT: S_WAITCNT_DEPCTR 65438222 ; GFX11-NEXT: S_ENDPGM 0223 ;224 ; GFX12-LABEL: name: mask_hazard_addc2225 ; GFX12: $vgpr1 = V_ADDC_U32_e32 0, $vgpr1, implicit-def $vcc, implicit $vcc, implicit $exec226 ; GFX12-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc227 ; GFX12-NEXT: S_ENDPGM 0228 $vgpr1 = V_ADDC_U32_e32 0, $vgpr1, implicit-def $vcc, implicit $vcc, implicit $exec229 $vcc = S_CSELECT_B64 -1, 0, implicit $scc230 S_ENDPGM 0231...232 233---234name: mask_hazard_addc3235body: |236 bb.0:237 ; GFX11-LABEL: name: mask_hazard_addc3238 ; GFX11: $vgpr0 = V_ADDC_U32_dpp $vgpr0, $vgpr1, $vgpr2, 1, 15, 15, 1, implicit-def $vcc, implicit $vcc, implicit $exec239 ; GFX11-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc240 ; GFX11-NEXT: S_WAITCNT_DEPCTR 65438241 ; GFX11-NEXT: S_ENDPGM 0242 ;243 ; GFX12-LABEL: name: mask_hazard_addc3244 ; GFX12: $vgpr0 = V_ADDC_U32_dpp $vgpr0, $vgpr1, $vgpr2, 1, 15, 15, 1, implicit-def $vcc, implicit $vcc, implicit $exec245 ; GFX12-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc246 ; GFX12-NEXT: S_ENDPGM 0247 $vgpr0 = V_ADDC_U32_dpp $vgpr0, $vgpr1, $vgpr2, 1, 15, 15, 1, implicit-def $vcc, implicit $vcc, implicit $exec248 $vcc = S_CSELECT_B64 -1, 0, implicit $scc249 S_ENDPGM 0250...251 252---253name: mask_hazard_addc4254body: |255 bb.0:256 ; GFX11-LABEL: name: mask_hazard_addc4257 ; GFX11: $vgpr0, $sgpr2_sgpr3 = V_ADDC_U32_e64_dpp $vgpr0, $vgpr1, $vgpr2, $sgpr2_sgpr3, 0, 1, 15, 15, 1, implicit $exec258 ; GFX11-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc259 ; GFX11-NEXT: S_WAITCNT_DEPCTR 65438260 ; GFX11-NEXT: S_ENDPGM 0261 ;262 ; GFX12-LABEL: name: mask_hazard_addc4263 ; GFX12: $vgpr0, $sgpr2_sgpr3 = V_ADDC_U32_e64_dpp $vgpr0, $vgpr1, $vgpr2, $sgpr2_sgpr3, 0, 1, 15, 15, 1, implicit $exec264 ; GFX12-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc265 ; GFX12-NEXT: S_ENDPGM 0266 $vgpr0, $sgpr2_sgpr3 = V_ADDC_U32_e64_dpp $vgpr0, $vgpr1, $vgpr2, $sgpr2_sgpr3, 0, 1, 15, 15, 1, implicit $exec267 $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc268 S_ENDPGM 0269...270 271---272name: mask_hazard_subb1273body: |274 bb.0:275 ; GFX11-LABEL: name: mask_hazard_subb1276 ; GFX11: $vgpr1, $vcc = V_SUBB_U32_e64 0, $vgpr1, $sgpr2_sgpr3, 0, implicit $exec277 ; GFX11-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc278 ; GFX11-NEXT: S_WAITCNT_DEPCTR 65438279 ; GFX11-NEXT: S_ENDPGM 0280 ;281 ; GFX12-LABEL: name: mask_hazard_subb1282 ; GFX12: $vgpr1, $vcc = V_SUBB_U32_e64 0, $vgpr1, $sgpr2_sgpr3, 0, implicit $exec283 ; GFX12-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc284 ; GFX12-NEXT: S_ENDPGM 0285 $vgpr1, $vcc = V_SUBB_U32_e64 0, $vgpr1, $sgpr2_sgpr3, 0, implicit $exec286 $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc287 S_ENDPGM 0288...289 290---291name: mask_hazard_subb2292body: |293 bb.0:294 ; GFX11-LABEL: name: mask_hazard_subb2295 ; GFX11: $vgpr1 = V_SUBB_U32_e32 0, $vgpr1, implicit-def $vcc, implicit $vcc, implicit $exec296 ; GFX11-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc297 ; GFX11-NEXT: S_WAITCNT_DEPCTR 65438298 ; GFX11-NEXT: S_ENDPGM 0299 ;300 ; GFX12-LABEL: name: mask_hazard_subb2301 ; GFX12: $vgpr1 = V_SUBB_U32_e32 0, $vgpr1, implicit-def $vcc, implicit $vcc, implicit $exec302 ; GFX12-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc303 ; GFX12-NEXT: S_ENDPGM 0304 $vgpr1 = V_SUBB_U32_e32 0, $vgpr1, implicit-def $vcc, implicit $vcc, implicit $exec305 $vcc = S_CSELECT_B64 -1, 0, implicit $scc306 S_ENDPGM 0307...308 309---310name: mask_hazard_subb3311body: |312 bb.0:313 ; GFX11-LABEL: name: mask_hazard_subb3314 ; GFX11: $vgpr0 = V_SUBB_U32_dpp $vgpr0, $vgpr1, $vgpr2, 1, 15, 15, 1, implicit-def $vcc, implicit $vcc, implicit $exec315 ; GFX11-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc316 ; GFX11-NEXT: S_WAITCNT_DEPCTR 65438317 ; GFX11-NEXT: S_ENDPGM 0318 ;319 ; GFX12-LABEL: name: mask_hazard_subb3320 ; GFX12: $vgpr0 = V_SUBB_U32_dpp $vgpr0, $vgpr1, $vgpr2, 1, 15, 15, 1, implicit-def $vcc, implicit $vcc, implicit $exec321 ; GFX12-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc322 ; GFX12-NEXT: S_ENDPGM 0323 $vgpr0 = V_SUBB_U32_dpp $vgpr0, $vgpr1, $vgpr2, 1, 15, 15, 1, implicit-def $vcc, implicit $vcc, implicit $exec324 $vcc = S_CSELECT_B64 -1, 0, implicit $scc325 S_ENDPGM 0326...327 328---329name: mask_hazard_subb4330body: |331 bb.0:332 ; GFX11-LABEL: name: mask_hazard_subb4333 ; GFX11: $vgpr0, $sgpr2_sgpr3 = V_SUBB_U32_e64_dpp $vgpr0, $vgpr1, $vgpr2, $sgpr2_sgpr3, 0, 1, 15, 15, 1, implicit $exec334 ; GFX11-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc335 ; GFX11-NEXT: S_WAITCNT_DEPCTR 65438336 ; GFX11-NEXT: S_ENDPGM 0337 ;338 ; GFX12-LABEL: name: mask_hazard_subb4339 ; GFX12: $vgpr0, $sgpr2_sgpr3 = V_SUBB_U32_e64_dpp $vgpr0, $vgpr1, $vgpr2, $sgpr2_sgpr3, 0, 1, 15, 15, 1, implicit $exec340 ; GFX12-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc341 ; GFX12-NEXT: S_ENDPGM 0342 $vgpr0, $sgpr2_sgpr3 = V_SUBB_U32_e64_dpp $vgpr0, $vgpr1, $vgpr2, $sgpr2_sgpr3, 0, 1, 15, 15, 1, implicit $exec343 $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc344 S_ENDPGM 0345...346 347---348name: mask_hazard_subbrev1349body: |350 bb.0:351 ; GFX11-LABEL: name: mask_hazard_subbrev1352 ; GFX11: $vgpr1, $vcc = V_SUBBREV_U32_e64 0, $vgpr1, $sgpr2_sgpr3, 0, implicit $exec353 ; GFX11-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc354 ; GFX11-NEXT: S_WAITCNT_DEPCTR 65438355 ; GFX11-NEXT: S_ENDPGM 0356 ;357 ; GFX12-LABEL: name: mask_hazard_subbrev1358 ; GFX12: $vgpr1, $vcc = V_SUBBREV_U32_e64 0, $vgpr1, $sgpr2_sgpr3, 0, implicit $exec359 ; GFX12-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc360 ; GFX12-NEXT: S_ENDPGM 0361 $vgpr1, $vcc = V_SUBBREV_U32_e64 0, $vgpr1, $sgpr2_sgpr3, 0, implicit $exec362 $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc363 S_ENDPGM 0364...365 366---367name: mask_hazard_subbrev2368body: |369 bb.0:370 ; GFX11-LABEL: name: mask_hazard_subbrev2371 ; GFX11: $vgpr1 = V_SUBBREV_U32_e32 0, $vgpr1, implicit-def $vcc, implicit $vcc, implicit $exec372 ; GFX11-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc373 ; GFX11-NEXT: S_WAITCNT_DEPCTR 65438374 ; GFX11-NEXT: S_ENDPGM 0375 ;376 ; GFX12-LABEL: name: mask_hazard_subbrev2377 ; GFX12: $vgpr1 = V_SUBBREV_U32_e32 0, $vgpr1, implicit-def $vcc, implicit $vcc, implicit $exec378 ; GFX12-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc379 ; GFX12-NEXT: S_ENDPGM 0380 $vgpr1 = V_SUBBREV_U32_e32 0, $vgpr1, implicit-def $vcc, implicit $vcc, implicit $exec381 $vcc = S_CSELECT_B64 -1, 0, implicit $scc382 S_ENDPGM 0383...384 385---386name: mask_hazard_subbrev3387body: |388 bb.0:389 ; GFX11-LABEL: name: mask_hazard_subbrev3390 ; GFX11: $vgpr0 = V_SUBBREV_U32_dpp $vgpr0, $vgpr1, $vgpr2, 1, 15, 15, 1, implicit-def $vcc, implicit $vcc, implicit $exec391 ; GFX11-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc392 ; GFX11-NEXT: S_WAITCNT_DEPCTR 65438393 ; GFX11-NEXT: S_ENDPGM 0394 ;395 ; GFX12-LABEL: name: mask_hazard_subbrev3396 ; GFX12: $vgpr0 = V_SUBBREV_U32_dpp $vgpr0, $vgpr1, $vgpr2, 1, 15, 15, 1, implicit-def $vcc, implicit $vcc, implicit $exec397 ; GFX12-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc398 ; GFX12-NEXT: S_ENDPGM 0399 $vgpr0 = V_SUBBREV_U32_dpp $vgpr0, $vgpr1, $vgpr2, 1, 15, 15, 1, implicit-def $vcc, implicit $vcc, implicit $exec400 $vcc = S_CSELECT_B64 -1, 0, implicit $scc401 S_ENDPGM 0402...403 404---405name: mask_hazard_subbrev4406body: |407 bb.0:408 ; GFX11-LABEL: name: mask_hazard_subbrev4409 ; GFX11: $vgpr0, $sgpr2_sgpr3 = V_SUBBREV_U32_e64_dpp $vgpr0, $vgpr1, $vgpr2, $sgpr2_sgpr3, 0, 1, 15, 15, 1, implicit $exec410 ; GFX11-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc411 ; GFX11-NEXT: S_WAITCNT_DEPCTR 65438412 ; GFX11-NEXT: S_ENDPGM 0413 ;414 ; GFX12-LABEL: name: mask_hazard_subbrev4415 ; GFX12: $vgpr0, $sgpr2_sgpr3 = V_SUBBREV_U32_e64_dpp $vgpr0, $vgpr1, $vgpr2, $sgpr2_sgpr3, 0, 1, 15, 15, 1, implicit $exec416 ; GFX12-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc417 ; GFX12-NEXT: S_ENDPGM 0418 $vgpr0, $sgpr2_sgpr3 = V_SUBBREV_U32_e64_dpp $vgpr0, $vgpr1, $vgpr2, $sgpr2_sgpr3, 0, 1, 15, 15, 1, implicit $exec419 $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc420 S_ENDPGM 0421...422 423---424name: mask_hazard_div_fmas_f32425body: |426 bb.0:427 ; GFX11-LABEL: name: mask_hazard_div_fmas_f32428 ; GFX11: $vgpr0 = V_DIV_FMAS_F32_e64 0, $vgpr1, 0, $vgpr2, 0, $vgpr3, 0, 0, implicit $mode, implicit $vcc, implicit $exec429 ; GFX11-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc430 ; GFX11-NEXT: S_WAITCNT_DEPCTR 65438431 ; GFX11-NEXT: S_ENDPGM 0432 ;433 ; GFX12-LABEL: name: mask_hazard_div_fmas_f32434 ; GFX12: $vgpr0 = V_DIV_FMAS_F32_e64 0, $vgpr1, 0, $vgpr2, 0, $vgpr3, 0, 0, implicit $mode, implicit $vcc, implicit $exec435 ; GFX12-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc436 ; GFX12-NEXT: S_ENDPGM 0437 $vgpr0 = V_DIV_FMAS_F32_e64 0, $vgpr1, 0, $vgpr2, 0, $vgpr3, 0, 0, implicit $mode, implicit $vcc, implicit $exec438 $vcc = S_CSELECT_B64 -1, 0, implicit $scc439 S_ENDPGM 0440...441 442---443name: mask_hazard_div_fmas_f64444body: |445 bb.0:446 ; GFX11-LABEL: name: mask_hazard_div_fmas_f64447 ; GFX11: $vgpr0_vgpr1 = V_DIV_FMAS_F64_e64 0, $vgpr0_vgpr1, 0, $vgpr2_vgpr3, 0, $vgpr4_vgpr5, 0, 0, implicit $mode, implicit $vcc, implicit $exec448 ; GFX11-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc449 ; GFX11-NEXT: S_WAITCNT_DEPCTR 65438450 ; GFX11-NEXT: S_ENDPGM 0451 ;452 ; GFX12-LABEL: name: mask_hazard_div_fmas_f64453 ; GFX12: $vgpr0_vgpr1 = V_DIV_FMAS_F64_e64 0, $vgpr0_vgpr1, 0, $vgpr2_vgpr3, 0, $vgpr4_vgpr5, 0, 0, implicit $mode, implicit $vcc, implicit $exec454 ; GFX12-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc455 ; GFX12-NEXT: S_ENDPGM 0456 $vgpr0_vgpr1 = V_DIV_FMAS_F64_e64 0, $vgpr0_vgpr1, 0, $vgpr2_vgpr3, 0, $vgpr4_vgpr5, 0, 0, implicit $mode, implicit $vcc, implicit $exec457 $vcc = S_CSELECT_B64 -1, 0, implicit $scc458 S_ENDPGM 0459...460 461# Check low word overlap462---463name: mask_hazard_subreg1464body: |465 bb.0:466 ; GFX11-LABEL: name: mask_hazard_subreg1467 ; GFX11: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec468 ; GFX11-NEXT: $sgpr2 = S_MOV_B32 0469 ; GFX11-NEXT: S_WAITCNT_DEPCTR 65438470 ; GFX11-NEXT: S_ENDPGM 0471 ;472 ; GFX12-LABEL: name: mask_hazard_subreg1473 ; GFX12: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec474 ; GFX12-NEXT: $sgpr2 = S_MOV_B32 0475 ; GFX12-NEXT: S_ENDPGM 0476 $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec477 $sgpr2 = S_MOV_B32 0478 S_ENDPGM 0479...480 481# Check high word overlap482---483name: mask_hazard_subreg2484body: |485 bb.0:486 ; GFX11-LABEL: name: mask_hazard_subreg2487 ; GFX11: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec488 ; GFX11-NEXT: $sgpr3 = S_MOV_B32 0489 ; GFX11-NEXT: S_WAITCNT_DEPCTR 65438490 ; GFX11-NEXT: S_ENDPGM 0491 ;492 ; GFX12-LABEL: name: mask_hazard_subreg2493 ; GFX12: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec494 ; GFX12-NEXT: $sgpr3 = S_MOV_B32 0495 ; GFX12-NEXT: S_ENDPGM 0496 $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec497 $sgpr3 = S_MOV_B32 0498 S_ENDPGM 0499...500 501# Check multiple subreg overlap502---503name: mask_hazard_subreg3504body: |505 bb.0:506 ; GFX11-LABEL: name: mask_hazard_subreg3507 ; GFX11: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec508 ; GFX11-NEXT: $sgpr2 = S_MOV_B32 0509 ; GFX11-NEXT: $sgpr3 = S_MOV_B32 0510 ; GFX11-NEXT: S_WAITCNT_DEPCTR 65438511 ; GFX11-NEXT: S_ENDPGM 0512 ;513 ; GFX12-LABEL: name: mask_hazard_subreg3514 ; GFX12: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec515 ; GFX12-NEXT: $sgpr2 = S_MOV_B32 0516 ; GFX12-NEXT: $sgpr3 = S_MOV_B32 0517 ; GFX12-NEXT: S_ENDPGM 0518 $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec519 $sgpr2 = S_MOV_B32 0520 $sgpr3 = S_MOV_B32 0521 S_ENDPGM 0522...523 524# Check vcc_lo overlap525---526name: mask_hazard_subreg4527body: |528 bb.0:529 ; GCN-LABEL: name: mask_hazard_subreg4530 ; GCN: $vgpr1 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec531 ; GCN-NEXT: $vcc_lo = S_MOV_B32 0532 ; GCN-NEXT: S_WAITCNT_DEPCTR 65438533 ; GCN-NEXT: $sgpr2 = S_MOV_B32 $vcc_lo534 ; GCN-NEXT: S_ENDPGM 0535 $vgpr1 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec536 $vcc_lo = S_MOV_B32 0537 $sgpr2 = S_MOV_B32 $vcc_lo538 S_ENDPGM 0539...540 541# Check vcc_hi overlap542---543name: mask_hazard_subreg5544body: |545 bb.0:546 ; GCN-LABEL: name: mask_hazard_subreg5547 ; GCN: $vgpr1 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec548 ; GCN-NEXT: $vcc_hi = S_MOV_B32 0549 ; GCN-NEXT: S_WAITCNT_DEPCTR 65438550 ; GCN-NEXT: $sgpr2 = S_MOV_B32 $vcc_hi551 ; GCN-NEXT: S_ENDPGM 0552 $vgpr1 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec553 $vcc_hi = S_MOV_B32 0554 $sgpr2 = S_MOV_B32 $vcc_hi555 S_ENDPGM 0556...557 558# S_WAITCNT does not mitigate hazard559---560name: mask_hazard_waitcnt561body: |562 bb.0:563 ; GCN-LABEL: name: mask_hazard_waitcnt564 ; GCN: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec565 ; GCN-NEXT: S_WAITCNT 0566 ; GCN-NEXT: $sgpr0_sgpr1 = S_GETPC_B64567 ; GCN-NEXT: S_WAITCNT_DEPCTR 65438568 ; GCN-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, 0, implicit-def $scc569 ; GCN-NEXT: S_ENDPGM 0570 $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec571 S_WAITCNT 0572 $sgpr0_sgpr1 = S_GETPC_B64573 $sgpr0 = S_ADD_U32 $sgpr0, 0, implicit-def $scc574 S_ENDPGM 0575...576 577# Check implicit $exec578---579name: mask_hazard_gap1580body: |581 bb.0:582 ; GCN-LABEL: name: mask_hazard_gap1583 ; GCN: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec584 ; GCN-NEXT: $vgpr2 = V_MOV_B32_e32 0, implicit $exec585 ; GCN-NEXT: $vgpr3 = V_MOV_B32_e32 0, implicit $exec586 ; GCN-NEXT: $sgpr0_sgpr1 = S_GETPC_B64587 ; GCN-NEXT: S_WAITCNT_DEPCTR 65438588 ; GCN-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, 0, implicit-def $scc589 ; GCN-NEXT: S_ENDPGM 0590 $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec591 $vgpr2 = V_MOV_B32_e32 0, implicit $exec592 $vgpr3 = V_MOV_B32_e32 0, implicit $exec593 $sgpr0_sgpr1 = S_GETPC_B64594 $sgpr0 = S_ADD_U32 $sgpr0, 0, implicit-def $scc595 S_ENDPGM 0596...597 598# Check implicit $mode599---600name: mask_hazard_gap2601body: |602 bb.0:603 ; GCN-LABEL: name: mask_hazard_gap2604 ; GCN: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec605 ; GCN-NEXT: $vgpr2 = V_MOV_B32_e32 0, implicit $exec, implicit $mode606 ; GCN-NEXT: $sgpr0_sgpr1 = S_GETPC_B64607 ; GCN-NEXT: S_WAITCNT_DEPCTR 65438608 ; GCN-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, 0, implicit-def $scc609 ; GCN-NEXT: S_ENDPGM 0610 $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec611 $vgpr2 = V_MOV_B32_e32 0, implicit $exec, implicit $mode612 $sgpr0_sgpr1 = S_GETPC_B64613 $sgpr0 = S_ADD_U32 $sgpr0, 0, implicit-def $scc614 S_ENDPGM 0615...616 617# Check explicit $exec618---619name: mask_hazard_gap3620body: |621 bb.0:622 ; GCN-LABEL: name: mask_hazard_gap3623 ; GCN: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec624 ; GCN-NEXT: $vgpr2 = V_WRITELANE_B32 $exec_lo, 0, $vgpr2625 ; GCN-NEXT: $sgpr0_sgpr1 = S_GETPC_B64626 ; GCN-NEXT: S_WAITCNT_DEPCTR 65438627 ; GCN-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, 0, implicit-def $scc628 ; GCN-NEXT: S_ENDPGM 0629 $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec630 $vgpr2 = V_WRITELANE_B32 $exec_lo, 0, $vgpr2631 $sgpr0_sgpr1 = S_GETPC_B64632 $sgpr0 = S_ADD_U32 $sgpr0, 0, implicit-def $scc633 S_ENDPGM 0634...635 636# Different SGPR write637---638name: mask_hazard_no_hazard1639body: |640 bb.0:641 ; GCN-LABEL: name: mask_hazard_no_hazard1642 ; GCN: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec643 ; GCN-NEXT: $sgpr0 = S_MOV_B32 0644 ; GCN-NEXT: S_ENDPGM 0645 $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec646 $sgpr0 = S_MOV_B32 0647 S_ENDPGM 0648...649 650# Different SGPR write with mask read overlap651---652name: mask_hazard_no_hazard2653body: |654 bb.0:655 ; GCN-LABEL: name: mask_hazard_no_hazard2656 ; GCN: $vgpr1 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec657 ; GCN-NEXT: $sgpr0_sgpr1 = S_MOV_B64 $vcc658 ; GCN-NEXT: S_ENDPGM 0659 $vgpr1 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec660 $sgpr0_sgpr1 = S_MOV_B64 $vcc661 S_ENDPGM 0662...663 664# Overlapping VGPR write665---666name: mask_hazard_no_hazard3667body: |668 bb.0:669 ; GCN-LABEL: name: mask_hazard_no_hazard3670 ; GCN: $vgpr1 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec671 ; GCN-NEXT: $vgpr2 = V_MOV_B32_e32 0, implicit $exec672 ; GCN-NEXT: S_ENDPGM 0673 $vgpr1 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec674 $vgpr2 = V_MOV_B32_e32 0, implicit $exec675 S_ENDPGM 0676...677 678---679name: mask_hazard_cancel_hazard1680body: |681 bb.0:682 ; GCN-LABEL: name: mask_hazard_cancel_hazard1683 ; GCN: $vgpr1 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec684 ; GCN-NEXT: $vcc_lo = S_MOV_B32 0685 ; GCN-NEXT: $vcc_hi = S_MOV_B32 0686 ; GCN-NEXT: S_WAITCNT_DEPCTR 65438687 ; GCN-NEXT: $sgpr0 = S_MOV_B32 $vcc_lo688 ; GCN-NEXT: $vcc = S_MOV_B64 1689 ; GCN-NEXT: S_ENDPGM 0690 $vgpr1 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec691 $vcc_lo = S_MOV_B32 0692 $vcc_hi = S_MOV_B32 0693 $sgpr0 = S_MOV_B32 $vcc_lo694 $vcc = S_MOV_B64 1695 S_ENDPGM 0696...697 698---699name: mask_hazard_cancel_hazard2700body: |701 bb.0:702 ; GCN-LABEL: name: mask_hazard_cancel_hazard2703 ; GCN: $vgpr1 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec704 ; GCN-NEXT: $vcc = S_MOV_B64 0705 ; GCN-NEXT: S_WAITCNT_DEPCTR 65438706 ; GCN-NEXT: $sgpr0 = S_MOV_B32 $vcc_lo707 ; GCN-NEXT: $vcc = S_MOV_B64 1708 ; GCN-NEXT: S_ENDPGM 0709 $vgpr1 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec710 $vcc = S_MOV_B64 0711 $sgpr0 = S_MOV_B32 $vcc_lo712 $vcc = S_MOV_B64 1713 S_ENDPGM 0714...715 716---717name: mask_hazard_cancel_hazard3718body: |719 bb.0:720 ; GCN-LABEL: name: mask_hazard_cancel_hazard3721 ; GCN: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec722 ; GCN-NEXT: $sgpr0_sgpr1 = S_MOV_B64 0723 ; GCN-NEXT: S_WAITCNT_DEPCTR 65438724 ; GCN-NEXT: $sgpr4 = S_MOV_B32 $sgpr0725 ; GCN-NEXT: $sgpr0_sgpr1 = S_MOV_B64 1726 ; GCN-NEXT: S_ENDPGM 0727 $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec728 $sgpr0_sgpr1 = S_MOV_B64 0729 $sgpr4 = S_MOV_B32 $sgpr0730 $sgpr0_sgpr1 = S_MOV_B64 1731 S_ENDPGM 0732...733 734---735name: mask_hazard_cancel_hazard4736body: |737 bb.0:738 ; GCN-LABEL: name: mask_hazard_cancel_hazard4739 ; GCN: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec740 ; GCN-NEXT: $sgpr0 = S_MOV_B32 0741 ; GCN-NEXT: $sgpr1 = S_MOV_B32 0742 ; GCN-NEXT: S_WAITCNT_DEPCTR 65438743 ; GCN-NEXT: $sgpr4 = S_MOV_B32 $sgpr0744 ; GCN-NEXT: $sgpr0_sgpr1 = S_MOV_B64 1745 ; GCN-NEXT: S_ENDPGM 0746 $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec747 $sgpr0 = S_MOV_B32 0748 $sgpr1 = S_MOV_B32 0749 $sgpr4 = S_MOV_B32 $sgpr0750 $sgpr0_sgpr1 = S_MOV_B64 1751 S_ENDPGM 0752...753 754---755name: mask_hazard_partial_cancel1756body: |757 bb.0:758 ; GFX11-LABEL: name: mask_hazard_partial_cancel1759 ; GFX11: $vgpr1 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec760 ; GFX11-NEXT: $vcc_lo = S_MOV_B32 0761 ; GFX11-NEXT: S_WAITCNT_DEPCTR 65438762 ; GFX11-NEXT: $sgpr0 = S_MOV_B32 $vcc_lo763 ; GFX11-NEXT: $vcc = S_MOV_B64 1764 ; GFX11-NEXT: S_WAITCNT_DEPCTR 65438765 ; GFX11-NEXT: S_ENDPGM 0766 ;767 ; GFX12-LABEL: name: mask_hazard_partial_cancel1768 ; GFX12: $vgpr1 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec769 ; GFX12-NEXT: $vcc_lo = S_MOV_B32 0770 ; GFX12-NEXT: S_WAITCNT_DEPCTR 65438771 ; GFX12-NEXT: $sgpr0 = S_MOV_B32 $vcc_lo772 ; GFX12-NEXT: $vcc = S_MOV_B64 1773 ; GFX12-NEXT: S_ENDPGM 0774 $vgpr1 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec775 $vcc_lo = S_MOV_B32 0776 $sgpr0 = S_MOV_B32 $vcc_lo777 $vcc = S_MOV_B64 1778 S_ENDPGM 0779...780 781---782name: mask_hazard_partial_cancel2783body: |784 bb.0:785 ; GFX11-LABEL: name: mask_hazard_partial_cancel2786 ; GFX11: $vgpr1 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec787 ; GFX11-NEXT: $vcc_hi = S_MOV_B32 0788 ; GFX11-NEXT: S_WAITCNT_DEPCTR 65438789 ; GFX11-NEXT: $sgpr0 = S_MOV_B32 $vcc_lo790 ; GFX11-NEXT: $vcc = S_MOV_B64 1791 ; GFX11-NEXT: S_WAITCNT_DEPCTR 65438792 ; GFX11-NEXT: S_ENDPGM 0793 ;794 ; GFX12-LABEL: name: mask_hazard_partial_cancel2795 ; GFX12: $vgpr1 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec796 ; GFX12-NEXT: $vcc_hi = S_MOV_B32 0797 ; GFX12-NEXT: S_WAITCNT_DEPCTR 65438798 ; GFX12-NEXT: $sgpr0 = S_MOV_B32 $vcc_lo799 ; GFX12-NEXT: $vcc = S_MOV_B64 1800 ; GFX12-NEXT: S_ENDPGM 0801 $vgpr1 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec802 $vcc_hi = S_MOV_B32 0803 $sgpr0 = S_MOV_B32 $vcc_lo804 $vcc = S_MOV_B64 1805 S_ENDPGM 0806...807 808---809name: mask_hazard_partial_cancel3810body: |811 bb.0:812 ; GFX11-LABEL: name: mask_hazard_partial_cancel3813 ; GFX11: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec814 ; GFX11-NEXT: $sgpr0 = S_MOV_B32 0815 ; GFX11-NEXT: S_WAITCNT_DEPCTR 65438816 ; GFX11-NEXT: $sgpr3 = S_MOV_B32 $sgpr0817 ; GFX11-NEXT: $sgpr0_sgpr1 = S_MOV_B64 1818 ; GFX11-NEXT: S_WAITCNT_DEPCTR 65438819 ; GFX11-NEXT: S_ENDPGM 0820 ;821 ; GFX12-LABEL: name: mask_hazard_partial_cancel3822 ; GFX12: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec823 ; GFX12-NEXT: $sgpr0 = S_MOV_B32 0824 ; GFX12-NEXT: S_WAITCNT_DEPCTR 65438825 ; GFX12-NEXT: $sgpr3 = S_MOV_B32 $sgpr0826 ; GFX12-NEXT: $sgpr0_sgpr1 = S_MOV_B64 1827 ; GFX12-NEXT: S_ENDPGM 0828 $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec829 $sgpr0 = S_MOV_B32 0830 $sgpr3 = S_MOV_B32 $sgpr0831 $sgpr0_sgpr1 = S_MOV_B64 1832 S_ENDPGM 0833...834 835---836name: mask_hazard_partial_cancel4837body: |838 bb.0:839 ; GFX11-LABEL: name: mask_hazard_partial_cancel4840 ; GFX11: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec841 ; GFX11-NEXT: $sgpr1 = S_MOV_B32 0842 ; GFX11-NEXT: S_WAITCNT_DEPCTR 65438843 ; GFX11-NEXT: $sgpr3 = S_MOV_B32 $sgpr1844 ; GFX11-NEXT: $sgpr0_sgpr1 = S_MOV_B64 1845 ; GFX11-NEXT: S_WAITCNT_DEPCTR 65438846 ; GFX11-NEXT: S_ENDPGM 0847 ;848 ; GFX12-LABEL: name: mask_hazard_partial_cancel4849 ; GFX12: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec850 ; GFX12-NEXT: $sgpr1 = S_MOV_B32 0851 ; GFX12-NEXT: S_WAITCNT_DEPCTR 65438852 ; GFX12-NEXT: $sgpr3 = S_MOV_B32 $sgpr1853 ; GFX12-NEXT: $sgpr0_sgpr1 = S_MOV_B64 1854 ; GFX12-NEXT: S_ENDPGM 0855 $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec856 $sgpr1 = S_MOV_B32 0857 $sgpr3 = S_MOV_B32 $sgpr1858 $sgpr0_sgpr1 = S_MOV_B64 1859 S_ENDPGM 0860...861 862---863name: mask_hazard_valu_readlane1864body: |865 bb.0:866 ; GFX11-LABEL: name: mask_hazard_valu_readlane1867 ; GFX11: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec868 ; GFX11-NEXT: $sgpr2 = V_READLANE_B32 $vgpr3, 0869 ; GFX11-NEXT: S_WAITCNT_DEPCTR 61855870 ; GFX11-NEXT: S_ENDPGM 0871 ;872 ; GFX12-LABEL: name: mask_hazard_valu_readlane1873 ; GFX12: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec874 ; GFX12-NEXT: $sgpr2 = V_READLANE_B32 $vgpr3, 0875 ; GFX12-NEXT: S_ENDPGM 0876 $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec877 $sgpr2 = V_READLANE_B32 $vgpr3, 0878 S_ENDPGM 0879...880 881---882name: mask_hazard_valu_readlane2883body: |884 bb.0:885 ; GFX11-LABEL: name: mask_hazard_valu_readlane2886 ; GFX11: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec887 ; GFX11-NEXT: $sgpr3 = V_READLANE_B32 $vgpr3, 1888 ; GFX11-NEXT: S_WAITCNT_DEPCTR 61855889 ; GFX11-NEXT: S_ENDPGM 0890 ;891 ; GFX12-LABEL: name: mask_hazard_valu_readlane2892 ; GFX12: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec893 ; GFX12-NEXT: $sgpr3 = V_READLANE_B32 $vgpr3, 1894 ; GFX12-NEXT: S_ENDPGM 0895 $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec896 $sgpr3 = V_READLANE_B32 $vgpr3, 1897 S_ENDPGM 0898...899 900---901name: mask_hazard_valu_readlane3902body: |903 bb.0:904 ; GFX11-LABEL: name: mask_hazard_valu_readlane3905 ; GFX11: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec906 ; GFX11-NEXT: $sgpr2 = V_READLANE_B32 $vgpr3, 0907 ; GFX11-NEXT: $sgpr3 = V_READLANE_B32 $vgpr3, 1908 ; GFX11-NEXT: S_WAITCNT_DEPCTR 61855909 ; GFX11-NEXT: S_ENDPGM 0910 ;911 ; GFX12-LABEL: name: mask_hazard_valu_readlane3912 ; GFX12: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec913 ; GFX12-NEXT: $sgpr2 = V_READLANE_B32 $vgpr3, 0914 ; GFX12-NEXT: $sgpr3 = V_READLANE_B32 $vgpr3, 1915 ; GFX12-NEXT: S_ENDPGM 0916 $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec917 $sgpr2 = V_READLANE_B32 $vgpr3, 0918 $sgpr3 = V_READLANE_B32 $vgpr3, 1919 S_ENDPGM 0920...921 922---923name: mask_hazard_valu_readfirstlane924body: |925 bb.0:926 ; GFX11-LABEL: name: mask_hazard_valu_readfirstlane927 ; GFX11: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec928 ; GFX11-NEXT: $sgpr2 = V_READFIRSTLANE_B32 $vgpr3, implicit $exec929 ; GFX11-NEXT: S_WAITCNT_DEPCTR 61855930 ; GFX11-NEXT: S_ENDPGM 0931 ;932 ; GFX12-LABEL: name: mask_hazard_valu_readfirstlane933 ; GFX12: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec934 ; GFX12-NEXT: $sgpr2 = V_READFIRSTLANE_B32 $vgpr3, implicit $exec935 ; GFX12-NEXT: S_ENDPGM 0936 $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec937 $sgpr2 = V_READFIRSTLANE_B32 $vgpr3, implicit $exec938 S_ENDPGM 0939...940 941---942name: mask_hazard_valu_vcmp_vcc943body: |944 bb.0:945 ; GFX11-LABEL: name: mask_hazard_valu_vcmp_vcc946 ; GFX11: $vgpr1 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec947 ; GFX11-NEXT: V_CMP_NE_U32_e32 0, $vgpr5, implicit-def $vcc, implicit $exec948 ; GFX11-NEXT: S_WAITCNT_DEPCTR 65437949 ; GFX11-NEXT: S_ENDPGM 0950 ;951 ; GFX12-LABEL: name: mask_hazard_valu_vcmp_vcc952 ; GFX12: $vgpr1 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec953 ; GFX12-NEXT: V_CMP_NE_U32_e32 0, $vgpr5, implicit-def $vcc, implicit $exec954 ; GFX12-NEXT: S_ENDPGM 0955 $vgpr1 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec956 V_CMP_NE_U32_e32 0, $vgpr5, implicit-def $vcc, implicit $exec957 S_ENDPGM 0958...959 960---961name: mask_hazard_valu_vcmp_sgpr962body: |963 bb.0:964 ; GFX11-LABEL: name: mask_hazard_valu_vcmp_sgpr965 ; GFX11: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec966 ; GFX11-NEXT: $sgpr2_sgpr3 = V_CMP_EQ_U32_e64 3, $vgpr5, implicit $exec967 ; GFX11-NEXT: S_WAITCNT_DEPCTR 61855968 ; GFX11-NEXT: S_ENDPGM 0969 ;970 ; GFX12-LABEL: name: mask_hazard_valu_vcmp_sgpr971 ; GFX12: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec972 ; GFX12-NEXT: $sgpr2_sgpr3 = V_CMP_EQ_U32_e64 3, $vgpr5, implicit $exec973 ; GFX12-NEXT: S_ENDPGM 0974 $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec975 $sgpr2_sgpr3 = V_CMP_EQ_U32_e64 3, $vgpr5, implicit $exec976 S_ENDPGM 0977...978 979---980name: mask_hazard_combine1981body: |982 bb.0:983 ; GFX11-LABEL: name: mask_hazard_combine1984 ; GFX11: $vgpr3 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec985 ; GFX11-NEXT: $vgpr4 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec986 ; GFX11-NEXT: $vgpr5 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec987 ; GFX11-NEXT: V_CMP_NE_U32_e32 0, $vgpr5, implicit-def $vcc, implicit $exec988 ; GFX11-NEXT: $sgpr0 = S_MOV_B32 0989 ; GFX11-NEXT: $sgpr1 = S_MOV_B32 0990 ; GFX11-NEXT: $sgpr2_sgpr3 = V_CMP_EQ_U32_e64 3, $vgpr5, implicit $exec991 ; GFX11-NEXT: S_WAITCNT_DEPCTR 61852992 ; GFX11-NEXT: S_ENDPGM 0993 ;994 ; GFX12-LABEL: name: mask_hazard_combine1995 ; GFX12: $vgpr3 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec996 ; GFX12-NEXT: $vgpr4 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec997 ; GFX12-NEXT: $vgpr5 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec998 ; GFX12-NEXT: V_CMP_NE_U32_e32 0, $vgpr5, implicit-def $vcc, implicit $exec999 ; GFX12-NEXT: $sgpr0 = S_MOV_B32 01000 ; GFX12-NEXT: $sgpr1 = S_MOV_B32 01001 ; GFX12-NEXT: $sgpr2_sgpr3 = V_CMP_EQ_U32_e64 3, $vgpr5, implicit $exec1002 ; GFX12-NEXT: S_ENDPGM 01003 $vgpr3 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec1004 $vgpr4 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec1005 $vgpr5 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec1006 V_CMP_NE_U32_e32 0, $vgpr5, implicit-def $vcc, implicit $exec1007 $sgpr0 = S_MOV_B32 01008 $sgpr1 = S_MOV_B32 01009 $sgpr2_sgpr3 = V_CMP_EQ_U32_e64 3, $vgpr5, implicit $exec1010 S_ENDPGM 01011...1012 1013---1014name: mask_hazard_combine21015body: |1016 bb.0:1017 ; GFX11-LABEL: name: mask_hazard_combine21018 ; GFX11: $vgpr3 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec1019 ; GFX11-NEXT: $vgpr4 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec1020 ; GFX11-NEXT: $vgpr5 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec1021 ; GFX11-NEXT: V_CMP_NE_U32_e32 0, $vgpr5, implicit-def $vcc, implicit $exec1022 ; GFX11-NEXT: $sgpr0 = S_MOV_B32 01023 ; GFX11-NEXT: S_WAITCNT_DEPCTR 654361024 ; GFX11-NEXT: $sgpr1 = S_MOV_B32 $sgpr41025 ; GFX11-NEXT: $sgpr2_sgpr3 = V_CMP_EQ_U32_e64 3, $vgpr5, implicit $exec1026 ; GFX11-NEXT: S_WAITCNT_DEPCTR 618541027 ; GFX11-NEXT: S_ENDPGM 01028 ;1029 ; GFX12-LABEL: name: mask_hazard_combine21030 ; GFX12: $vgpr3 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec1031 ; GFX12-NEXT: $vgpr4 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec1032 ; GFX12-NEXT: $vgpr5 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec1033 ; GFX12-NEXT: V_CMP_NE_U32_e32 0, $vgpr5, implicit-def $vcc, implicit $exec1034 ; GFX12-NEXT: $sgpr0 = S_MOV_B32 01035 ; GFX12-NEXT: $sgpr1 = S_MOV_B32 $sgpr41036 ; GFX12-NEXT: $sgpr2_sgpr3 = V_CMP_EQ_U32_e64 3, $vgpr5, implicit $exec1037 ; GFX12-NEXT: S_ENDPGM 01038 $vgpr3 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec1039 $vgpr4 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec1040 $vgpr5 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec1041 V_CMP_NE_U32_e32 0, $vgpr5, implicit-def $vcc, implicit $exec1042 $sgpr0 = S_MOV_B32 01043 $sgpr1 = S_MOV_B32 $sgpr41044 $sgpr2_sgpr3 = V_CMP_EQ_U32_e64 3, $vgpr5, implicit $exec1045 S_ENDPGM 01046...1047 1048---1049name: mask_hazard_combine31050body: |1051 bb.0:1052 ; GFX11-LABEL: name: mask_hazard_combine31053 ; GFX11: $vgpr3 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec1054 ; GFX11-NEXT: $vgpr4 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec1055 ; GFX11-NEXT: $vgpr5 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec1056 ; GFX11-NEXT: V_CMP_NE_U32_e32 0, $vgpr5, implicit-def $vcc, implicit $exec1057 ; GFX11-NEXT: S_WAITCNT_DEPCTR 654371058 ; GFX11-NEXT: $sgpr0_sgpr1 = V_CMP_EQ_U32_e64 2, $sgpr10, implicit $exec1059 ; GFX11-NEXT: S_WAITCNT_DEPCTR 618551060 ; GFX11-NEXT: $sgpr2_sgpr3 = V_CMP_EQ_U32_e64 3, $sgpr10, implicit $exec1061 ; GFX11-NEXT: S_WAITCNT_DEPCTR 618551062 ; GFX11-NEXT: S_ENDPGM 01063 ;1064 ; GFX12-LABEL: name: mask_hazard_combine31065 ; GFX12: $vgpr3 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec1066 ; GFX12-NEXT: $vgpr4 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec1067 ; GFX12-NEXT: $vgpr5 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec1068 ; GFX12-NEXT: V_CMP_NE_U32_e32 0, $vgpr5, implicit-def $vcc, implicit $exec1069 ; GFX12-NEXT: $sgpr0_sgpr1 = V_CMP_EQ_U32_e64 2, $sgpr10, implicit $exec1070 ; GFX12-NEXT: $sgpr2_sgpr3 = V_CMP_EQ_U32_e64 3, $sgpr10, implicit $exec1071 ; GFX12-NEXT: S_ENDPGM 01072 $vgpr3 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec1073 $vgpr4 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec1074 $vgpr5 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec1075 V_CMP_NE_U32_e32 0, $vgpr5, implicit-def $vcc, implicit $exec1076 $sgpr0_sgpr1 = V_CMP_EQ_U32_e64 2, $sgpr10, implicit $exec1077 $sgpr2_sgpr3 = V_CMP_EQ_U32_e64 3, $sgpr10, implicit $exec1078 S_ENDPGM 01079...1080 1081---1082name: mask_hazard_combine41083body: |1084 bb.0:1085 ; GFX11-LABEL: name: mask_hazard_combine41086 ; GFX11: $vgpr3 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec1087 ; GFX11-NEXT: $vgpr4 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec1088 ; GFX11-NEXT: $vgpr5 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec1089 ; GFX11-NEXT: V_CMP_NE_U32_e32 0, $vgpr5, implicit-def $vcc, implicit $exec1090 ; GFX11-NEXT: S_WAITCNT_DEPCTR 654371091 ; GFX11-NEXT: $sgpr0_sgpr1 = V_CMP_EQ_U32_e64 2, $sgpr10, implicit $exec1092 ; GFX11-NEXT: S_WAITCNT_DEPCTR 618551093 ; GFX11-NEXT: $sgpr4_sgpr5 = S_MOV_B64 $vcc1094 ; GFX11-NEXT: $sgpr2_sgpr3 = V_CMP_EQ_U32_e64 3, $sgpr10, implicit $exec1095 ; GFX11-NEXT: S_WAITCNT_DEPCTR 618551096 ; GFX11-NEXT: S_ENDPGM 01097 ;1098 ; GFX12-LABEL: name: mask_hazard_combine41099 ; GFX12: $vgpr3 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec1100 ; GFX12-NEXT: $vgpr4 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec1101 ; GFX12-NEXT: $vgpr5 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec1102 ; GFX12-NEXT: V_CMP_NE_U32_e32 0, $vgpr5, implicit-def $vcc, implicit $exec1103 ; GFX12-NEXT: $sgpr0_sgpr1 = V_CMP_EQ_U32_e64 2, $sgpr10, implicit $exec1104 ; GFX12-NEXT: $sgpr4_sgpr5 = S_MOV_B64 $vcc1105 ; GFX12-NEXT: $sgpr2_sgpr3 = V_CMP_EQ_U32_e64 3, $sgpr10, implicit $exec1106 ; GFX12-NEXT: S_ENDPGM 01107 $vgpr3 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec1108 $vgpr4 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec1109 $vgpr5 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec1110 V_CMP_NE_U32_e32 0, $vgpr5, implicit-def $vcc, implicit $exec1111 $sgpr0_sgpr1 = V_CMP_EQ_U32_e64 2, $sgpr10, implicit $exec1112 $sgpr4_sgpr5 = S_MOV_B64 $vcc1113 $sgpr2_sgpr3 = V_CMP_EQ_U32_e64 3, $sgpr10, implicit $exec1114 S_ENDPGM 01115...1116 1117---1118name: mask_hazard_combine51119body: |1120 bb.0:1121 ; GFX11-LABEL: name: mask_hazard_combine51122 ; GFX11: $vgpr3 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec1123 ; GFX11-NEXT: $vgpr4 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec1124 ; GFX11-NEXT: $vgpr5 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec1125 ; GFX11-NEXT: V_CMP_NE_U32_e32 0, $vgpr5, implicit-def $vcc, implicit $exec1126 ; GFX11-NEXT: S_WAITCNT_DEPCTR 654371127 ; GFX11-NEXT: $sgpr0_sgpr1 = V_CMP_EQ_U32_e64 2, $sgpr10, implicit $exec1128 ; GFX11-NEXT: S_WAITCNT_DEPCTR 618551129 ; GFX11-NEXT: $sgpr5 = S_MOV_B32 $sgpr11130 ; GFX11-NEXT: $sgpr2_sgpr3 = V_CMP_EQ_U32_e64 3, $sgpr10, implicit $exec1131 ; GFX11-NEXT: S_WAITCNT_DEPCTR 618551132 ; GFX11-NEXT: S_ENDPGM 01133 ;1134 ; GFX12-LABEL: name: mask_hazard_combine51135 ; GFX12: $vgpr3 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec1136 ; GFX12-NEXT: $vgpr4 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec1137 ; GFX12-NEXT: $vgpr5 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec1138 ; GFX12-NEXT: V_CMP_NE_U32_e32 0, $vgpr5, implicit-def $vcc, implicit $exec1139 ; GFX12-NEXT: $sgpr0_sgpr1 = V_CMP_EQ_U32_e64 2, $sgpr10, implicit $exec1140 ; GFX12-NEXT: $sgpr5 = S_MOV_B32 $sgpr11141 ; GFX12-NEXT: $sgpr2_sgpr3 = V_CMP_EQ_U32_e64 3, $sgpr10, implicit $exec1142 ; GFX12-NEXT: S_ENDPGM 01143 $vgpr3 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec1144 $vgpr4 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec1145 $vgpr5 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec1146 V_CMP_NE_U32_e32 0, $vgpr5, implicit-def $vcc, implicit $exec1147 $sgpr0_sgpr1 = V_CMP_EQ_U32_e64 2, $sgpr10, implicit $exec1148 $sgpr5 = S_MOV_B32 $sgpr11149 $sgpr2_sgpr3 = V_CMP_EQ_U32_e64 3, $sgpr10, implicit $exec1150 S_ENDPGM 01151...1152