| # 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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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 |
| ... |