| # 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-pre-emit-peephole -verify-machineinstrs %s -o - | FileCheck %s |
| |
| --- |
| name: skip_wait_loadcnt |
| body: | |
| ; CHECK-LABEL: name: skip_wait_loadcnt |
| ; CHECK: bb.0: |
| ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: S_CBRANCH_EXECZ %bb.2, implicit $exec |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: bb.1: |
| ; CHECK-NEXT: successors: %bb.2(0x80000000) |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: V_NOP_e32 implicit $exec |
| ; CHECK-NEXT: S_WAIT_LOADCNT 0 |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: bb.2: |
| ; CHECK-NEXT: S_ENDPGM 0 |
| bb.0: |
| successors: %bb.1, %bb.2 |
| S_CBRANCH_EXECZ %bb.2, implicit $exec |
| |
| bb.1: |
| successors: %bb.2 |
| V_NOP_e32 implicit $exec |
| S_WAIT_LOADCNT 0 |
| |
| bb.2: |
| S_ENDPGM 0 |
| ... |
| |
| --- |
| name: skip_wait_loadcnt_dscnt |
| body: | |
| ; CHECK-LABEL: name: skip_wait_loadcnt_dscnt |
| ; CHECK: bb.0: |
| ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: S_CBRANCH_EXECZ %bb.2, implicit $exec |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: bb.1: |
| ; CHECK-NEXT: successors: %bb.2(0x80000000) |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: V_NOP_e32 implicit $exec |
| ; CHECK-NEXT: S_WAIT_LOADCNT_DSCNT 0 |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: bb.2: |
| ; CHECK-NEXT: S_ENDPGM 0 |
| bb.0: |
| successors: %bb.1, %bb.2 |
| S_CBRANCH_EXECZ %bb.2, implicit $exec |
| |
| bb.1: |
| successors: %bb.2 |
| V_NOP_e32 implicit $exec |
| S_WAIT_LOADCNT_DSCNT 0 |
| |
| bb.2: |
| S_ENDPGM 0 |
| ... |
| |
| --- |
| name: skip_wait_storecnt |
| body: | |
| ; CHECK-LABEL: name: skip_wait_storecnt |
| ; CHECK: bb.0: |
| ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: S_CBRANCH_EXECZ %bb.2, implicit $exec |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: bb.1: |
| ; CHECK-NEXT: successors: %bb.2(0x80000000) |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: V_NOP_e32 implicit $exec |
| ; CHECK-NEXT: S_WAIT_STORECNT 0 |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: bb.2: |
| ; CHECK-NEXT: S_ENDPGM 0 |
| bb.0: |
| successors: %bb.1, %bb.2 |
| S_CBRANCH_EXECZ %bb.2, implicit $exec |
| |
| bb.1: |
| successors: %bb.2 |
| V_NOP_e32 implicit $exec |
| S_WAIT_STORECNT 0 |
| |
| bb.2: |
| S_ENDPGM 0 |
| ... |
| |
| --- |
| name: skip_wait_storecnt_dscnt |
| body: | |
| ; CHECK-LABEL: name: skip_wait_storecnt_dscnt |
| ; CHECK: bb.0: |
| ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: S_CBRANCH_EXECZ %bb.2, implicit $exec |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: bb.1: |
| ; CHECK-NEXT: successors: %bb.2(0x80000000) |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: V_NOP_e32 implicit $exec |
| ; CHECK-NEXT: S_WAIT_STORECNT_DSCNT 0 |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: bb.2: |
| ; CHECK-NEXT: S_ENDPGM 0 |
| bb.0: |
| successors: %bb.1, %bb.2 |
| S_CBRANCH_EXECZ %bb.2, implicit $exec |
| |
| bb.1: |
| successors: %bb.2 |
| V_NOP_e32 implicit $exec |
| S_WAIT_STORECNT_DSCNT 0 |
| |
| bb.2: |
| S_ENDPGM 0 |
| ... |
| |
| --- |
| name: skip_wait_samplecnt |
| body: | |
| ; CHECK-LABEL: name: skip_wait_samplecnt |
| ; CHECK: bb.0: |
| ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: S_CBRANCH_EXECZ %bb.2, implicit $exec |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: bb.1: |
| ; CHECK-NEXT: successors: %bb.2(0x80000000) |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: V_NOP_e32 implicit $exec |
| ; CHECK-NEXT: S_WAIT_SAMPLECNT 0 |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: bb.2: |
| ; CHECK-NEXT: S_ENDPGM 0 |
| bb.0: |
| successors: %bb.1, %bb.2 |
| S_CBRANCH_EXECZ %bb.2, implicit $exec |
| |
| bb.1: |
| successors: %bb.2 |
| V_NOP_e32 implicit $exec |
| S_WAIT_SAMPLECNT 0 |
| |
| bb.2: |
| S_ENDPGM 0 |
| ... |
| |
| --- |
| name: skip_wait_bvhcnt |
| body: | |
| ; CHECK-LABEL: name: skip_wait_bvhcnt |
| ; CHECK: bb.0: |
| ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: S_CBRANCH_EXECZ %bb.2, implicit $exec |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: bb.1: |
| ; CHECK-NEXT: successors: %bb.2(0x80000000) |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: V_NOP_e32 implicit $exec |
| ; CHECK-NEXT: S_WAIT_BVHCNT 0 |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: bb.2: |
| ; CHECK-NEXT: S_ENDPGM 0 |
| bb.0: |
| successors: %bb.1, %bb.2 |
| S_CBRANCH_EXECZ %bb.2, implicit $exec |
| |
| bb.1: |
| successors: %bb.2 |
| V_NOP_e32 implicit $exec |
| S_WAIT_BVHCNT 0 |
| |
| bb.2: |
| S_ENDPGM 0 |
| ... |
| |
| --- |
| name: skip_wait_expcnt |
| body: | |
| ; CHECK-LABEL: name: skip_wait_expcnt |
| ; CHECK: bb.0: |
| ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: S_CBRANCH_EXECZ %bb.2, implicit $exec |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: bb.1: |
| ; CHECK-NEXT: successors: %bb.2(0x80000000) |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: V_NOP_e32 implicit $exec |
| ; CHECK-NEXT: S_WAIT_EXPCNT 0 |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: bb.2: |
| ; CHECK-NEXT: S_ENDPGM 0 |
| bb.0: |
| successors: %bb.1, %bb.2 |
| S_CBRANCH_EXECZ %bb.2, implicit $exec |
| |
| bb.1: |
| successors: %bb.2 |
| V_NOP_e32 implicit $exec |
| S_WAIT_EXPCNT 0 |
| |
| bb.2: |
| S_ENDPGM 0 |
| ... |
| |
| --- |
| name: skip_wait_dscnt |
| body: | |
| ; CHECK-LABEL: name: skip_wait_dscnt |
| ; CHECK: bb.0: |
| ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: S_CBRANCH_EXECZ %bb.2, implicit $exec |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: bb.1: |
| ; CHECK-NEXT: successors: %bb.2(0x80000000) |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: V_NOP_e32 implicit $exec |
| ; CHECK-NEXT: S_WAIT_DSCNT 0 |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: bb.2: |
| ; CHECK-NEXT: S_ENDPGM 0 |
| bb.0: |
| successors: %bb.1, %bb.2 |
| S_CBRANCH_EXECZ %bb.2, implicit $exec |
| |
| bb.1: |
| successors: %bb.2 |
| V_NOP_e32 implicit $exec |
| S_WAIT_DSCNT 0 |
| |
| bb.2: |
| S_ENDPGM 0 |
| ... |
| |
| --- |
| name: skip_wait_kmcnt |
| body: | |
| ; CHECK-LABEL: name: skip_wait_kmcnt |
| ; CHECK: bb.0: |
| ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: S_CBRANCH_EXECZ %bb.2, implicit $exec |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: bb.1: |
| ; CHECK-NEXT: successors: %bb.2(0x80000000) |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: V_NOP_e32 implicit $exec |
| ; CHECK-NEXT: S_WAIT_KMCNT 0 |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: bb.2: |
| ; CHECK-NEXT: S_ENDPGM 0 |
| bb.0: |
| successors: %bb.1, %bb.2 |
| S_CBRANCH_EXECZ %bb.2, implicit $exec |
| |
| bb.1: |
| successors: %bb.2 |
| V_NOP_e32 implicit $exec |
| S_WAIT_KMCNT 0 |
| |
| bb.2: |
| S_ENDPGM 0 |
| ... |
| |
| --- |
| name: skip_wait_idle |
| body: | |
| ; CHECK-LABEL: name: skip_wait_idle |
| ; CHECK: bb.0: |
| ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: S_CBRANCH_EXECZ %bb.2, implicit $exec |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: bb.1: |
| ; CHECK-NEXT: successors: %bb.2(0x80000000) |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: V_NOP_e32 implicit $exec |
| ; CHECK-NEXT: S_WAIT_IDLE |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: bb.2: |
| ; CHECK-NEXT: S_ENDPGM 0 |
| bb.0: |
| successors: %bb.1, %bb.2 |
| S_CBRANCH_EXECZ %bb.2, implicit $exec |
| |
| bb.1: |
| successors: %bb.2 |
| V_NOP_e32 implicit $exec |
| S_WAIT_IDLE |
| |
| bb.2: |
| S_ENDPGM 0 |
| ... |
| |
| --- |
| name: skip_wait_event |
| body: | |
| ; CHECK-LABEL: name: skip_wait_event |
| ; CHECK: bb.0: |
| ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: S_CBRANCH_EXECZ %bb.2, implicit $exec |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: bb.1: |
| ; CHECK-NEXT: successors: %bb.2(0x80000000) |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: V_NOP_e32 implicit $exec |
| ; CHECK-NEXT: S_WAIT_EVENT 0 |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: bb.2: |
| ; CHECK-NEXT: S_ENDPGM 0 |
| bb.0: |
| successors: %bb.1, %bb.2 |
| S_CBRANCH_EXECZ %bb.2, implicit $exec |
| |
| bb.1: |
| successors: %bb.2 |
| V_NOP_e32 implicit $exec |
| S_WAIT_EVENT 0 |
| |
| bb.2: |
| S_ENDPGM 0 |
| ... |
| |
| --- |
| name: skip_barrier_signal_imm |
| body: | |
| ; CHECK-LABEL: name: skip_barrier_signal_imm |
| ; CHECK: bb.0: |
| ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: S_CBRANCH_EXECZ %bb.2, implicit $exec |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: bb.1: |
| ; CHECK-NEXT: successors: %bb.2(0x80000000) |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: V_NOP_e32 implicit $exec |
| ; CHECK-NEXT: S_BARRIER_SIGNAL_IMM -1 |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: bb.2: |
| ; CHECK-NEXT: S_ENDPGM 0 |
| bb.0: |
| successors: %bb.1, %bb.2 |
| S_CBRANCH_EXECZ %bb.2, implicit $exec |
| |
| bb.1: |
| successors: %bb.2 |
| V_NOP_e32 implicit $exec |
| S_BARRIER_SIGNAL_IMM -1 |
| |
| bb.2: |
| S_ENDPGM 0 |
| ... |
| |
| --- |
| name: skip_barrier_signal_isfirst_imm |
| body: | |
| ; CHECK-LABEL: name: skip_barrier_signal_isfirst_imm |
| ; CHECK: bb.0: |
| ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: S_CBRANCH_EXECZ %bb.2, implicit $exec |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: bb.1: |
| ; CHECK-NEXT: successors: %bb.2(0x80000000) |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: V_NOP_e32 implicit $exec |
| ; CHECK-NEXT: S_BARRIER_SIGNAL_ISFIRST_IMM -1, implicit-def $scc |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: bb.2: |
| ; CHECK-NEXT: S_ENDPGM 0 |
| bb.0: |
| successors: %bb.1, %bb.2 |
| S_CBRANCH_EXECZ %bb.2, implicit $exec |
| |
| bb.1: |
| successors: %bb.2 |
| V_NOP_e32 implicit $exec |
| S_BARRIER_SIGNAL_ISFIRST_IMM -1, implicit-def $scc |
| |
| bb.2: |
| S_ENDPGM 0 |
| ... |
| |
| --- |
| name: skip_barrier_signal_m0 |
| body: | |
| ; CHECK-LABEL: name: skip_barrier_signal_m0 |
| ; CHECK: bb.0: |
| ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: S_CBRANCH_EXECZ %bb.2, implicit $exec |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: bb.1: |
| ; CHECK-NEXT: successors: %bb.2(0x80000000) |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: V_NOP_e32 implicit $exec |
| ; CHECK-NEXT: $m0 = S_MOV_B32 -1 |
| ; CHECK-NEXT: S_BARRIER_SIGNAL_M0 implicit $m0 |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: bb.2: |
| ; CHECK-NEXT: S_ENDPGM 0 |
| bb.0: |
| successors: %bb.1, %bb.2 |
| S_CBRANCH_EXECZ %bb.2, implicit $exec |
| |
| bb.1: |
| successors: %bb.2 |
| V_NOP_e32 implicit $exec |
| $m0 = S_MOV_B32 -1 |
| S_BARRIER_SIGNAL_M0 implicit $m0 |
| |
| bb.2: |
| S_ENDPGM 0 |
| ... |
| |
| --- |
| name: skip_barrier_signal_isfirst_m0 |
| body: | |
| ; CHECK-LABEL: name: skip_barrier_signal_isfirst_m0 |
| ; CHECK: bb.0: |
| ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: S_CBRANCH_EXECZ %bb.2, implicit $exec |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: bb.1: |
| ; CHECK-NEXT: successors: %bb.2(0x80000000) |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: V_NOP_e32 implicit $exec |
| ; CHECK-NEXT: $m0 = S_MOV_B32 -1 |
| ; CHECK-NEXT: S_BARRIER_SIGNAL_ISFIRST_M0 implicit $m0, implicit-def $scc |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: bb.2: |
| ; CHECK-NEXT: S_ENDPGM 0 |
| bb.0: |
| successors: %bb.1, %bb.2 |
| S_CBRANCH_EXECZ %bb.2, implicit $exec |
| |
| bb.1: |
| successors: %bb.2 |
| V_NOP_e32 implicit $exec |
| $m0 = S_MOV_B32 -1 |
| S_BARRIER_SIGNAL_ISFIRST_M0 implicit $m0, implicit-def $scc |
| |
| bb.2: |
| S_ENDPGM 0 |
| ... |
| |
| --- |
| name: skip_barrier_wait |
| body: | |
| ; CHECK-LABEL: name: skip_barrier_wait |
| ; CHECK: bb.0: |
| ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: S_CBRANCH_EXECZ %bb.2, implicit $exec |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: bb.1: |
| ; CHECK-NEXT: successors: %bb.2(0x80000000) |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: V_NOP_e32 implicit $exec |
| ; CHECK-NEXT: S_BARRIER_WAIT -1 |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: bb.2: |
| ; CHECK-NEXT: S_ENDPGM 0 |
| bb.0: |
| successors: %bb.1, %bb.2 |
| S_CBRANCH_EXECZ %bb.2, implicit $exec |
| |
| bb.1: |
| successors: %bb.2 |
| V_NOP_e32 implicit $exec |
| S_BARRIER_WAIT -1 |
| |
| bb.2: |
| S_ENDPGM 0 |
| ... |
| |