[DAGCombiner] Eliminate dead stores to stack.
[llvm-complete.git] / test / CodeGen / AMDGPU / insert-skip-from-vcc.mir
blob9427b5cd25420fac63ce0749c6efd11166bc11e4
1 # RUN: llc -march=amdgcn -mcpu=fiji -run-pass si-insert-skips -verify-machineinstrs -o - %s | FileCheck -check-prefix=GCN %s
3 ---
4 # GCN-LABEL: name: and_execz_mov_vccz
5 # GCN-NOT: S_MOV_
6 # GCN-NOT: S_AND_
7 # GCN: S_CBRANCH_EXECZ %bb.1, implicit $exec
8 name:            and_execz_mov_vccz
9 body:             |
10   bb.0:
11     S_NOP 0
13   bb.1:
14     S_NOP 0
16   bb.2:
17     $sgpr0_sgpr1 = S_MOV_B64 -1
18     $vcc = S_AND_B64 $exec, killed $sgpr0_sgpr1, implicit-def dead $scc
19     S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
20     S_ENDPGM
21 ...
22 ---
23 # GCN-LABEL: name: and_execz_imm_vccz
24 # GCN-NOT: S_AND_
25 # GCN: S_CBRANCH_EXECZ %bb.1, implicit $exec
26 name:            and_execz_imm_vccz
27 body:             |
28   bb.0:
29     S_NOP 0
31   bb.1:
32     S_NOP 0
34   bb.2:
35     $vcc = S_AND_B64 $exec, -1, implicit-def dead $scc
36     S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
37     S_ENDPGM
38 ...
39 ---
40 # GCN-LABEL: name: and_execnz_imm_vccnz
41 # GCN-NOT: S_AND_
42 # GCN: S_CBRANCH_EXECNZ %bb.1, implicit $exec
43 name:            and_execnz_imm_vccnz
44 body:             |
45   bb.0:
46     S_NOP 0
48   bb.1:
49     S_NOP 0
51   bb.2:
52     $vcc = S_AND_B64 $exec, -1, implicit-def dead $scc
53     S_CBRANCH_VCCNZ %bb.1, implicit killed $vcc
54     S_ENDPGM
55 ...
56 ---
57 # GCN-LABEL: name: and_execz_imm_vccz_live_scc
58 # GCN: $vcc = S_AND_B64 $exec, -1, implicit-def $scc
59 # GCN: S_CBRANCH_EXECZ %bb.1, implicit $exec
60 name:            and_execz_imm_vccz_live_scc
61 body:             |
62   bb.0:
63     S_NOP 0
65   bb.1:
66     S_NOP 0
68   bb.2:
69     $vcc = S_AND_B64 $exec, -1, implicit-def $scc
70     S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
71     S_ENDPGM
72 ...
73 ---
74 # GCN-LABEL: name: and_execz_mov_vccz_live_scc
75 # GCN-NOT: S_MOV_
76 # GCN: $vcc = S_AND_B64 $exec, -1, implicit-def $scc
77 # GCN: S_CBRANCH_EXECZ %bb.1, implicit $exec
78 name:            and_execz_mov_vccz_live_scc
79 body:             |
80   bb.0:
81     S_NOP 0
83   bb.1:
84     S_NOP 0
86   bb.2:
87     $sgpr0_sgpr1 = S_MOV_B64 -1
88     $vcc = S_AND_B64 $exec, killed $sgpr0_sgpr1, implicit-def $scc
89     S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
90     S_ENDPGM
91 ...
92 ---
93 # GCN-LABEL: name: and_execz_mov_vccz_live_sreg
94 # GCN:      $sgpr0_sgpr1 = S_MOV_B64 -1
95 # GCN-NEXT: S_CBRANCH_EXECZ %bb.1, implicit $exec
96 name:            and_execz_mov_vccz_live_sreg
97 body:             |
98   bb.0:
99     S_NOP 0
101   bb.1:
102     S_NOP 0
104   bb.2:
105     $sgpr0_sgpr1 = S_MOV_B64 -1
106     $vcc = S_AND_B64 $exec, $sgpr0_sgpr1, implicit-def dead $scc
107     S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
108     S_ENDPGM
111 # GCN-LABEL: name: and_execz_mov_vccz_live_sreg_commute
112 # GCN:      $sgpr0_sgpr1 = S_MOV_B64 -1
113 # GCN-NEXT: S_CBRANCH_EXECZ %bb.1, implicit $exec
114 name:            and_execz_mov_vccz_live_sreg_commute
115 body:             |
116   bb.0:
117     S_NOP 0
119   bb.1:
120     S_NOP 0
122   bb.2:
123     $sgpr0_sgpr1 = S_MOV_B64 -1
124     $vcc = S_AND_B64 $sgpr0_sgpr1, $exec, implicit-def dead $scc
125     S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
126     S_ENDPGM
129 # GCN-LABEL: name: and_execz_mov_vccz_live_scc_commute
130 # GCN-NOT: S_MOV_
131 # GCN: $vcc = S_AND_B64 $exec, -1, implicit-def $scc
132 # GCN: S_CBRANCH_EXECZ %bb.1, implicit $exec
133 name:            and_execz_mov_vccz_live_scc_commute
134 body:             |
135   bb.0:
136     S_NOP 0
138   bb.1:
139     S_NOP 0
141   bb.2:
142     $sgpr0_sgpr1 = S_MOV_B64 -1
143     $vcc = S_AND_B64 killed $sgpr0_sgpr1, $exec, implicit-def $scc
144     S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
145     S_ENDPGM
148 # GCN-LABEL: name: and_execz_mov_vccz_commute
149 # GCN-NOT: S_MOV_
150 # GCN-NOT: S_AND_
151 # GCN: S_CBRANCH_EXECZ %bb.1, implicit $exec
152 name:            and_execz_mov_vccz_commute
153 body:             |
154   bb.0:
155     S_NOP 0
157   bb.1:
158     S_NOP 0
160   bb.2:
161     $sgpr0_sgpr1 = S_MOV_B64 -1
162     $vcc = S_AND_B64 killed $sgpr0_sgpr1, $exec, implicit-def dead $scc
163     S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
164     S_ENDPGM
167 # GCN-LABEL: name: and_execz_mov_exec_vccz
168 # GCN:      $exec = S_MOV_B64 -1
169 # GCN-NEXT: S_ENDPGM
170 name:            and_execz_mov_exec_vccz
171 body:             |
172   bb.0:
173     S_NOP 0
175   bb.1:
176     S_NOP 0
178   bb.2:
179     $exec = S_MOV_B64 -1
180     $vcc = S_AND_B64 $exec, $exec, implicit-def dead $scc
181     S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
182     S_ENDPGM
185 # GCN-LABEL: name: and_execz_mov_exec_vccnz
186 # GCN:      $exec = S_MOV_B64 -1
187 # GCN-NEXT: S_BRANCH %bb.1{{$}}
188 name:            and_execz_mov_exec_vccnz
189 body:             |
190   bb.0:
191     S_NOP 0
193   bb.1:
194     S_NOP 0
196   bb.2:
197     $exec = S_MOV_B64 -1
198     $vcc = S_AND_B64 $exec, $exec, implicit-def dead $scc
199     S_CBRANCH_VCCNZ %bb.1, implicit killed $vcc
200     S_ENDPGM
203 # GCN-LABEL: name: and_execz_mov_vccz_reads_sreg_early
204 # GCN:      $sgpr0_sgpr1 = S_MOV_B64 -1
205 # GCN-NEXT: $sgpr2 = S_MOV_B32 $sgpr1
206 # GCN-NEXT: S_CBRANCH_EXECZ %bb.1, implicit $exec
207 name:            and_execz_mov_vccz_reads_sreg_early
208 body:             |
209   bb.0:
210     S_NOP 0
212   bb.1:
213     S_NOP 0
215   bb.2:
216     $sgpr0_sgpr1 = S_MOV_B64 -1
217     $sgpr2 = S_MOV_B32 $sgpr1
218     $vcc = S_AND_B64 $exec, killed $sgpr0_sgpr1, implicit-def dead $scc
219     S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
220     S_ENDPGM
223 # GCN-LABEL: name: and_execz_mov_vccz_reads_sreg_late
224 # GCN:      $sgpr0_sgpr1 = S_MOV_B64 -1
225 # GCN-NEXT: $sgpr2 = S_MOV_B32 $sgpr1
226 # GCN-NEXT: S_CBRANCH_EXECZ %bb.1, implicit $exec
227 name:            and_execz_mov_vccz_reads_sreg_late
228 body:             |
229   bb.0:
230     S_NOP 0
232   bb.1:
233     S_NOP 0
235   bb.2:
236     $sgpr0_sgpr1 = S_MOV_B64 -1
237     $vcc = S_AND_B64 $exec, $sgpr0_sgpr1, implicit-def dead $scc
238     $sgpr2 = S_MOV_B32 $sgpr1
239     S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
240     S_ENDPGM
242 # GCN-LABEL: name: and_execz_mov_vccz_reads_writes_sreg_early
243 # GCN:      $sgpr0_sgpr1 = S_MOV_B64 -1
244 # GCN-NEXT: $sgpr1 = S_MOV_B32 $sgpr0
245 # GCN-NEXT: $vcc = S_AND_B64 $exec, killed $sgpr0_sgpr1, implicit-def dead $scc
246 # GCN-NEXT: S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
247 name:            and_execz_mov_vccz_reads_writes_sreg_early
248 body:             |
249   bb.0:
250     S_NOP 0
252   bb.1:
253     S_NOP 0
255   bb.2:
256     $sgpr0_sgpr1 = S_MOV_B64 -1
257     $sgpr1 = S_MOV_B32 $sgpr0
258     $vcc = S_AND_B64 $exec, killed $sgpr0_sgpr1, implicit-def dead $scc
259     S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
260     S_ENDPGM
263 # GCN-LABEL: name: and_execz_mov_vccz_reads_cond
264 # GCN:      $vcc = S_AND_B64 $exec, -1, implicit-def dead $scc
265 # GCN-NEXT: $sgpr2 = S_MOV_B32 $vcc_lo
266 # GCN-NEXT: S_CBRANCH_EXECZ %bb.1, implicit $exec
267 name:            and_execz_mov_vccz_reads_cond
268 body:             |
269   bb.0:
270     S_NOP 0
272   bb.1:
273     S_NOP 0
275   bb.2:
276     $sgpr0_sgpr1 = S_MOV_B64 -1
277     $vcc = S_AND_B64 $exec, killed $sgpr0_sgpr1, implicit-def dead $scc
278     $sgpr2 = S_MOV_B32 $vcc_lo
279     S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
280     S_ENDPGM
283 # GCN-LABEL: name: and_execz_mov_vccz_modifies_sreg
284 # GCN:      $sgpr0_sgpr1 = S_MOV_B64 -1
285 # GCN-NEXT: $sgpr0 = S_MOV_B32 0
286 # GCN-NEXT: $vcc = S_AND_B64 $exec, killed $sgpr0_sgpr1, implicit-def dead $scc
287 # GCN-NEXT: S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
288 name:            and_execz_mov_vccz_modifies_sreg
289 body:             |
290   bb.0:
291     S_NOP 0
293   bb.1:
294     S_NOP 0
296   bb.2:
297     $sgpr0_sgpr1 = S_MOV_B64 -1
298     $sgpr0 = S_MOV_B32 0
299     $vcc = S_AND_B64 $exec, killed $sgpr0_sgpr1, implicit-def dead $scc
300     S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
301     S_ENDPGM
304 # GCN-LABEL: name: and_execz_imm_vccz_liveout_scc
305 # GCN:      $vcc = S_AND_B64 $exec, -1, implicit-def $scc
306 # GCN-NEXT: S_CBRANCH_EXECZ %bb.1, implicit $exec
307 # GCN-NEXT  S_ENDPGM implicit $scc
308 name:            and_execz_imm_vccz_liveout_scc
309 body:             |
310   bb.0:
311     S_NOP 0
313   bb.1:
314     S_NOP 0
316   bb.2:
317     $vcc = S_AND_B64 $exec, -1, implicit-def $scc
318     S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
319     S_ENDPGM implicit $scc