128 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -run-pass=si-pre-emit-peephole -verify-machineinstrs %s -o - | FileCheck %s3# Make sure mandatory skips are not removed around mode defs.4 5---6 7name: need_skip_gpr_idx_mode8body: |9 ; CHECK-LABEL: name: need_skip_gpr_idx_mode10 ; CHECK: bb.0:11 ; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)12 ; CHECK-NEXT: {{ $}}13 ; CHECK-NEXT: S_CBRANCH_EXECZ %bb.2, implicit $exec14 ; CHECK-NEXT: {{ $}}15 ; CHECK-NEXT: bb.1:16 ; CHECK-NEXT: successors: %bb.2(0x80000000)17 ; CHECK-NEXT: {{ $}}18 ; CHECK-NEXT: $vgpr0 = V_MOV_B32_e32 0, implicit $exec19 ; CHECK-NEXT: S_SET_GPR_IDX_MODE 0, implicit-def $mode, implicit-def $m0, implicit $mode, implicit $m020 ; CHECK-NEXT: {{ $}}21 ; CHECK-NEXT: bb.2:22 ; CHECK-NEXT: S_ENDPGM 023 bb.0:24 S_CBRANCH_EXECZ %bb.2, implicit $exec25 26 bb.1:27 $vgpr0 = V_MOV_B32_e32 0, implicit $exec28 S_SET_GPR_IDX_MODE 0, implicit-def $mode, implicit-def $m0, implicit $mode, implicit $m029 30 bb.2:31 S_ENDPGM 032...33 34---35 36name: need_skip_gpr_idx_on37body: |38 ; CHECK-LABEL: name: need_skip_gpr_idx_on39 ; CHECK: bb.0:40 ; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)41 ; CHECK-NEXT: liveins: $sgpr042 ; CHECK-NEXT: {{ $}}43 ; CHECK-NEXT: S_CBRANCH_EXECZ %bb.2, implicit $exec44 ; CHECK-NEXT: {{ $}}45 ; CHECK-NEXT: bb.1:46 ; CHECK-NEXT: successors: %bb.2(0x80000000)47 ; CHECK-NEXT: liveins: $sgpr048 ; CHECK-NEXT: {{ $}}49 ; CHECK-NEXT: $vgpr0 = V_MOV_B32_e32 0, implicit $exec50 ; CHECK-NEXT: S_SET_GPR_IDX_ON $sgpr0, 0, implicit-def $mode, implicit-def $m0, implicit $mode, implicit $m051 ; CHECK-NEXT: {{ $}}52 ; CHECK-NEXT: bb.2:53 ; CHECK-NEXT: S_ENDPGM 054 bb.0:55 liveins: $sgpr056 S_CBRANCH_EXECZ %bb.2, implicit $exec57 58 bb.1:59 liveins: $sgpr060 $vgpr0 = V_MOV_B32_e32 0, implicit $exec61 S_SET_GPR_IDX_ON $sgpr0, 0, implicit-def $mode, implicit-def $m0, implicit $mode, implicit $m062 63 bb.2:64 S_ENDPGM 065...66 67---68 69name: need_skip_gpr_idx_off70body: |71 ; CHECK-LABEL: name: need_skip_gpr_idx_off72 ; CHECK: bb.0:73 ; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)74 ; CHECK-NEXT: {{ $}}75 ; CHECK-NEXT: S_CBRANCH_EXECZ %bb.2, implicit $exec76 ; CHECK-NEXT: {{ $}}77 ; CHECK-NEXT: bb.1:78 ; CHECK-NEXT: successors: %bb.2(0x80000000)79 ; CHECK-NEXT: {{ $}}80 ; CHECK-NEXT: $vgpr0 = V_MOV_B32_e32 0, implicit $exec81 ; CHECK-NEXT: S_SET_GPR_IDX_OFF implicit-def $mode, implicit $mode82 ; CHECK-NEXT: {{ $}}83 ; CHECK-NEXT: bb.2:84 ; CHECK-NEXT: S_ENDPGM 085 bb.0:86 S_CBRANCH_EXECZ %bb.2, implicit $exec87 88 bb.1:89 $vgpr0 = V_MOV_B32_e32 0, implicit $exec90 S_SET_GPR_IDX_OFF implicit-def $mode, implicit $mode91 92 bb.2:93 S_ENDPGM 094...95 96---97 98name: need_skip_gpr_idx_idx99body: |100 ; CHECK-LABEL: name: need_skip_gpr_idx_idx101 ; CHECK: bb.0:102 ; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)103 ; CHECK-NEXT: liveins: $sgpr0104 ; CHECK-NEXT: {{ $}}105 ; CHECK-NEXT: S_CBRANCH_EXECZ %bb.2, implicit $exec106 ; CHECK-NEXT: {{ $}}107 ; CHECK-NEXT: bb.1:108 ; CHECK-NEXT: successors: %bb.2(0x80000000)109 ; CHECK-NEXT: liveins: $sgpr0110 ; CHECK-NEXT: {{ $}}111 ; CHECK-NEXT: $vgpr0 = V_MOV_B32_e32 0, implicit $exec112 ; CHECK-NEXT: S_SET_GPR_IDX_IDX $sgpr0, implicit-def $mode, implicit-def $m0, implicit $mode, implicit $m0113 ; CHECK-NEXT: {{ $}}114 ; CHECK-NEXT: bb.2:115 ; CHECK-NEXT: S_ENDPGM 0116 bb.0:117 liveins: $sgpr0118 S_CBRANCH_EXECZ %bb.2, implicit $exec119 120 bb.1:121 liveins: $sgpr0122 $vgpr0 = V_MOV_B32_e32 0, implicit $exec123 S_SET_GPR_IDX_IDX $sgpr0, implicit-def $mode, implicit-def $m0, implicit $mode, implicit $m0124 125 bb.2:126 S_ENDPGM 0127...128