Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / remove-short-exec-branches-gpr-idx-mode.mir
blobcab7930860087a13ccf237bfcb5ab80594366dbf
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -march=amdgcn -mcpu=gfx900 -run-pass=si-pre-emit-peephole -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.
6 ---
8 name: need_skip_gpr_idx_mode
9 body: |
10   ; CHECK-LABEL: name: need_skip_gpr_idx_mode
11   ; CHECK: bb.0:
12   ; CHECK-NEXT:   successors: %bb.2(0x40000000), %bb.1(0x40000000)
13   ; CHECK-NEXT: {{  $}}
14   ; CHECK-NEXT:   S_CBRANCH_EXECZ %bb.2, implicit $exec
15   ; CHECK-NEXT: {{  $}}
16   ; CHECK-NEXT: bb.1:
17   ; CHECK-NEXT:   successors: %bb.2(0x80000000)
18   ; CHECK-NEXT: {{  $}}
19   ; CHECK-NEXT:   $vgpr0 = V_MOV_B32_e32 0, implicit $exec
20   ; CHECK-NEXT:   S_SET_GPR_IDX_MODE 0, implicit-def $mode, implicit-def $m0, implicit $mode, implicit $m0
21   ; CHECK-NEXT: {{  $}}
22   ; CHECK-NEXT: bb.2:
23   ; CHECK-NEXT:   S_ENDPGM 0
24   bb.0:
25     S_CBRANCH_EXECZ %bb.2, implicit $exec
27   bb.1:
28     $vgpr0 = V_MOV_B32_e32 0, implicit $exec
29     S_SET_GPR_IDX_MODE 0, implicit-def $mode, implicit-def $m0, implicit $mode, implicit $m0
31   bb.2:
32     S_ENDPGM 0
33 ...
35 ---
37 name: need_skip_gpr_idx_on
38 body: |
39   ; CHECK-LABEL: name: need_skip_gpr_idx_on
40   ; CHECK: bb.0:
41   ; CHECK-NEXT:   successors: %bb.2(0x40000000), %bb.1(0x40000000)
42   ; CHECK-NEXT:   liveins: $sgpr0
43   ; CHECK-NEXT: {{  $}}
44   ; CHECK-NEXT:   S_CBRANCH_EXECZ %bb.2, implicit $exec
45   ; CHECK-NEXT: {{  $}}
46   ; CHECK-NEXT: bb.1:
47   ; CHECK-NEXT:   successors: %bb.2(0x80000000)
48   ; CHECK-NEXT:   liveins: $sgpr0
49   ; CHECK-NEXT: {{  $}}
50   ; CHECK-NEXT:   $vgpr0 = V_MOV_B32_e32 0, implicit $exec
51   ; CHECK-NEXT:   S_SET_GPR_IDX_ON $sgpr0, 0, implicit-def $mode, implicit-def $m0, implicit $mode, implicit $m0
52   ; CHECK-NEXT: {{  $}}
53   ; CHECK-NEXT: bb.2:
54   ; CHECK-NEXT:   S_ENDPGM 0
55   bb.0:
56     liveins: $sgpr0
57     S_CBRANCH_EXECZ %bb.2, implicit $exec
59   bb.1:
60     liveins: $sgpr0
61     $vgpr0 = V_MOV_B32_e32 0, implicit $exec
62     S_SET_GPR_IDX_ON $sgpr0, 0, implicit-def $mode, implicit-def $m0, implicit $mode, implicit $m0
64   bb.2:
65     S_ENDPGM 0
66 ...
68 ---
70 name: need_skip_gpr_idx_off
71 body: |
72   ; CHECK-LABEL: name: need_skip_gpr_idx_off
73   ; CHECK: bb.0:
74   ; CHECK-NEXT:   successors: %bb.2(0x40000000), %bb.1(0x40000000)
75   ; CHECK-NEXT: {{  $}}
76   ; CHECK-NEXT:   S_CBRANCH_EXECZ %bb.2, implicit $exec
77   ; CHECK-NEXT: {{  $}}
78   ; CHECK-NEXT: bb.1:
79   ; CHECK-NEXT:   successors: %bb.2(0x80000000)
80   ; CHECK-NEXT: {{  $}}
81   ; CHECK-NEXT:   $vgpr0 = V_MOV_B32_e32 0, implicit $exec
82   ; CHECK-NEXT:   S_SET_GPR_IDX_OFF implicit-def $mode, implicit $mode
83   ; CHECK-NEXT: {{  $}}
84   ; CHECK-NEXT: bb.2:
85   ; CHECK-NEXT:   S_ENDPGM 0
86   bb.0:
87     S_CBRANCH_EXECZ %bb.2, implicit $exec
89   bb.1:
90     $vgpr0 = V_MOV_B32_e32 0, implicit $exec
91     S_SET_GPR_IDX_OFF implicit-def $mode, implicit $mode
93   bb.2:
94     S_ENDPGM 0
95 ...
97 ---
99 name: need_skip_gpr_idx_idx
100 body: |
101   ; CHECK-LABEL: name: need_skip_gpr_idx_idx
102   ; CHECK: bb.0:
103   ; CHECK-NEXT:   successors: %bb.2(0x40000000), %bb.1(0x40000000)
104   ; CHECK-NEXT:   liveins: $sgpr0
105   ; CHECK-NEXT: {{  $}}
106   ; CHECK-NEXT:   S_CBRANCH_EXECZ %bb.2, implicit $exec
107   ; CHECK-NEXT: {{  $}}
108   ; CHECK-NEXT: bb.1:
109   ; CHECK-NEXT:   successors: %bb.2(0x80000000)
110   ; CHECK-NEXT:   liveins: $sgpr0
111   ; CHECK-NEXT: {{  $}}
112   ; CHECK-NEXT:   $vgpr0 = V_MOV_B32_e32 0, implicit $exec
113   ; CHECK-NEXT:   S_SET_GPR_IDX_IDX $sgpr0, implicit-def $mode, implicit-def $m0, implicit $mode, implicit $m0
114   ; CHECK-NEXT: {{  $}}
115   ; CHECK-NEXT: bb.2:
116   ; CHECK-NEXT:   S_ENDPGM 0
117   bb.0:
118     liveins: $sgpr0
119     S_CBRANCH_EXECZ %bb.2, implicit $exec
121   bb.1:
122     liveins: $sgpr0
123     $vgpr0 = V_MOV_B32_e32 0, implicit $exec
124     S_SET_GPR_IDX_IDX $sgpr0, implicit-def $mode, implicit-def $m0, implicit $mode, implicit $m0
126   bb.2:
127     S_ENDPGM 0