1 # RUN: llc -march=amdgcn -mcpu=fiji -run-pass si-insert-skips -verify-machineinstrs -o - %s | FileCheck -check-prefix=GCN %s
4 # GCN-LABEL: name: and_execz_mov_vccz
7 # GCN: S_CBRANCH_EXECZ %bb.1, implicit $exec
8 name: and_execz_mov_vccz
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
23 # GCN-LABEL: name: and_execz_imm_vccz
25 # GCN: S_CBRANCH_EXECZ %bb.1, implicit $exec
26 name: and_execz_imm_vccz
35 $vcc = S_AND_B64 $exec, -1, implicit-def dead $scc
36 S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
40 # GCN-LABEL: name: and_execnz_imm_vccnz
42 # GCN: S_CBRANCH_EXECNZ %bb.1, implicit $exec
43 name: and_execnz_imm_vccnz
52 $vcc = S_AND_B64 $exec, -1, implicit-def dead $scc
53 S_CBRANCH_VCCNZ %bb.1, implicit killed $vcc
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
69 $vcc = S_AND_B64 $exec, -1, implicit-def $scc
70 S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
74 # GCN-LABEL: name: and_execz_mov_vccz_live_scc
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
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
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
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
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
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
129 # GCN-LABEL: name: and_execz_mov_vccz_live_scc_commute
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
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
148 # GCN-LABEL: name: and_execz_mov_vccz_commute
151 # GCN: S_CBRANCH_EXECZ %bb.1, implicit $exec
152 name: and_execz_mov_vccz_commute
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
167 # GCN-LABEL: name: and_execz_mov_exec_vccz
168 # GCN: $exec = S_MOV_B64 -1
170 name: and_execz_mov_exec_vccz
180 $vcc = S_AND_B64 $exec, $exec, implicit-def dead $scc
181 S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
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
198 $vcc = S_AND_B64 $exec, $exec, implicit-def dead $scc
199 S_CBRANCH_VCCNZ %bb.1, implicit killed $vcc
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
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
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
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
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
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
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
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
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
297 $sgpr0_sgpr1 = S_MOV_B64 -1
299 $vcc = S_AND_B64 $exec, killed $sgpr0_sgpr1, implicit-def dead $scc
300 S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
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
317 $vcc = S_AND_B64 $exec, -1, implicit-def $scc
318 S_CBRANCH_VCCZ %bb.1, implicit killed $vcc
319 S_ENDPGM implicit $scc