1055 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -verify-machineinstrs -run-pass post-RA-hazard-rec,amdgpu-wait-sgpr-hazards -amdgpu-sgpr-hazard-boundary-cull=0 -o - %s | FileCheck -check-prefixes=GCN,NOBC,NOMEMC %s3# RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -verify-machineinstrs -run-pass post-RA-hazard-rec,amdgpu-wait-sgpr-hazards -amdgpu-sgpr-hazard-boundary-cull=1 -o - %s | FileCheck -check-prefixes=GCN,BC,NOMEMC %s4# RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -verify-machineinstrs -run-pass post-RA-hazard-rec,amdgpu-wait-sgpr-hazards -amdgpu-sgpr-hazard-boundary-cull=0 -amdgpu-sgpr-hazard-mem-wait-cull=1 -amdgpu-sgpr-hazard-mem-wait-cull-threshold=1 -o - %s | FileCheck -check-prefixes=GCN,NOBC,MEMC %s5 6--- |7 @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>]8 9 define amdgpu_gs void @hazard_getpc1() { ret void }10 define amdgpu_gs void @hazard_getpc2() { ret void }11 define amdgpu_gs void @hazard_getpc3() { ret void }12 define amdgpu_gs void @hazard_getpc4() { ret void }13 define amdgpu_gs void @hazard_vcc1() { ret void }14 define amdgpu_gs void @hazard_vcc2() { ret void }15 define amdgpu_gs void @hazard_vcc3() { ret void }16 define amdgpu_gs void @hazard_merge_vcc() { ret void }17 define amdgpu_gs void @hazard_addc1() { ret void }18 define amdgpu_gs void @hazard_addc2() { ret void }19 define amdgpu_gs void @hazard_addc3() { ret void }20 define amdgpu_gs void @hazard_addc4() { ret void }21 define amdgpu_gs void @hazard_addc5() { ret void }22 define amdgpu_gs void @hazard_addc6() { ret void }23 define amdgpu_gs void @hazard_vaddc1() { ret void }24 define amdgpu_gs void @hazard_gap1() { ret void }25 define amdgpu_gs void @hazard_gap2() { ret void }26 define amdgpu_gs void @hazard_gap3() { ret void }27 define amdgpu_gs void @hazard_gap4_no_hazard() { ret void }28 define amdgpu_gs void @hazard_valu_write1_no_hazard() { ret void }29 define amdgpu_gs void @hazard_post_order1() { ret void }30 define amdgpu_gs void @hazard_post_order2() { ret void }31 define amdgpu_gs void @hazard_post_order_cycle() { ret void }32 define amdgpu_cs void @hazard_calls() { ret void }33 define void @hazard_callee1() { ret void }34 define void @hazard_callee2() { ret void }35 define amdgpu_cs void @hazard_carry_vcc() { ret void }36 define amdgpu_cs void @hazard_carry_vcc_no_hazard() { ret void }37 define amdgpu_cs void @hazard_carry_sgpr() { ret void }38 define amdgpu_cs void @hazard_carry_sgpr_no_hazard1() { ret void }39 define amdgpu_cs void @hazard_carry_sgpr_no_hazard2() { ret void }40 define amdgpu_cs void @hazard_carry_sgpr_no_hazard3() { ret void }41 define amdgpu_cs void @hazard_cull_vmem() { ret void }42 define amdgpu_cs void @hazard_cull_sample() { ret void }43 define amdgpu_cs void @hazard_cull_bvh() { ret void }44 define amdgpu_cs void @hazard_nocull_scratch() { ret void }45 define amdgpu_cs void @hazard_cull_global() { ret void }46 define amdgpu_cs void @hazard_nocull_flat() { ret void }47 define amdgpu_cs void @hazard_existing_cull() { ret void }48...49 50---51name: hazard_getpc152body: |53 bb.0:54 ; GCN-LABEL: name: hazard_getpc155 ; GCN: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0, implicit $exec56 ; GCN-NEXT: $sgpr0_sgpr1 = S_GETPC_B6457 ; GCN-NEXT: S_WAITCNT_DEPCTR 6543858 ; GCN-NEXT: $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc59 ; GCN-NEXT: S_ENDPGM 060 $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0, implicit $exec61 $sgpr0_sgpr1 = S_GETPC_B6462 $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc63 S_ENDPGM 064...65 66---67name: hazard_getpc268body: |69 bb.0:70 ; GCN-LABEL: name: hazard_getpc271 ; GCN: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr1, implicit $exec72 ; GCN-NEXT: $sgpr0_sgpr1 = S_GETPC_B6473 ; GCN-NEXT: S_WAITCNT_DEPCTR 6543874 ; GCN-NEXT: $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc75 ; GCN-NEXT: S_ENDPGM 076 $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr1, implicit $exec77 $sgpr0_sgpr1 = S_GETPC_B6478 $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc79 S_ENDPGM 080...81 82---83name: hazard_getpc384body: |85 bb.0:86 ; GCN-LABEL: name: hazard_getpc387 ; GCN: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0, implicit $exec88 ; GCN-NEXT: BUNDLE implicit-def $sgpr0_sgpr1 {89 ; GCN-NEXT: $sgpr0_sgpr1 = S_GETPC_B6490 ; GCN-NEXT: S_WAITCNT_DEPCTR 6543891 ; GCN-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, target-flags(amdgpu-rel32-lo) @mem + 8, implicit-def $scc92 ; GCN-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, target-flags(amdgpu-rel32-hi) @mem + 16, implicit-def $scc, implicit $scc93 ; GCN-NEXT: }94 ; GCN-NEXT: S_ENDPGM 095 $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0, implicit $exec96 BUNDLE implicit-def $sgpr0_sgpr1 {97 $sgpr0_sgpr1 = S_GETPC_B6498 $sgpr0 = S_ADD_U32 $sgpr0, target-flags(amdgpu-rel32-lo) @mem + 4, implicit-def $scc99 $sgpr1 = S_ADDC_U32 $sgpr1, target-flags(amdgpu-rel32-hi) @mem + 12, implicit-def $scc, implicit $scc100 }101 S_ENDPGM 0102...103 104---105name: hazard_getpc4106body: |107 bb.0:108 ; GCN-LABEL: name: hazard_getpc4109 ; GCN: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0, implicit $exec110 ; GCN-NEXT: BUNDLE implicit-def $sgpr0_sgpr1 {111 ; GCN-NEXT: $sgpr0_sgpr1 = S_GETPC_B64112 ; GCN-NEXT: S_WAITCNT_DEPCTR 65438113 ; GCN-NEXT: $sgpr1 = S_SEXT_I32_I16 $sgpr1114 ; GCN-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, target-flags(amdgpu-rel32-lo) @mem + 12, implicit-def $scc115 ; GCN-NEXT: S_WAITCNT_DEPCTR 65438116 ; GCN-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, target-flags(amdgpu-rel32-hi) @mem + 24, implicit-def $scc, implicit $scc117 ; GCN-NEXT: }118 ; GCN-NEXT: S_ENDPGM 0119 $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0, implicit $exec120 BUNDLE implicit-def $sgpr0_sgpr1 {121 $sgpr0_sgpr1 = S_GETPC_B64122 $sgpr1 = S_SEXT_I32_I16 $sgpr1123 $sgpr0 = S_ADD_U32 $sgpr0, target-flags(amdgpu-rel32-lo) @mem + 8, implicit-def $scc124 $sgpr1 = S_ADDC_U32 $sgpr1, target-flags(amdgpu-rel32-hi) @mem + 16, implicit-def $scc, implicit $scc125 }126 S_ENDPGM 0127...128 129---130name: hazard_vcc1131body: |132 bb.0:133 ; GCN-LABEL: name: hazard_vcc1134 ; GCN: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2, implicit $exec135 ; GCN-NEXT: $sgpr3 = S_CSELECT_B32 -1, 0, implicit $scc136 ; GCN-NEXT: S_WAITCNT_DEPCTR 65438137 ; GCN-NEXT: $sgpr4 = S_ADD_U32 $sgpr3, 0, implicit-def $scc138 ; GCN-NEXT: S_ENDPGM 0139 $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2, implicit $exec140 $sgpr3 = S_CSELECT_B32 -1, 0, implicit $scc141 $sgpr4 = S_ADD_U32 $sgpr3, 0, implicit-def $scc142 S_ENDPGM 0143...144 145---146name: hazard_vcc2147body: |148 bb.0:149 ; GCN-LABEL: name: hazard_vcc2150 ; GCN: $vgpr1 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc_lo, implicit $exec151 ; GCN-NEXT: $vcc_lo = S_CSELECT_B32 -1, 0, implicit $scc152 ; GCN-NEXT: S_WAITCNT_DEPCTR 65438153 ; GCN-NEXT: $sgpr4 = S_ADD_U32 $vcc_lo, 0, implicit-def $scc154 ; GCN-NEXT: S_ENDPGM 0155 $vgpr1 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec156 $vcc_lo = S_CSELECT_B32 -1, 0, implicit $scc157 $sgpr4 = S_ADD_U32 $vcc_lo, 0, implicit-def $scc158 S_ENDPGM 0159...160 161---162name: hazard_vcc3163body: |164 bb.0:165 ; GCN-LABEL: name: hazard_vcc3166 ; GCN: $vgpr1 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc_lo, implicit $exec167 ; GCN-NEXT: $vcc_lo = S_CSELECT_B32 -1, 0, implicit $scc168 ; GCN-NEXT: S_WAITCNT_DEPCTR 65438169 ; GCN-NEXT: $vgpr3 = V_CNDMASK_B32_e32 $vgpr4, $vgpr5, implicit $vcc_lo, implicit $exec170 ; GCN-NEXT: S_ENDPGM 0171 $vgpr1 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec172 $vcc_lo = S_CSELECT_B32 -1, 0, implicit $scc173 $vgpr3 = V_CNDMASK_B32_e32 $vgpr4, $vgpr5, implicit $vcc, implicit $exec174 S_ENDPGM 0175...176 177---178name: hazard_merge_vcc179body: |180 ; GCN-LABEL: name: hazard_merge_vcc181 ; GCN: bb.0:182 ; GCN-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)183 ; GCN-NEXT: {{ $}}184 ; GCN-NEXT: $vgpr1 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc_lo, implicit $exec185 ; GCN-NEXT: S_CBRANCH_SCC0 %bb.1, implicit $scc186 ; GCN-NEXT: S_BRANCH %bb.2187 ; GCN-NEXT: {{ $}}188 ; GCN-NEXT: bb.1:189 ; GCN-NEXT: successors: %bb.3(0x80000000)190 ; GCN-NEXT: {{ $}}191 ; GCN-NEXT: $vcc_lo = S_CSELECT_B32 -1, 0, implicit $scc192 ; GCN-NEXT: S_BRANCH %bb.3193 ; GCN-NEXT: {{ $}}194 ; GCN-NEXT: bb.2:195 ; GCN-NEXT: successors: %bb.3(0x80000000)196 ; GCN-NEXT: {{ $}}197 ; GCN-NEXT: $vcc_lo = V_CMP_EQ_F32_e64 0, $vgpr0, 0, $vgpr1, 1, implicit $mode, implicit $exec198 ; GCN-NEXT: S_BRANCH %bb.3199 ; GCN-NEXT: {{ $}}200 ; GCN-NEXT: bb.3:201 ; GCN-NEXT: S_WAITCNT_DEPCTR 65436202 ; GCN-NEXT: $vgpr3 = V_CNDMASK_B32_e32 $vgpr4, $vgpr5, implicit $vcc_lo, implicit $exec203 ; GCN-NEXT: S_ENDPGM 0204 bb.0:205 $vgpr1 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec206 S_CBRANCH_SCC0 %bb.1, implicit $scc207 S_BRANCH %bb.2208 bb.1:209 $vcc_lo = S_CSELECT_B32 -1, 0, implicit $scc210 S_BRANCH %bb.3211 bb.2:212 $vcc_lo = V_CMP_EQ_F32_e64 0, $vgpr0, 0, $vgpr1, 1, implicit $mode, implicit $exec213 S_BRANCH %bb.3214 bb.3:215 $vgpr3 = V_CNDMASK_B32_e32 $vgpr4, $vgpr5, implicit $vcc, implicit $exec216 S_ENDPGM 0217...218 219---220name: hazard_addc1221body: |222 bb.0:223 ; GCN-LABEL: name: hazard_addc1224 ; GCN: $vgpr1, $vcc_lo = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec225 ; GCN-NEXT: $sgpr0 = S_CSELECT_B32 -1, 0, implicit $scc226 ; GCN-NEXT: S_WAITCNT_DEPCTR 65438227 ; GCN-NEXT: $sgpr2 = S_ADD_U32 $sgpr0, 0, implicit-def $scc228 ; GCN-NEXT: S_ENDPGM 0229 $vgpr1, $vcc_lo = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec230 $sgpr0 = S_CSELECT_B32 -1, 0, implicit $scc231 $sgpr2 = S_ADD_U32 $sgpr0, 0, implicit-def $scc232 S_ENDPGM 0233...234 235---236name: hazard_addc2237body: |238 bb.0:239 ; GCN-LABEL: name: hazard_addc2240 ; GCN: $vgpr1, $vcc_lo = V_ADDC_U32_e64 0, $vgpr1, $sgpr1, 0, implicit $exec241 ; GCN-NEXT: $sgpr0 = S_CSELECT_B32 -1, 0, implicit $scc242 ; GCN-NEXT: S_WAITCNT_DEPCTR 65438243 ; GCN-NEXT: $sgpr2 = S_ADD_U32 $sgpr0, 0, implicit-def $scc244 ; GCN-NEXT: S_ENDPGM 0245 $vgpr1, $vcc_lo = V_ADDC_U32_e64 0, $vgpr1, $sgpr1, 0, implicit $exec246 $sgpr0 = S_CSELECT_B32 -1, 0, implicit $scc247 $sgpr2 = S_ADD_U32 $sgpr0, 0, implicit-def $scc248 S_ENDPGM 0249...250 251---252name: hazard_addc3253body: |254 bb.0:255 ; GCN-LABEL: name: hazard_addc3256 ; GCN: $vgpr1, $vcc_lo = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec257 ; GCN-NEXT: $sgpr1 = S_CSELECT_B32 -1, 0, implicit $scc258 ; GCN-NEXT: S_WAITCNT_DEPCTR 65438259 ; GCN-NEXT: $sgpr2 = S_ADD_U32 $sgpr1, 0, implicit-def $scc260 ; GCN-NEXT: S_ENDPGM 0261 $vgpr1, $vcc_lo = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec262 $sgpr1 = S_CSELECT_B32 -1, 0, implicit $scc263 $sgpr2 = S_ADD_U32 $sgpr1, 0, implicit-def $scc264 S_ENDPGM 0265...266 267---268name: hazard_addc4269body: |270 bb.0:271 ; GCN-LABEL: name: hazard_addc4272 ; GCN: $vgpr1, $vcc_lo = V_ADDC_U32_e64 0, $vgpr1, $sgpr3, 0, implicit $exec273 ; GCN-NEXT: $sgpr3 = S_CSELECT_B32 -1, 0, implicit $scc274 ; GCN-NEXT: S_WAITCNT_DEPCTR 65438275 ; GCN-NEXT: $sgpr2 = S_ADD_U32 $sgpr3, 0, implicit-def $scc276 ; GCN-NEXT: S_ENDPGM 0277 $vgpr1, $vcc_lo = V_ADDC_U32_e64 0, $vgpr1, $sgpr3, 0, implicit $exec278 $sgpr3 = S_CSELECT_B32 -1, 0, implicit $scc279 $sgpr2 = S_ADD_U32 $sgpr3, 0, implicit-def $scc280 S_ENDPGM 0281...282 283---284name: hazard_addc5285body: |286 bb.0:287 ; GCN-LABEL: name: hazard_addc5288 ; GCN: $vgpr1, $vcc_lo = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec289 ; GCN-NEXT: $sgpr16 = S_MOV_B32 0290 ; GCN-NEXT: $sgpr32 = S_MOV_B32 0291 ; GCN-NEXT: $sgpr1 = S_CSELECT_B32 -1, 0, implicit $scc292 ; GCN-NEXT: S_WAITCNT_DEPCTR 65438293 ; GCN-NEXT: $sgpr2 = S_ADD_U32 $sgpr1, 0, implicit-def $scc294 ; GCN-NEXT: S_ENDPGM 0295 $vgpr1, $vcc_lo = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec296 $sgpr16 = S_MOV_B32 0297 $sgpr32 = S_MOV_B32 0298 $sgpr1 = S_CSELECT_B32 -1, 0, implicit $scc299 $sgpr2 = S_ADD_U32 $sgpr1, 0, implicit-def $scc300 S_ENDPGM 0301...302 303---304name: hazard_addc6305body: |306 bb.0:307 ; GCN-LABEL: name: hazard_addc6308 ; GCN: $vgpr1, $vcc_lo = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec309 ; GCN-NEXT: $sgpr16 = S_MOV_B32 0310 ; GCN-NEXT: $sgpr32 = S_MOV_B32 0311 ; GCN-NEXT: $sgpr48 = S_MOV_B32 0312 ; GCN-NEXT: $sgpr80 = S_MOV_B32 0313 ; GCN-NEXT: $sgpr96 = S_MOV_B32 0314 ; GCN-NEXT: $sgpr1 = S_CSELECT_B32 -1, 0, implicit $scc315 ; GCN-NEXT: S_WAITCNT_DEPCTR 65438316 ; GCN-NEXT: $sgpr2 = S_ADD_U32 $sgpr1, 0, implicit-def $scc317 ; GCN-NEXT: S_ENDPGM 0318 $vgpr1, $vcc_lo = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec319 $sgpr16 = S_MOV_B32 0320 $sgpr32 = S_MOV_B32 0321 $sgpr48 = S_MOV_B32 0322 $sgpr80 = S_MOV_B32 0323 $sgpr96 = S_MOV_B32 0324 $sgpr1 = S_CSELECT_B32 -1, 0, implicit $scc325 $sgpr2 = S_ADD_U32 $sgpr1, 0, implicit-def $scc326 S_ENDPGM 0327...328 329---330name: hazard_vaddc1331body: |332 bb.0:333 ; GCN-LABEL: name: hazard_vaddc1334 ; GCN: $vgpr1, $vcc_lo = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec335 ; GCN-NEXT: $sgpr1 = S_CSELECT_B32 -1, 0, implicit $scc336 ; GCN-NEXT: S_WAITCNT_DEPCTR 65438337 ; GCN-NEXT: $vgpr2, $vcc_lo = V_ADDC_U32_e64 0, $vgpr1, $sgpr1, 0, implicit $exec338 ; GCN-NEXT: S_ENDPGM 0339 $vgpr1, $vcc_lo = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec340 $sgpr1 = S_CSELECT_B32 -1, 0, implicit $scc341 $vgpr2, $vcc_lo = V_ADDC_U32_e64 0, $vgpr1, $sgpr1, 0, implicit $exec342 S_ENDPGM 0343...344 345---346name: hazard_gap1347body: |348 bb.0:349 ; GCN-LABEL: name: hazard_gap1350 ; GCN: $vgpr1, $vcc_lo = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec351 ; GCN-NEXT: S_NOP 0352 ; GCN-NEXT: S_NOP 0353 ; GCN-NEXT: S_NOP 0354 ; GCN-NEXT: S_NOP 0355 ; GCN-NEXT: S_NOP 0356 ; GCN-NEXT: S_NOP 0357 ; GCN-NEXT: S_NOP 0358 ; GCN-NEXT: S_NOP 0359 ; GCN-NEXT: $sgpr1 = S_CSELECT_B32 -1, 0, implicit $scc360 ; GCN-NEXT: S_WAITCNT_DEPCTR 65438361 ; GCN-NEXT: $sgpr2 = S_ADD_U32 $sgpr1, 0, implicit-def $scc362 ; GCN-NEXT: S_ENDPGM 0363 $vgpr1, $vcc_lo = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec364 S_NOP 0365 S_NOP 0366 S_NOP 0367 S_NOP 0368 S_NOP 0369 S_NOP 0370 S_NOP 0371 S_NOP 0372 $sgpr1 = S_CSELECT_B32 -1, 0, implicit $scc373 $sgpr2 = S_ADD_U32 $sgpr1, 0, implicit-def $scc374 S_ENDPGM 0375...376 377---378name: hazard_gap2379body: |380 bb.0:381 ; GCN-LABEL: name: hazard_gap2382 ; GCN: $vgpr1, $vcc_lo = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec383 ; GCN-NEXT: $sgpr1 = S_CSELECT_B32 -1, 0, implicit $scc384 ; GCN-NEXT: S_NOP 0385 ; GCN-NEXT: S_NOP 0386 ; GCN-NEXT: S_NOP 0387 ; GCN-NEXT: S_NOP 0388 ; GCN-NEXT: S_NOP 0389 ; GCN-NEXT: S_NOP 0390 ; GCN-NEXT: S_NOP 0391 ; GCN-NEXT: S_NOP 0392 ; GCN-NEXT: S_WAITCNT_DEPCTR 65438393 ; GCN-NEXT: $sgpr2 = S_ADD_U32 $sgpr1, 0, implicit-def $scc394 ; GCN-NEXT: S_ENDPGM 0395 $vgpr1, $vcc_lo = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec396 $sgpr1 = S_CSELECT_B32 -1, 0, implicit $scc397 S_NOP 0398 S_NOP 0399 S_NOP 0400 S_NOP 0401 S_NOP 0402 S_NOP 0403 S_NOP 0404 S_NOP 0405 $sgpr2 = S_ADD_U32 $sgpr1, 0, implicit-def $scc406 S_ENDPGM 0407...408 409---410name: hazard_gap3411body: |412 bb.0:413 ; GCN-LABEL: name: hazard_gap3414 ; GCN: $vgpr1, $vcc_lo = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec415 ; GCN-NEXT: $sgpr1 = S_CSELECT_B32 -1, 0, implicit $scc416 ; GCN-NEXT: $sgpr4 = S_ADD_U32 $sgpr3, 0, implicit-def $scc417 ; GCN-NEXT: $sgpr6 = S_ADD_U32 $sgpr5, 0, implicit-def $scc418 ; GCN-NEXT: $sgpr8 = S_ADD_U32 $sgpr7, 0, implicit-def $scc419 ; GCN-NEXT: $sgpr10 = S_ADD_U32 $sgpr9, 0, implicit-def $scc420 ; GCN-NEXT: $sgpr12 = S_ADD_U32 $sgpr11, 0, implicit-def $scc421 ; GCN-NEXT: $sgpr14 = S_ADD_U32 $sgpr13, 0, implicit-def $scc422 ; GCN-NEXT: $sgpr16 = S_ADD_U32 $sgpr15, 0, implicit-def $scc423 ; GCN-NEXT: S_WAITCNT_DEPCTR 65438424 ; GCN-NEXT: $sgpr2 = S_ADD_U32 $sgpr1, 0, implicit-def $scc425 ; GCN-NEXT: S_ENDPGM 0426 $vgpr1, $vcc_lo = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec427 $sgpr1 = S_CSELECT_B32 -1, 0, implicit $scc428 $sgpr4 = S_ADD_U32 $sgpr3, 0, implicit-def $scc429 $sgpr6 = S_ADD_U32 $sgpr5, 0, implicit-def $scc430 $sgpr8 = S_ADD_U32 $sgpr7, 0, implicit-def $scc431 $sgpr10 = S_ADD_U32 $sgpr9, 0, implicit-def $scc432 $sgpr12 = S_ADD_U32 $sgpr11, 0, implicit-def $scc433 $sgpr14 = S_ADD_U32 $sgpr13, 0, implicit-def $scc434 $sgpr16 = S_ADD_U32 $sgpr15, 0, implicit-def $scc435 $sgpr2 = S_ADD_U32 $sgpr1, 0, implicit-def $scc436 S_ENDPGM 0437...438 439---440name: hazard_gap4_no_hazard441body: |442 bb.0:443 ; GCN-LABEL: name: hazard_gap4_no_hazard444 ; GCN: $vgpr1, $vcc_lo = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec445 ; GCN-NEXT: $sgpr1 = S_CSELECT_B32 -1, 0, implicit $scc446 ; GCN-NEXT: $sgpr4 = S_ADD_U32 $sgpr3, 0, implicit-def $scc447 ; GCN-NEXT: $sgpr6 = S_ADD_U32 $sgpr5, 0, implicit-def $scc448 ; GCN-NEXT: $sgpr8 = S_ADD_U32 $sgpr7, 0, implicit-def $scc449 ; GCN-NEXT: $sgpr10 = S_ADD_U32 $sgpr9, 0, implicit-def $scc450 ; GCN-NEXT: $sgpr12 = S_ADD_U32 $sgpr11, 0, implicit-def $scc451 ; GCN-NEXT: $sgpr14 = S_ADD_U32 $sgpr13, 0, implicit-def $scc452 ; GCN-NEXT: $sgpr16 = S_ADD_U32 $sgpr15, 0, implicit-def $scc453 ; GCN-NEXT: $sgpr18 = S_ADD_U32 $sgpr17, 0, implicit-def $scc454 ; GCN-NEXT: $sgpr20 = S_ADD_U32 $sgpr19, 0, implicit-def $scc455 ; GCN-NEXT: $sgpr22 = S_ADD_U32 $sgpr21, 0, implicit-def $scc456 ; GCN-NEXT: S_WAITCNT_DEPCTR 65438457 ; GCN-NEXT: $sgpr2 = S_ADD_U32 $sgpr1, 0, implicit-def $scc458 ; GCN-NEXT: S_ENDPGM 0459 $vgpr1, $vcc_lo = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec460 $sgpr1 = S_CSELECT_B32 -1, 0, implicit $scc461 $sgpr4 = S_ADD_U32 $sgpr3, 0, implicit-def $scc462 $sgpr6 = S_ADD_U32 $sgpr5, 0, implicit-def $scc463 $sgpr8 = S_ADD_U32 $sgpr7, 0, implicit-def $scc464 $sgpr10 = S_ADD_U32 $sgpr9, 0, implicit-def $scc465 $sgpr12 = S_ADD_U32 $sgpr11, 0, implicit-def $scc466 $sgpr14 = S_ADD_U32 $sgpr13, 0, implicit-def $scc467 $sgpr16 = S_ADD_U32 $sgpr15, 0, implicit-def $scc468 $sgpr18 = S_ADD_U32 $sgpr17, 0, implicit-def $scc469 $sgpr20 = S_ADD_U32 $sgpr19, 0, implicit-def $scc470 $sgpr22 = S_ADD_U32 $sgpr21, 0, implicit-def $scc471 $sgpr2 = S_ADD_U32 $sgpr1, 0, implicit-def $scc472 S_ENDPGM 0473...474 475---476name: hazard_valu_write1_no_hazard477body: |478 bb.0:479 ; GCN-LABEL: name: hazard_valu_write1_no_hazard480 ; GCN: $sgpr1 = V_CMP_EQ_F32_e64 0, $vgpr0, 0, $vgpr1, 1, implicit $mode, implicit $exec481 ; GCN-NEXT: $sgpr1 = S_CSELECT_B32 -1, 0, implicit $scc482 ; GCN-NEXT: $sgpr2 = S_ADD_U32 $sgpr1, 0, implicit-def $scc483 ; GCN-NEXT: S_ENDPGM 0484 $sgpr1 = V_CMP_EQ_F32_e64 0, $vgpr0, 0, $vgpr1, 1, implicit $mode, implicit $exec485 $sgpr1 = S_CSELECT_B32 -1, 0, implicit $scc486 $sgpr2 = S_ADD_U32 $sgpr1, 0, implicit-def $scc487 S_ENDPGM 0488...489 490---491name: hazard_post_order1492body: |493 bb.0:494 ; GCN-LABEL: name: hazard_post_order1495 ; GCN: $sgpr0_sgpr1 = S_GETPC_B64496 ; GCN-NEXT: $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc497 ; GCN-NEXT: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0, implicit $exec498 ; GCN-NEXT: S_ENDPGM 0499 $sgpr0_sgpr1 = S_GETPC_B64500 $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc501 $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0, implicit $exec502 S_ENDPGM 0503...504 505---506name: hazard_post_order2507body: |508 ; GCN-LABEL: name: hazard_post_order2509 ; GCN: bb.0:510 ; GCN-NEXT: successors: %bb.1(0x80000000)511 ; GCN-NEXT: {{ $}}512 ; GCN-NEXT: $sgpr0_sgpr1 = S_GETPC_B64513 ; GCN-NEXT: $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc514 ; GCN-NEXT: S_BRANCH %bb.1515 ; GCN-NEXT: {{ $}}516 ; GCN-NEXT: bb.1:517 ; GCN-NEXT: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0, implicit $exec518 ; GCN-NEXT: S_ENDPGM 0519 bb.0:520 $sgpr0_sgpr1 = S_GETPC_B64521 $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc522 S_BRANCH %bb.1523 524 bb.1:525 $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0, implicit $exec526 S_ENDPGM 0527...528 529---530name: hazard_post_order_cycle531body: |532 ; GCN-LABEL: name: hazard_post_order_cycle533 ; GCN: bb.0:534 ; GCN-NEXT: successors: %bb.1(0x80000000)535 ; GCN-NEXT: {{ $}}536 ; GCN-NEXT: S_NOP 0537 ; GCN-NEXT: {{ $}}538 ; GCN-NEXT: bb.1:539 ; GCN-NEXT: successors: %bb.2(0x80000000)540 ; GCN-NEXT: {{ $}}541 ; GCN-NEXT: $sgpr0_sgpr1 = S_GETPC_B64542 ; GCN-NEXT: S_WAITCNT_DEPCTR 65438543 ; GCN-NEXT: $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc544 ; GCN-NEXT: {{ $}}545 ; GCN-NEXT: bb.2:546 ; GCN-NEXT: successors: %bb.1(0x40000000), %bb.3(0x40000000)547 ; GCN-NEXT: {{ $}}548 ; GCN-NEXT: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0, implicit $exec549 ; GCN-NEXT: S_CBRANCH_SCC0 %bb.1, implicit $scc550 ; GCN-NEXT: {{ $}}551 ; GCN-NEXT: bb.3:552 ; GCN-NEXT: S_ENDPGM 0553 bb.0:554 S_NOP 0555 556 bb.1:557 $sgpr0_sgpr1 = S_GETPC_B64558 $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc559 560 bb.2:561 $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0, implicit $exec562 S_CBRANCH_SCC0 %bb.1, implicit $scc563 564 bb.3:565 S_ENDPGM 0566...567 568---569name: hazard_calls570frameInfo:571 hasCalls: true572body: |573 ; NOBC-LABEL: name: hazard_calls574 ; NOBC: bb.0:575 ; NOBC-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)576 ; NOBC-NEXT: {{ $}}577 ; NOBC-NEXT: $vgpr0 = V_WRITELANE_B32 0, $sgpr4, $vgpr0578 ; NOBC-NEXT: $vgpr0 = V_WRITELANE_B32 1, $sgpr8, $vgpr0579 ; NOBC-NEXT: $vgpr0 = V_WRITELANE_B32 2, $sgpr16, $vgpr0580 ; NOBC-NEXT: $vgpr0 = V_WRITELANE_B32 3, $sgpr18, $vgpr0581 ; NOBC-NEXT: $vgpr0 = V_WRITELANE_B32 4, $sgpr20, $vgpr0582 ; NOBC-NEXT: $vgpr0 = V_WRITELANE_B32 5, $sgpr22, $vgpr0583 ; NOBC-NEXT: S_CBRANCH_SCC0 %bb.2, implicit $scc584 ; NOBC-NEXT: S_BRANCH %bb.1585 ; NOBC-NEXT: {{ $}}586 ; NOBC-NEXT: bb.1:587 ; NOBC-NEXT: successors: %bb.3(0x40000000), %bb.4(0x40000000)588 ; NOBC-NEXT: {{ $}}589 ; NOBC-NEXT: S_CBRANCH_SCC0 %bb.3, implicit $scc590 ; NOBC-NEXT: S_BRANCH %bb.4591 ; NOBC-NEXT: {{ $}}592 ; NOBC-NEXT: bb.2:593 ; NOBC-NEXT: $sgpr16 = S_MOV_B32 0594 ; NOBC-NEXT: S_WAITCNT_DEPCTR 65438595 ; NOBC-NEXT: S_SETPC_B64 $sgpr0_sgpr1596 ; NOBC-NEXT: {{ $}}597 ; NOBC-NEXT: bb.3:598 ; NOBC-NEXT: $sgpr18 = S_MOV_B32 0599 ; NOBC-NEXT: S_WAITCNT_DEPCTR 65438600 ; NOBC-NEXT: S_SETPC_B64_return $sgpr0_sgpr1601 ; NOBC-NEXT: {{ $}}602 ; NOBC-NEXT: bb.4:603 ; NOBC-NEXT: successors: %bb.5(0x80000000)604 ; NOBC-NEXT: {{ $}}605 ; NOBC-NEXT: $vcc_lo = S_MOV_B32 0606 ; NOBC-NEXT: $sgpr20 = S_MOV_B32 0607 ; NOBC-NEXT: S_WAITCNT_DEPCTR 65438608 ; NOBC-NEXT: $sgpr4_sgpr5 = S_SWAPPC_B64 $sgpr2_sgpr3609 ; NOBC-NEXT: S_WAITCNT_DEPCTR 65438610 ; NOBC-NEXT: $sgpr4 = S_ADD_U32 $sgpr4, 0, implicit-def $scc611 ; NOBC-NEXT: {{ $}}612 ; NOBC-NEXT: bb.5:613 ; NOBC-NEXT: successors: %bb.6(0x80000000)614 ; NOBC-NEXT: {{ $}}615 ; NOBC-NEXT: S_WAITCNT_DEPCTR 65438616 ; NOBC-NEXT: $sgpr8_sgpr9 = S_CALL_B64 0617 ; NOBC-NEXT: {{ $}}618 ; NOBC-NEXT: bb.6:619 ; NOBC-NEXT: S_WAITCNT_DEPCTR 65438620 ; NOBC-NEXT: $sgpr22 = S_MOV_B32 $sgpr8621 ; NOBC-NEXT: S_ENDPGM 0622 ;623 ; BC-LABEL: name: hazard_calls624 ; BC: bb.0:625 ; BC-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)626 ; BC-NEXT: {{ $}}627 ; BC-NEXT: $vgpr0 = V_WRITELANE_B32 0, $sgpr4, $vgpr0628 ; BC-NEXT: $vgpr0 = V_WRITELANE_B32 1, $sgpr8, $vgpr0629 ; BC-NEXT: $vgpr0 = V_WRITELANE_B32 2, $sgpr16, $vgpr0630 ; BC-NEXT: $vgpr0 = V_WRITELANE_B32 3, $sgpr18, $vgpr0631 ; BC-NEXT: $vgpr0 = V_WRITELANE_B32 4, $sgpr20, $vgpr0632 ; BC-NEXT: $vgpr0 = V_WRITELANE_B32 5, $sgpr22, $vgpr0633 ; BC-NEXT: S_CBRANCH_SCC0 %bb.2, implicit $scc634 ; BC-NEXT: S_BRANCH %bb.1635 ; BC-NEXT: {{ $}}636 ; BC-NEXT: bb.1:637 ; BC-NEXT: successors: %bb.3(0x40000000), %bb.4(0x40000000)638 ; BC-NEXT: {{ $}}639 ; BC-NEXT: S_CBRANCH_SCC0 %bb.3, implicit $scc640 ; BC-NEXT: S_BRANCH %bb.4641 ; BC-NEXT: {{ $}}642 ; BC-NEXT: bb.2:643 ; BC-NEXT: $sgpr16 = S_MOV_B32 0644 ; BC-NEXT: DS_NOP implicit $m0, implicit $exec645 ; BC-NEXT: DS_NOP implicit $m0, implicit $exec646 ; BC-NEXT: DS_NOP implicit $m0, implicit $exec647 ; BC-NEXT: DS_NOP implicit $m0, implicit $exec648 ; BC-NEXT: S_WAITCNT_DEPCTR 65438649 ; BC-NEXT: S_SETPC_B64 $sgpr0_sgpr1650 ; BC-NEXT: {{ $}}651 ; BC-NEXT: bb.3:652 ; BC-NEXT: $sgpr18 = S_MOV_B32 0653 ; BC-NEXT: DS_NOP implicit $m0, implicit $exec654 ; BC-NEXT: DS_NOP implicit $m0, implicit $exec655 ; BC-NEXT: DS_NOP implicit $m0, implicit $exec656 ; BC-NEXT: DS_NOP implicit $m0, implicit $exec657 ; BC-NEXT: S_WAITCNT_DEPCTR 65438658 ; BC-NEXT: S_SETPC_B64_return $sgpr0_sgpr1659 ; BC-NEXT: {{ $}}660 ; BC-NEXT: bb.4:661 ; BC-NEXT: successors: %bb.5(0x80000000)662 ; BC-NEXT: {{ $}}663 ; BC-NEXT: $vcc_lo = S_MOV_B32 0664 ; BC-NEXT: $sgpr20 = S_MOV_B32 0665 ; BC-NEXT: DS_NOP implicit $m0, implicit $exec666 ; BC-NEXT: DS_NOP implicit $m0, implicit $exec667 ; BC-NEXT: DS_NOP implicit $m0, implicit $exec668 ; BC-NEXT: DS_NOP implicit $m0, implicit $exec669 ; BC-NEXT: S_WAITCNT_DEPCTR 65438670 ; BC-NEXT: $sgpr4_sgpr5 = S_SWAPPC_B64 $sgpr2_sgpr3671 ; BC-NEXT: $sgpr4 = S_ADD_U32 $sgpr4, 0, implicit-def $scc672 ; BC-NEXT: {{ $}}673 ; BC-NEXT: bb.5:674 ; BC-NEXT: successors: %bb.6(0x80000000)675 ; BC-NEXT: {{ $}}676 ; BC-NEXT: $sgpr8_sgpr9 = S_CALL_B64 0677 ; BC-NEXT: {{ $}}678 ; BC-NEXT: bb.6:679 ; BC-NEXT: $sgpr22 = S_MOV_B32 $sgpr8680 ; BC-NEXT: S_ENDPGM 0681 bb.0:682 $vgpr0 = V_WRITELANE_B32 0, $sgpr4, $vgpr0683 $vgpr0 = V_WRITELANE_B32 1, $sgpr8, $vgpr0684 $vgpr0 = V_WRITELANE_B32 2, $sgpr16, $vgpr0685 $vgpr0 = V_WRITELANE_B32 3, $sgpr18, $vgpr0686 $vgpr0 = V_WRITELANE_B32 4, $sgpr20, $vgpr0687 $vgpr0 = V_WRITELANE_B32 5, $sgpr22, $vgpr0688 S_CBRANCH_SCC0 %bb.2, implicit $scc689 S_BRANCH %bb.1690 691 bb.1:692 S_CBRANCH_SCC0 %bb.3, implicit $scc693 S_BRANCH %bb.4694 695 bb.2:696 $sgpr16 = S_MOV_B32 0697 S_SETPC_B64 $sgpr0_sgpr1698 699 bb.3:700 $sgpr18 = S_MOV_B32 0701 S_SETPC_B64_return $sgpr0_sgpr1702 703 bb.4:704 $vcc_lo = S_MOV_B32 0705 $sgpr20 = S_MOV_B32 0706 $sgpr4_sgpr5 = S_SWAPPC_B64 $sgpr2_sgpr3707 $sgpr4 = S_ADD_U32 $sgpr4, 0, implicit-def $scc708 709 bb.5:710 $sgpr8_sgpr9 = S_CALL_B64 0711 712 bb.6:713 $sgpr22 = S_MOV_B32 $sgpr8714 S_ENDPGM 0715...716 717---718name: hazard_callee1719body: |720 bb.0:721 ; NOBC-LABEL: name: hazard_callee1722 ; NOBC: $sgpr1 = S_CSELECT_B32 -1, 0, implicit $scc723 ; NOBC-NEXT: S_WAITCNT_DEPCTR 65438724 ; NOBC-NEXT: $sgpr2 = S_ADD_U32 $sgpr1, 0, implicit-def $scc725 ; NOBC-NEXT: S_WAITCNT_DEPCTR 65438726 ; NOBC-NEXT: S_SETPC_B64_return $sgpr30_sgpr31727 ;728 ; BC-LABEL: name: hazard_callee1729 ; BC: $sgpr1 = S_CSELECT_B32 -1, 0, implicit $scc730 ; BC-NEXT: $sgpr2 = S_ADD_U32 $sgpr1, 0, implicit-def $scc731 ; BC-NEXT: S_SETPC_B64_return $sgpr30_sgpr31732 $sgpr1 = S_CSELECT_B32 -1, 0, implicit $scc733 $sgpr2 = S_ADD_U32 $sgpr1, 0, implicit-def $scc734 S_SETPC_B64_return $sgpr30_sgpr31735...736 737---738name: hazard_callee2739body: |740 bb.0:741 ; NOBC-LABEL: name: hazard_callee2742 ; NOBC: $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec743 ; NOBC-NEXT: $sgpr1 = S_CSELECT_B32 -1, 0, implicit $scc744 ; NOBC-NEXT: S_WAITCNT_DEPCTR 65438745 ; NOBC-NEXT: $sgpr2 = S_ADD_U32 $sgpr1, 0, implicit-def $scc746 ; NOBC-NEXT: S_WAITCNT_DEPCTR 65438747 ; NOBC-NEXT: S_SETPC_B64_return $sgpr30_sgpr31748 ;749 ; BC-LABEL: name: hazard_callee2750 ; BC: $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec751 ; BC-NEXT: $sgpr1 = S_CSELECT_B32 -1, 0, implicit $scc752 ; BC-NEXT: S_WAITCNT_DEPCTR 65438753 ; BC-NEXT: $sgpr2 = S_ADD_U32 $sgpr1, 0, implicit-def $scc754 ; BC-NEXT: DS_NOP implicit $m0, implicit $exec755 ; BC-NEXT: DS_NOP implicit $m0, implicit $exec756 ; BC-NEXT: DS_NOP implicit $m0, implicit $exec757 ; BC-NEXT: DS_NOP implicit $m0, implicit $exec758 ; BC-NEXT: S_SETPC_B64_return $sgpr30_sgpr31759 $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec760 $sgpr1 = S_CSELECT_B32 -1, 0, implicit $scc761 $sgpr2 = S_ADD_U32 $sgpr1, 0, implicit-def $scc762 S_SETPC_B64_return $sgpr30_sgpr31763...764 765---766name: hazard_carry_vcc767body: |768 bb.0:769 ; GCN-LABEL: name: hazard_carry_vcc770 ; GCN: $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $vcc_lo, 0, implicit $exec771 ; GCN-NEXT: $vgpr0 = V_ADD_CO_U32_e32 $vgpr0, $vgpr1, implicit-def $vcc_lo, implicit $exec772 ; GCN-NEXT: S_WAITCNT_DEPCTR 65437773 ; GCN-NEXT: $vgpr1 = V_ADDC_U32_e32 $vgpr2, $vgpr3, implicit-def $vcc_lo, implicit $vcc_lo, implicit $exec774 ; GCN-NEXT: S_ENDPGM 0775 $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $vcc_lo, 0, implicit $exec776 $vgpr0 = V_ADD_CO_U32_e32 $vgpr0, $vgpr1, implicit-def $vcc, implicit $exec777 $vgpr1 = V_ADDC_U32_e32 $vgpr2, $vgpr3, implicit-def $vcc, implicit $vcc, implicit $exec778 S_ENDPGM 0779...780 781---782name: hazard_carry_vcc_no_hazard783body: |784 bb.0:785 ; GCN-LABEL: name: hazard_carry_vcc_no_hazard786 ; GCN: $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $vcc_lo, 0, implicit $exec787 ; GCN-NEXT: $vgpr0 = V_ADD_CO_U32_e32 $vgpr0, $vgpr1, implicit-def $vcc_lo, implicit $exec788 ; GCN-NEXT: $sgpr8 = S_MOV_B32 $vcc_lo789 ; GCN-NEXT: $vgpr1 = V_ADDC_U32_e32 $vgpr2, $vgpr3, implicit-def $vcc_lo, implicit $vcc_lo, implicit $exec790 ; GCN-NEXT: S_ENDPGM 0791 $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $vcc_lo, 0, implicit $exec792 $vgpr0 = V_ADD_CO_U32_e32 $vgpr0, $vgpr1, implicit-def $vcc, implicit $exec793 $sgpr8 = S_MOV_B32 $vcc_lo794 $vgpr1 = V_ADDC_U32_e32 $vgpr2, $vgpr3, implicit-def $vcc, implicit $vcc, implicit $exec795 S_ENDPGM 0796...797 798---799name: hazard_carry_sgpr800body: |801 bb.0:802 ; GCN-LABEL: name: hazard_carry_sgpr803 ; GCN: $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec804 ; GCN-NEXT: $vgpr0, $sgpr0 = V_ADD_CO_U32_e64 $vgpr0, $vgpr1, 0, implicit $exec805 ; GCN-NEXT: S_WAITCNT_DEPCTR 61855806 ; GCN-NEXT: $vgpr1, $sgpr1 = V_ADDC_U32_e64 $vgpr2, $vgpr3, $sgpr0, 0, implicit $exec807 ; GCN-NEXT: S_ENDPGM 0808 $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec809 $vgpr0, $sgpr0 = V_ADD_CO_U32_e64 $vgpr0, $vgpr1, 0, implicit $exec810 $vgpr1, $sgpr1 = V_ADDC_U32_e64 $vgpr2, $vgpr3, $sgpr0, 0, implicit $exec811 S_ENDPGM 0812...813 814---815name: hazard_carry_sgpr_no_hazard1816body: |817 bb.0:818 ; GCN-LABEL: name: hazard_carry_sgpr_no_hazard1819 ; GCN: $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec820 ; GCN-NEXT: $vgpr0, $sgpr0 = V_ADD_CO_U32_e64 $vgpr0, $vgpr1, 0, implicit $exec821 ; GCN-NEXT: $sgpr8 = S_MOV_B32 $sgpr0822 ; GCN-NEXT: $vgpr1, $sgpr1 = V_ADDC_U32_e64 $vgpr2, $vgpr3, $sgpr0, 0, implicit $exec823 ; GCN-NEXT: S_ENDPGM 0824 $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec825 $vgpr0, $sgpr0 = V_ADD_CO_U32_e64 $vgpr0, $vgpr1, 0, implicit $exec826 $sgpr8 = S_MOV_B32 $sgpr0827 $vgpr1, $sgpr1 = V_ADDC_U32_e64 $vgpr2, $vgpr3, $sgpr0, 0, implicit $exec828 S_ENDPGM 0829...830 831---832name: hazard_carry_sgpr_no_hazard2833body: |834 bb.0:835 ; GCN-LABEL: name: hazard_carry_sgpr_no_hazard2836 ; GCN: $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec837 ; GCN-NEXT: $vgpr0, $sgpr0 = V_ADD_CO_U32_e64 $vgpr0, $vgpr1, 0, implicit $exec838 ; GCN-NEXT: $vgpr3 = BUFFER_LOAD_DWORD_OFFSET $sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8, 0, 0, 0, implicit $exec839 ; GCN-NEXT: $vgpr1, $sgpr1 = V_ADDC_U32_e64 $vgpr2, $vgpr3, $sgpr0, 0, implicit $exec840 ; GCN-NEXT: S_ENDPGM 0841 $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec842 $vgpr0, $sgpr0 = V_ADD_CO_U32_e64 $vgpr0, $vgpr1, 0, implicit $exec843 $vgpr3 = BUFFER_LOAD_DWORD_OFFSET $sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8, 0, 0, 0, implicit $exec844 $vgpr1, $sgpr1 = V_ADDC_U32_e64 $vgpr2, $vgpr3, $sgpr0, 0, implicit $exec845 S_ENDPGM 0846...847 848---849name: hazard_carry_sgpr_no_hazard3850body: |851 bb.0:852 ; GCN-LABEL: name: hazard_carry_sgpr_no_hazard3853 ; GCN: $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec854 ; GCN-NEXT: $vgpr0, $sgpr0 = V_ADD_CO_U32_e64 $vgpr0, $vgpr1, 0, implicit $exec855 ; GCN-NEXT: $sgpr8 = S_LOAD_DWORD_IMM $sgpr6_sgpr7, 0, 0856 ; GCN-NEXT: $vgpr1, $sgpr1 = V_ADDC_U32_e64 $vgpr2, $vgpr3, $sgpr0, 0, implicit $exec857 ; GCN-NEXT: S_ENDPGM 0858 $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec859 $vgpr0, $sgpr0 = V_ADD_CO_U32_e64 $vgpr0, $vgpr1, 0, implicit $exec860 $sgpr8 = S_LOAD_DWORD_IMM $sgpr6_sgpr7, 0, 0861 $vgpr1, $sgpr1 = V_ADDC_U32_e64 $vgpr2, $vgpr3, $sgpr0, 0, implicit $exec862 S_ENDPGM 0863...864 865---866name: hazard_cull_vmem867body: |868 bb.0:869 ; NOMEMC-LABEL: name: hazard_cull_vmem870 ; NOMEMC: $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec871 ; NOMEMC-NEXT: $vgpr3 = BUFFER_LOAD_DWORD_OFFSET $sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8, 0, 0, 0, implicit $exec872 ; NOMEMC-NEXT: S_WAIT_LOADCNT 0873 ; NOMEMC-NEXT: $sgpr0_sgpr1 = S_GETPC_B64874 ; NOMEMC-NEXT: S_WAITCNT_DEPCTR 65438875 ; NOMEMC-NEXT: $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc876 ; NOMEMC-NEXT: S_ENDPGM 0877 ;878 ; MEMC-LABEL: name: hazard_cull_vmem879 ; MEMC: $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec880 ; MEMC-NEXT: $vgpr3 = BUFFER_LOAD_DWORD_OFFSET $sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8, 0, 0, 0, implicit $exec881 ; MEMC-NEXT: DS_NOP implicit $m0, implicit $exec882 ; MEMC-NEXT: DS_NOP implicit $m0, implicit $exec883 ; MEMC-NEXT: DS_NOP implicit $m0, implicit $exec884 ; MEMC-NEXT: DS_NOP implicit $m0, implicit $exec885 ; MEMC-NEXT: S_WAIT_LOADCNT 0886 ; MEMC-NEXT: $sgpr0_sgpr1 = S_GETPC_B64887 ; MEMC-NEXT: $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc888 ; MEMC-NEXT: S_ENDPGM 0889 $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec890 $vgpr3 = BUFFER_LOAD_DWORD_OFFSET $sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8, 0, 0, 0, implicit $exec891 S_WAIT_LOADCNT 0892 $sgpr0_sgpr1 = S_GETPC_B64893 $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc894 S_ENDPGM 0895...896 897---898name: hazard_cull_sample899body: |900 bb.0:901 ; NOMEMC-LABEL: name: hazard_cull_sample902 ; NOMEMC: $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec903 ; NOMEMC-NEXT: $vgpr10 = IMAGE_SAMPLE_LZ_V1_V2_gfx12 $vgpr3, $vgpr4, $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (load (s128))904 ; NOMEMC-NEXT: S_WAIT_SAMPLECNT 0905 ; NOMEMC-NEXT: $sgpr0_sgpr1 = S_GETPC_B64906 ; NOMEMC-NEXT: S_WAITCNT_DEPCTR 65438907 ; NOMEMC-NEXT: $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc908 ; NOMEMC-NEXT: S_ENDPGM 0909 ;910 ; MEMC-LABEL: name: hazard_cull_sample911 ; MEMC: $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec912 ; MEMC-NEXT: $vgpr10 = IMAGE_SAMPLE_LZ_V1_V2_gfx12 $vgpr3, $vgpr4, $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (load (s128))913 ; MEMC-NEXT: DS_NOP implicit $m0, implicit $exec914 ; MEMC-NEXT: DS_NOP implicit $m0, implicit $exec915 ; MEMC-NEXT: DS_NOP implicit $m0, implicit $exec916 ; MEMC-NEXT: DS_NOP implicit $m0, implicit $exec917 ; MEMC-NEXT: S_WAIT_SAMPLECNT 0918 ; MEMC-NEXT: $sgpr0_sgpr1 = S_GETPC_B64919 ; MEMC-NEXT: $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc920 ; MEMC-NEXT: S_ENDPGM 0921 $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec922 $vgpr10 = IMAGE_SAMPLE_LZ_V1_V2_gfx12 $vgpr3, $vgpr4, $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (load (s128))923 S_WAIT_SAMPLECNT 0924 $sgpr0_sgpr1 = S_GETPC_B64925 $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc926 S_ENDPGM 0927...928 929---930name: hazard_cull_bvh931body: |932 bb.0:933 ; NOMEMC-LABEL: name: hazard_cull_bvh934 ; NOMEMC: $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec935 ; NOMEMC-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = IMAGE_BVH_INTERSECT_RAY_sa_gfx11 $vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14, renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, implicit $exec :: (dereferenceable load (s128), addrspace 7)936 ; NOMEMC-NEXT: S_WAIT_BVHCNT 0937 ; NOMEMC-NEXT: $sgpr0_sgpr1 = S_GETPC_B64938 ; NOMEMC-NEXT: S_WAITCNT_DEPCTR 65438939 ; NOMEMC-NEXT: $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc940 ; NOMEMC-NEXT: S_ENDPGM 0941 ;942 ; MEMC-LABEL: name: hazard_cull_bvh943 ; MEMC: $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec944 ; MEMC-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = IMAGE_BVH_INTERSECT_RAY_sa_gfx11 $vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14, renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, implicit $exec :: (dereferenceable load (s128), addrspace 7)945 ; MEMC-NEXT: DS_NOP implicit $m0, implicit $exec946 ; MEMC-NEXT: DS_NOP implicit $m0, implicit $exec947 ; MEMC-NEXT: DS_NOP implicit $m0, implicit $exec948 ; MEMC-NEXT: DS_NOP implicit $m0, implicit $exec949 ; MEMC-NEXT: S_WAIT_BVHCNT 0950 ; MEMC-NEXT: $sgpr0_sgpr1 = S_GETPC_B64951 ; MEMC-NEXT: $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc952 ; MEMC-NEXT: S_ENDPGM 0953 $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec954 $vgpr0_vgpr1_vgpr2_vgpr3 = IMAGE_BVH_INTERSECT_RAY_sa_gfx11 $vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14, renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, implicit $exec :: (dereferenceable load (s128), addrspace 7)955 S_WAIT_BVHCNT 0956 $sgpr0_sgpr1 = S_GETPC_B64957 $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc958 S_ENDPGM 0959...960 961---962name: hazard_nocull_scratch963body: |964 bb.0:965 ; GCN-LABEL: name: hazard_nocull_scratch966 ; GCN: $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec967 ; GCN-NEXT: $vgpr0 = SCRATCH_LOAD_DWORD $vgpr0, 0, 0, implicit $exec, implicit $flat_scr968 ; GCN-NEXT: S_WAIT_LOADCNT 0969 ; GCN-NEXT: $sgpr0_sgpr1 = S_GETPC_B64970 ; GCN-NEXT: S_WAITCNT_DEPCTR 65438971 ; GCN-NEXT: $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc972 ; GCN-NEXT: S_ENDPGM 0973 $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec974 $vgpr0 = SCRATCH_LOAD_DWORD $vgpr0, 0, 0, implicit $exec, implicit $flat_scr975 S_WAIT_LOADCNT 0976 $sgpr0_sgpr1 = S_GETPC_B64977 $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc978 S_ENDPGM 0979...980 981---982name: hazard_cull_global983body: |984 bb.0:985 ; NOMEMC-LABEL: name: hazard_cull_global986 ; NOMEMC: $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec987 ; NOMEMC-NEXT: $vgpr0 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec988 ; NOMEMC-NEXT: S_WAIT_LOADCNT 0989 ; NOMEMC-NEXT: $sgpr0_sgpr1 = S_GETPC_B64990 ; NOMEMC-NEXT: S_WAITCNT_DEPCTR 65438991 ; NOMEMC-NEXT: $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc992 ; NOMEMC-NEXT: S_ENDPGM 0993 ;994 ; MEMC-LABEL: name: hazard_cull_global995 ; MEMC: $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec996 ; MEMC-NEXT: $vgpr0 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec997 ; MEMC-NEXT: DS_NOP implicit $m0, implicit $exec998 ; MEMC-NEXT: DS_NOP implicit $m0, implicit $exec999 ; MEMC-NEXT: DS_NOP implicit $m0, implicit $exec1000 ; MEMC-NEXT: DS_NOP implicit $m0, implicit $exec1001 ; MEMC-NEXT: S_WAIT_LOADCNT 01002 ; MEMC-NEXT: $sgpr0_sgpr1 = S_GETPC_B641003 ; MEMC-NEXT: $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc1004 ; MEMC-NEXT: S_ENDPGM 01005 $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec1006 $vgpr0 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec1007 S_WAIT_LOADCNT 01008 $sgpr0_sgpr1 = S_GETPC_B641009 $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc1010 S_ENDPGM 01011...1012 1013---1014name: hazard_nocull_flat1015body: |1016 bb.0:1017 ; GCN-LABEL: name: hazard_nocull_flat1018 ; GCN: $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec1019 ; GCN-NEXT: $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr1020 ; GCN-NEXT: S_WAIT_LOADCNT 01021 ; GCN-NEXT: $sgpr0_sgpr1 = S_GETPC_B641022 ; GCN-NEXT: S_WAITCNT_DEPCTR 654381023 ; GCN-NEXT: $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc1024 ; GCN-NEXT: S_ENDPGM 01025 $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec1026 $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr1027 S_WAIT_LOADCNT 01028 $sgpr0_sgpr1 = S_GETPC_B641029 $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc1030 S_ENDPGM 01031...1032 1033---1034name: hazard_existing_cull1035body: |1036 bb.0:1037 ; GCN-LABEL: name: hazard_existing_cull1038 ; GCN: $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec1039 ; GCN-NEXT: DS_NOP implicit $m0, implicit $exec1040 ; GCN-NEXT: DS_NOP implicit $m0, implicit $exec1041 ; GCN-NEXT: DS_NOP implicit $m0, implicit $exec1042 ; GCN-NEXT: DS_NOP implicit $m0, implicit $exec1043 ; GCN-NEXT: $sgpr0_sgpr1 = S_GETPC_B641044 ; GCN-NEXT: $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc1045 ; GCN-NEXT: S_ENDPGM 01046 $vgpr1, $sgpr0 = V_ADDC_U32_e64 0, $vgpr1, $sgpr0, 0, implicit $exec1047 DS_NOP implicit $m0, implicit $exec1048 DS_NOP implicit $m0, implicit $exec1049 DS_NOP implicit $m0, implicit $exec1050 DS_NOP implicit $m0, implicit $exec1051 $sgpr0_sgpr1 = S_GETPC_B641052 $sgpr3 = S_ADD_U32 $sgpr0, 0, implicit-def $scc1053 S_ENDPGM 01054...1055