# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6 # RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1250 -run-pass si-insert-waitcnts -o - %s | FileCheck -check-prefix=GCN %s --- name: drain_cbranch tracksRegLiveness: true machineFunctionInfo: isEntryFunction: true body: | ; GCN-LABEL: name: drain_cbranch ; GCN: bb.0: ; GCN-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) ; GCN-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $scc ; GCN-NEXT: {{ $}} ; GCN-NEXT: GLOBAL_PREFETCH_B8_SADDR undef $sgpr0_sgpr1, undef $vgpr0, 0, 8, implicit $exec ; GCN-NEXT: V_NOP_e32 implicit $exec ; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec ; GCN-NEXT: S_CBRANCH_SCC1 %bb.2, implicit $scc ; GCN-NEXT: {{ $}} ; GCN-NEXT: bb.1: ; GCN-NEXT: liveins: $vgpr3 ; GCN-NEXT: {{ $}} ; GCN-NEXT: $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec ; GCN-NEXT: S_ENDPGM 0 ; GCN-NEXT: {{ $}} ; GCN-NEXT: bb.2: ; GCN-NEXT: liveins: $vgpr3 ; GCN-NEXT: {{ $}} ; GCN-NEXT: $vgpr2 = V_LSHLREV_B32_e64 32, $vgpr3, implicit $exec ; GCN-NEXT: S_ENDPGM 0 bb.0: successors: %bb.1, %bb.2 liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $scc GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec S_CBRANCH_SCC1 %bb.2, implicit $scc bb.1: liveins: $vgpr3 $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec S_ENDPGM 0 bb.2: liveins: $vgpr3 $vgpr2 = V_LSHLREV_B32_e64 32, $vgpr3, implicit $exec S_ENDPGM 0 ... --- name: drain_call tracksRegLiveness: true body: | bb.0: liveins: $vgpr0, $vgpr1, $vgpr2, $sgpr0_sgpr1 ; GCN-LABEL: name: drain_call ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $sgpr0_sgpr1 ; GCN-NEXT: {{ $}} ; GCN-NEXT: S_WAIT_LOADCNT_DSCNT .Loadcnt_0_Dscnt_0 ; GCN-NEXT: S_WAIT_KMCNT 0 ; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec ; GCN-NEXT: $sgpr30_sgpr31 = SI_CALL killed $sgpr0_sgpr1, 0, csr_amdgpu ; GCN-NEXT: $vgpr2 = V_MOV_B32_e32 0, implicit $exec ; GCN-NEXT: SI_RETURN implicit $vgpr2 GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec $sgpr30_sgpr31 = SI_CALL killed $sgpr0_sgpr1, 0, csr_amdgpu $vgpr2 = V_MOV_B32_e32 0, implicit $exec SI_RETURN implicit $vgpr2 ... --- name: drain_indirect_branch tracksRegLiveness: true machineFunctionInfo: isEntryFunction: true body: | ; GCN-LABEL: name: drain_indirect_branch ; GCN: bb.0: ; GCN-NEXT: successors: %bb.1(0x80000000) ; GCN-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr0_sgpr1 ; GCN-NEXT: {{ $}} ; GCN-NEXT: GLOBAL_PREFETCH_B8_SADDR undef $sgpr0_sgpr1, undef $vgpr0, 0, 8, implicit $exec ; GCN-NEXT: V_NOP_e32 implicit $exec ; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec ; GCN-NEXT: S_SETPC_B64 $sgpr0_sgpr1 ; GCN-NEXT: {{ $}} ; GCN-NEXT: bb.1: ; GCN-NEXT: liveins: $vgpr3 ; GCN-NEXT: {{ $}} ; GCN-NEXT: $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec ; GCN-NEXT: S_ENDPGM 0 bb.0: successors: %bb.1 liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr0_sgpr1 GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec S_SETPC_B64 $sgpr0_sgpr1 bb.1: liveins: $vgpr3 $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec S_ENDPGM 0 ... --- name: drain_trap tracksRegLiveness: true machineFunctionInfo: isEntryFunction: true body: | bb.0: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3 ; GCN-LABEL: name: drain_trap ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3 ; GCN-NEXT: {{ $}} ; GCN-NEXT: GLOBAL_PREFETCH_B8_SADDR undef $sgpr0_sgpr1, undef $vgpr0, 0, 8, implicit $exec ; GCN-NEXT: V_NOP_e32 implicit $exec ; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec ; GCN-NEXT: S_TRAP 0 ; GCN-NEXT: $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec ; GCN-NEXT: S_ENDPGM 0 GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec S_TRAP 0 $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec S_ENDPGM 0 ... --- name: drain_getreg tracksRegLiveness: true machineFunctionInfo: isEntryFunction: true body: | bb.0: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3 ; GCN-LABEL: name: drain_getreg ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3 ; GCN-NEXT: {{ $}} ; GCN-NEXT: GLOBAL_PREFETCH_B8_SADDR undef $sgpr0_sgpr1, undef $vgpr0, 0, 8, implicit $exec ; GCN-NEXT: V_NOP_e32 implicit $exec ; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec ; GCN-NEXT: $sgpr0 = S_GETREG_B32 1, implicit $mode ; GCN-NEXT: $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec ; GCN-NEXT: S_ENDPGM 0 GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec $sgpr0 = S_GETREG_B32 1, implicit $mode $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec S_ENDPGM 0 ... --- name: drain_setreg tracksRegLiveness: true machineFunctionInfo: isEntryFunction: true body: | bb.0: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr0 ; GCN-LABEL: name: drain_setreg ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr0 ; GCN-NEXT: {{ $}} ; GCN-NEXT: GLOBAL_PREFETCH_B8_SADDR undef $sgpr0_sgpr1, undef $vgpr0, 0, 8, implicit $exec ; GCN-NEXT: V_NOP_e32 implicit $exec ; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec ; GCN-NEXT: S_SETREG_B32 $sgpr0, 1, implicit-def $mode, implicit $mode ; GCN-NEXT: $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec ; GCN-NEXT: S_ENDPGM 0 GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec S_SETREG_B32 $sgpr0, 1, implicit-def $mode, implicit $mode $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec S_ENDPGM 0 ... --- name: drain_setreg_mode tracksRegLiveness: true machineFunctionInfo: isEntryFunction: true body: | bb.0: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr0 ; GCN-LABEL: name: drain_setreg_mode ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr0 ; GCN-NEXT: {{ $}} ; GCN-NEXT: GLOBAL_PREFETCH_B8_SADDR undef $sgpr0_sgpr1, undef $vgpr0, 0, 8, implicit $exec ; GCN-NEXT: V_NOP_e32 implicit $exec ; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec ; GCN-NEXT: S_SETREG_B32_mode $sgpr0, 1, implicit-def $mode, implicit $mode ; GCN-NEXT: $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec ; GCN-NEXT: S_ENDPGM 0 GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec S_SETREG_B32_mode $sgpr0, 1, implicit-def $mode, implicit $mode $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec S_ENDPGM 0 ... --- name: drain_setreg_imm32 tracksRegLiveness: true machineFunctionInfo: isEntryFunction: true body: | bb.0: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3 ; GCN-LABEL: name: drain_setreg_imm32 ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3 ; GCN-NEXT: {{ $}} ; GCN-NEXT: GLOBAL_PREFETCH_B8_SADDR undef $sgpr0_sgpr1, undef $vgpr0, 0, 8, implicit $exec ; GCN-NEXT: V_NOP_e32 implicit $exec ; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec ; GCN-NEXT: S_SETREG_IMM32_B32 0, 1, implicit-def $mode, implicit $mode ; GCN-NEXT: $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec ; GCN-NEXT: S_ENDPGM 0 GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec S_SETREG_IMM32_B32 0, 1, implicit-def $mode, implicit $mode $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec S_ENDPGM 0 ... --- name: drain_setreg_imm32_mode tracksRegLiveness: true machineFunctionInfo: isEntryFunction: true body: | bb.0: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3 ; GCN-LABEL: name: drain_setreg_imm32_mode ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3 ; GCN-NEXT: {{ $}} ; GCN-NEXT: GLOBAL_PREFETCH_B8_SADDR undef $sgpr0_sgpr1, undef $vgpr0, 0, 8, implicit $exec ; GCN-NEXT: V_NOP_e32 implicit $exec ; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec ; GCN-NEXT: S_SETREG_IMM32_B32_mode 0, 1, implicit-def $mode, implicit $mode ; GCN-NEXT: $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec ; GCN-NEXT: S_ENDPGM 0 GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec S_SETREG_IMM32_B32_mode 0, 1, implicit-def $mode, implicit $mode $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec S_ENDPGM 0 ... --- name: drain_sendmsg tracksRegLiveness: true machineFunctionInfo: isEntryFunction: true body: | bb.0: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $m0 ; GCN-LABEL: name: drain_sendmsg ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $m0 ; GCN-NEXT: {{ $}} ; GCN-NEXT: GLOBAL_PREFETCH_B8_SADDR undef $sgpr0_sgpr1, undef $vgpr0, 0, 8, implicit $exec ; GCN-NEXT: V_NOP_e32 implicit $exec ; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec ; GCN-NEXT: S_SENDMSG 1, implicit $exec, implicit $m0 ; GCN-NEXT: $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec ; GCN-NEXT: S_ENDPGM 0 GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec S_SENDMSG 1, implicit $exec, implicit $m0 $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec S_ENDPGM 0 ... --- name: drain_sendmsg_halt tracksRegLiveness: true machineFunctionInfo: isEntryFunction: true body: | bb.0: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $m0 ; GCN-LABEL: name: drain_sendmsg_halt ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $m0 ; GCN-NEXT: {{ $}} ; GCN-NEXT: GLOBAL_PREFETCH_B8_SADDR undef $sgpr0_sgpr1, undef $vgpr0, 0, 8, implicit $exec ; GCN-NEXT: V_NOP_e32 implicit $exec ; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec ; GCN-NEXT: S_SENDMSGHALT 1, implicit $exec, implicit $m0 ; GCN-NEXT: $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec ; GCN-NEXT: S_ENDPGM 0 GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec S_SENDMSGHALT 1, implicit $exec, implicit $m0 $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec S_ENDPGM 0 ... --- name: drain_sendmsg_rtn_b32 tracksRegLiveness: true machineFunctionInfo: isEntryFunction: true body: | bb.0: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3 ; GCN-LABEL: name: drain_sendmsg_rtn_b32 ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3 ; GCN-NEXT: {{ $}} ; GCN-NEXT: GLOBAL_PREFETCH_B8_SADDR undef $sgpr0_sgpr1, undef $vgpr0, 0, 8, implicit $exec ; GCN-NEXT: V_NOP_e32 implicit $exec ; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec ; GCN-NEXT: $sgpr0 = S_SENDMSG_RTN_B32 1 ; GCN-NEXT: $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec ; GCN-NEXT: S_ENDPGM 0 GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec $sgpr0 = S_SENDMSG_RTN_B32 1 $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec S_ENDPGM 0 ... --- name: drain_sendmsg_rtn_b64 tracksRegLiveness: true machineFunctionInfo: isEntryFunction: true body: | bb.0: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3 ; GCN-LABEL: name: drain_sendmsg_rtn_b64 ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3 ; GCN-NEXT: {{ $}} ; GCN-NEXT: GLOBAL_PREFETCH_B8_SADDR undef $sgpr0_sgpr1, undef $vgpr0, 0, 8, implicit $exec ; GCN-NEXT: V_NOP_e32 implicit $exec ; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec ; GCN-NEXT: $sgpr0_sgpr1 = S_SENDMSG_RTN_B64 1 ; GCN-NEXT: $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec ; GCN-NEXT: S_ENDPGM 0 GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec $sgpr0_sgpr1 = S_SENDMSG_RTN_B64 1 $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec S_ENDPGM 0 ... --- name: drain_barrier_wait tracksRegLiveness: true machineFunctionInfo: isEntryFunction: true body: | bb.0: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3 ; GCN-LABEL: name: drain_barrier_wait ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3 ; GCN-NEXT: {{ $}} ; GCN-NEXT: GLOBAL_PREFETCH_B8_SADDR undef $sgpr0_sgpr1, undef $vgpr0, 0, 8, implicit $exec ; GCN-NEXT: V_NOP_e32 implicit $exec ; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec ; GCN-NEXT: S_BARRIER_WAIT 1 ; GCN-NEXT: $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec ; GCN-NEXT: S_ENDPGM 0 GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec S_BARRIER_WAIT 1 $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec S_ENDPGM 0 ... --- name: drain_barrier_signal_m0 tracksRegLiveness: true machineFunctionInfo: isEntryFunction: true body: | bb.0: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $m0 ; GCN-LABEL: name: drain_barrier_signal_m0 ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $m0 ; GCN-NEXT: {{ $}} ; GCN-NEXT: GLOBAL_PREFETCH_B8_SADDR undef $sgpr0_sgpr1, undef $vgpr0, 0, 8, implicit $exec ; GCN-NEXT: V_NOP_e32 implicit $exec ; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec ; GCN-NEXT: S_BARRIER_SIGNAL_M0 implicit $m0 ; GCN-NEXT: $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec ; GCN-NEXT: S_ENDPGM 0 GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec S_BARRIER_SIGNAL_M0 implicit $m0 $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec S_ENDPGM 0 ... --- name: drain_barrier_signal tracksRegLiveness: true machineFunctionInfo: isEntryFunction: true body: | bb.0: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3 ; GCN-LABEL: name: drain_barrier_signal ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3 ; GCN-NEXT: {{ $}} ; GCN-NEXT: GLOBAL_PREFETCH_B8_SADDR undef $sgpr0_sgpr1, undef $vgpr0, 0, 8, implicit $exec ; GCN-NEXT: V_NOP_e32 implicit $exec ; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec ; GCN-NEXT: S_BARRIER_SIGNAL_IMM 1 ; GCN-NEXT: $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec ; GCN-NEXT: S_ENDPGM 0 GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec S_BARRIER_SIGNAL_IMM 1 $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec S_ENDPGM 0 ... --- name: drain_barrier_signal_isfirst_m0 tracksRegLiveness: true machineFunctionInfo: isEntryFunction: true body: | bb.0: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $m0, $scc ; GCN-LABEL: name: drain_barrier_signal_isfirst_m0 ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $m0, $scc ; GCN-NEXT: {{ $}} ; GCN-NEXT: GLOBAL_PREFETCH_B8_SADDR undef $sgpr0_sgpr1, undef $vgpr0, 0, 8, implicit $exec ; GCN-NEXT: V_NOP_e32 implicit $exec ; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec ; GCN-NEXT: S_BARRIER_SIGNAL_ISFIRST_M0 implicit $m0, implicit-def $scc, implicit $scc ; GCN-NEXT: $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec ; GCN-NEXT: S_ENDPGM 0 GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec S_BARRIER_SIGNAL_ISFIRST_M0 implicit $m0, implicit-def $scc, implicit $scc $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec S_ENDPGM 0 ... --- name: drain_barrier_signal_isfirst tracksRegLiveness: true machineFunctionInfo: isEntryFunction: true body: | bb.0: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $scc ; GCN-LABEL: name: drain_barrier_signal_isfirst ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $scc ; GCN-NEXT: {{ $}} ; GCN-NEXT: GLOBAL_PREFETCH_B8_SADDR undef $sgpr0_sgpr1, undef $vgpr0, 0, 8, implicit $exec ; GCN-NEXT: V_NOP_e32 implicit $exec ; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec ; GCN-NEXT: S_BARRIER_SIGNAL_ISFIRST_IMM 1, implicit-def $scc, implicit $scc ; GCN-NEXT: $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec ; GCN-NEXT: S_ENDPGM 0 GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec S_BARRIER_SIGNAL_ISFIRST_IMM 1, implicit-def $scc, implicit $scc $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec S_ENDPGM 0 ...