# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 5 # RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -run-pass=si-insert-waitcnts %s -o - | FileCheck -check-prefix=GCN %s --- name: signal_isfirst_imm_same_barrier_wait body: | bb.0: ; GCN-LABEL: name: signal_isfirst_imm_same_barrier_wait ; GCN: S_WAIT_LOADCNT_DSCNT .Loadcnt_0_Dscnt_0 ; GCN-NEXT: S_WAIT_EXPCNT 0 ; GCN-NEXT: S_WAIT_SAMPLECNT 0 ; GCN-NEXT: S_WAIT_BVHCNT 0 ; GCN-NEXT: S_WAIT_KMCNT 0 ; GCN-NEXT: S_CMP_EQ_U32 0, 0, implicit-def $scc ; GCN-NEXT: S_BARRIER_SIGNAL_ISFIRST_IMM -1, implicit-def $scc, implicit killed $scc ; GCN-NEXT: S_BARRIER_WAIT -1 ; GCN-NEXT: renamable $sgpr0 = S_CSELECT_B32 -1, 0, implicit killed $scc ; GCN-NEXT: renamable $vgpr0 = V_CNDMASK_B32_e64 0, 0, 0, 1, killed $sgpr0, implicit $exec ; GCN-NEXT: S_SETPC_B64_return undef $sgpr30_sgpr31, implicit killed $vgpr0 S_CMP_EQ_U32 0, 0, implicit-def $scc S_BARRIER_SIGNAL_ISFIRST_IMM -1, implicit-def $scc, implicit killed $scc S_BARRIER_WAIT -1 renamable $sgpr0 = S_CSELECT_B32 -1, 0, implicit killed $scc renamable $vgpr0 = V_CNDMASK_B32_e64 0, 0, 0, 1, killed $sgpr0, implicit $exec S_SETPC_B64_return undef $sgpr30_sgpr31, implicit killed $vgpr0 ... --- name: signal_isfirst_imm_different_barrier_wait body: | bb.0: ; GCN-LABEL: name: signal_isfirst_imm_different_barrier_wait ; GCN: S_WAIT_LOADCNT_DSCNT .Loadcnt_0_Dscnt_0 ; GCN-NEXT: S_WAIT_EXPCNT 0 ; GCN-NEXT: S_WAIT_SAMPLECNT 0 ; GCN-NEXT: S_WAIT_BVHCNT 0 ; GCN-NEXT: S_WAIT_KMCNT 0 ; GCN-NEXT: S_CMP_EQ_U32 0, 0, implicit-def $scc ; GCN-NEXT: S_BARRIER_SIGNAL_ISFIRST_IMM -1, implicit-def $scc, implicit killed $scc ; GCN-NEXT: S_BARRIER_WAIT 0 ; GCN-NEXT: S_WAIT_KMCNT 0 ; GCN-NEXT: renamable $sgpr0 = S_CSELECT_B32 -1, 0, implicit killed $scc ; GCN-NEXT: renamable $vgpr0 = V_CNDMASK_B32_e64 0, 0, 0, 1, killed $sgpr0, implicit $exec ; GCN-NEXT: S_SETPC_B64_return undef $sgpr30_sgpr31, implicit killed $vgpr0 S_CMP_EQ_U32 0, 0, implicit-def $scc S_BARRIER_SIGNAL_ISFIRST_IMM -1, implicit-def $scc, implicit killed $scc S_BARRIER_WAIT 0 renamable $sgpr0 = S_CSELECT_B32 -1, 0, implicit killed $scc renamable $vgpr0 = V_CNDMASK_B32_e64 0, 0, 0, 1, killed $sgpr0, implicit $exec S_SETPC_B64_return undef $sgpr30_sgpr31, implicit killed $vgpr0 ... --- name: signal_isfirst_m0_same_barrier_wait body: | bb.0: ; GCN-LABEL: name: signal_isfirst_m0_same_barrier_wait ; GCN: S_WAIT_LOADCNT_DSCNT .Loadcnt_0_Dscnt_0 ; GCN-NEXT: S_WAIT_EXPCNT 0 ; GCN-NEXT: S_WAIT_SAMPLECNT 0 ; GCN-NEXT: S_WAIT_BVHCNT 0 ; GCN-NEXT: S_WAIT_KMCNT 0 ; GCN-NEXT: S_CMP_EQ_U32 0, 0, implicit-def $scc ; GCN-NEXT: $m0 = S_MOV_B32 -1 ; GCN-NEXT: S_BARRIER_SIGNAL_ISFIRST_M0 implicit $m0, implicit-def $scc, implicit killed $scc ; GCN-NEXT: S_BARRIER_WAIT -1 ; GCN-NEXT: S_WAIT_KMCNT 0 ; GCN-NEXT: renamable $sgpr0 = S_CSELECT_B32 -1, 0, implicit killed $scc ; GCN-NEXT: renamable $vgpr0 = V_CNDMASK_B32_e64 0, 0, 0, 1, killed $sgpr0, implicit $exec ; GCN-NEXT: S_SETPC_B64_return undef $sgpr30_sgpr31, implicit killed $vgpr0 S_CMP_EQ_U32 0, 0, implicit-def $scc $m0 = S_MOV_B32 -1 S_BARRIER_SIGNAL_ISFIRST_M0 implicit $m0, implicit-def $scc, implicit killed $scc S_BARRIER_WAIT -1 renamable $sgpr0 = S_CSELECT_B32 -1, 0, implicit killed $scc renamable $vgpr0 = V_CNDMASK_B32_e64 0, 0, 0, 1, killed $sgpr0, implicit $exec S_SETPC_B64_return undef $sgpr30_sgpr31, implicit killed $vgpr0 ... --- name: signal_isfirst_m0_different_barrier_wait body: | bb.0: ; GCN-LABEL: name: signal_isfirst_m0_different_barrier_wait ; GCN: S_WAIT_LOADCNT_DSCNT .Loadcnt_0_Dscnt_0 ; GCN-NEXT: S_WAIT_EXPCNT 0 ; GCN-NEXT: S_WAIT_SAMPLECNT 0 ; GCN-NEXT: S_WAIT_BVHCNT 0 ; GCN-NEXT: S_WAIT_KMCNT 0 ; GCN-NEXT: S_CMP_EQ_U32 0, 0, implicit-def $scc ; GCN-NEXT: $m0 = S_MOV_B32 -1 ; GCN-NEXT: S_BARRIER_SIGNAL_ISFIRST_M0 implicit $m0, implicit-def $scc, implicit killed $scc ; GCN-NEXT: S_BARRIER_WAIT 0 ; GCN-NEXT: S_WAIT_KMCNT 0 ; GCN-NEXT: renamable $sgpr0 = S_CSELECT_B32 -1, 0, implicit killed $scc ; GCN-NEXT: renamable $vgpr0 = V_CNDMASK_B32_e64 0, 0, 0, 1, killed $sgpr0, implicit $exec ; GCN-NEXT: S_SETPC_B64_return undef $sgpr30_sgpr31, implicit killed $vgpr0 S_CMP_EQ_U32 0, 0, implicit-def $scc $m0 = S_MOV_B32 -1 S_BARRIER_SIGNAL_ISFIRST_M0 implicit $m0, implicit-def $scc, implicit killed $scc S_BARRIER_WAIT 0 renamable $sgpr0 = S_CSELECT_B32 -1, 0, implicit killed $scc renamable $vgpr0 = V_CNDMASK_B32_e64 0, 0, 0, 1, killed $sgpr0, implicit $exec S_SETPC_B64_return undef $sgpr30_sgpr31, implicit killed $vgpr0 ...