1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -march=amdgcn -mcpu=gfx900 -run-pass=si-remove-short-exec-branches -amdgpu-skip-threshold=10 -verify-machineinstrs %s -o - | FileCheck %s 3# Make sure mandatory skips are not removed around mode defs. 4# FIXME: -amdgpu-skip-threshold seems to be backwards. 5 6--- 7 8name: need_skip_gpr_idx_mode 9body: | 10 ; CHECK-LABEL: name: need_skip_gpr_idx_mode 11 ; CHECK: bb.0: 12 ; CHECK: successors: %bb.2(0x40000000), %bb.1(0x40000000) 13 ; CHECK: S_CBRANCH_EXECZ %bb.2, implicit $exec 14 ; CHECK: bb.1: 15 ; CHECK: successors: %bb.2(0x80000000) 16 ; CHECK: $vgpr0 = V_MOV_B32_e32 0, implicit $exec 17 ; CHECK: S_SET_GPR_IDX_MODE 0, implicit-def $mode, implicit-def $m0, implicit $mode, implicit $m0 18 ; CHECK: bb.2: 19 ; CHECK: S_ENDPGM 0 20 bb.0: 21 S_CBRANCH_EXECZ %bb.2, implicit $exec 22 23 bb.1: 24 $vgpr0 = V_MOV_B32_e32 0, implicit $exec 25 S_SET_GPR_IDX_MODE 0, implicit-def $mode, implicit-def $m0, implicit $mode, implicit $m0 26 27 bb.2: 28 S_ENDPGM 0 29... 30 31--- 32 33name: need_skip_gpr_idx_on 34body: | 35 ; CHECK-LABEL: name: need_skip_gpr_idx_on 36 ; CHECK: bb.0: 37 ; CHECK: successors: %bb.2(0x40000000), %bb.1(0x40000000) 38 ; CHECK: S_CBRANCH_EXECZ %bb.2, implicit $exec 39 ; CHECK: bb.1: 40 ; CHECK: successors: %bb.2(0x80000000) 41 ; CHECK: $vgpr0 = V_MOV_B32_e32 0, implicit $exec 42 ; CHECK: S_SET_GPR_IDX_ON $sgpr0, 0, implicit-def $mode, implicit-def $m0, implicit $mode, implicit $m0 43 ; CHECK: bb.2: 44 ; CHECK: S_ENDPGM 0 45 bb.0: 46 liveins: $sgpr0 47 S_CBRANCH_EXECZ %bb.2, implicit $exec 48 49 bb.1: 50 liveins: $sgpr0 51 $vgpr0 = V_MOV_B32_e32 0, implicit $exec 52 S_SET_GPR_IDX_ON $sgpr0, 0, implicit-def $mode, implicit-def $m0, implicit $mode, implicit $m0 53 54 bb.2: 55 S_ENDPGM 0 56... 57 58--- 59 60name: need_skip_gpr_idx_off 61body: | 62 ; CHECK-LABEL: name: need_skip_gpr_idx_off 63 ; CHECK: bb.0: 64 ; CHECK: successors: %bb.2(0x40000000), %bb.1(0x40000000) 65 ; CHECK: S_CBRANCH_EXECZ %bb.2, implicit $exec 66 ; CHECK: bb.1: 67 ; CHECK: successors: %bb.2(0x80000000) 68 ; CHECK: $vgpr0 = V_MOV_B32_e32 0, implicit $exec 69 ; CHECK: S_SET_GPR_IDX_OFF implicit-def $mode, implicit $mode 70 ; CHECK: bb.2: 71 ; CHECK: S_ENDPGM 0 72 bb.0: 73 S_CBRANCH_EXECZ %bb.2, implicit $exec 74 75 bb.1: 76 $vgpr0 = V_MOV_B32_e32 0, implicit $exec 77 S_SET_GPR_IDX_OFF implicit-def $mode, implicit $mode 78 79 bb.2: 80 S_ENDPGM 0 81... 82 83--- 84 85name: need_skip_gpr_idx_idx 86body: | 87 ; CHECK-LABEL: name: need_skip_gpr_idx_idx 88 ; CHECK: bb.0: 89 ; CHECK: successors: %bb.2(0x40000000), %bb.1(0x40000000) 90 ; CHECK: S_CBRANCH_EXECZ %bb.2, implicit $exec 91 ; CHECK: bb.1: 92 ; CHECK: successors: %bb.2(0x80000000) 93 ; CHECK: $vgpr0 = V_MOV_B32_e32 0, implicit $exec 94 ; CHECK: S_SET_GPR_IDX_IDX $sgpr0, implicit-def $mode, implicit-def $m0, implicit $mode, implicit $m0 95 ; CHECK: bb.2: 96 ; CHECK: S_ENDPGM 0 97 bb.0: 98 liveins: $sgpr0 99 S_CBRANCH_EXECZ %bb.2, implicit $exec 100 101 bb.1: 102 liveins: $sgpr0 103 $vgpr0 = V_MOV_B32_e32 0, implicit $exec 104 S_SET_GPR_IDX_IDX $sgpr0, implicit-def $mode, implicit-def $m0, implicit $mode, implicit $m0 105 106 bb.2: 107 S_ENDPGM 0 108... 109