[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / GlobalISel / inst-select-phi.mir
blob44b82bd669ef6aa4a35b89392b856c9c50df9f00
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -march=amdgcn -amdgpu-global-isel-risky-select -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefix=GCN
4 ---
5 name:            g_phi_s32_ss_sbranch
6 legalized:       true
7 regBankSelected: true
8 tracksRegLiveness: true
9 machineFunctionInfo: {}
10 body:             |
11   ; GCN-LABEL: name: g_phi_s32_ss_sbranch
12   ; GCN: bb.0:
13   ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
14   ; GCN-NEXT:   liveins: $sgpr0, $sgpr1, $sgpr2
15   ; GCN-NEXT: {{  $}}
16   ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
17   ; GCN-NEXT:   [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
18   ; GCN-NEXT:   [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr2
19   ; GCN-NEXT:   [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0
20   ; GCN-NEXT:   S_CMP_EQ_U32 [[COPY2]], [[S_MOV_B32_]], implicit-def $scc
21   ; GCN-NEXT:   [[COPY3:%[0-9]+]]:sreg_32 = COPY $scc
22   ; GCN-NEXT:   $scc = COPY [[COPY3]]
23   ; GCN-NEXT:   S_CBRANCH_SCC1 %bb.1, implicit $scc
24   ; GCN-NEXT:   S_BRANCH %bb.2
25   ; GCN-NEXT: {{  $}}
26   ; GCN-NEXT: bb.1:
27   ; GCN-NEXT:   successors: %bb.2(0x80000000)
28   ; GCN-NEXT: {{  $}}
29   ; GCN-NEXT:   S_BRANCH %bb.2
30   ; GCN-NEXT: {{  $}}
31   ; GCN-NEXT: bb.2:
32   ; GCN-NEXT:   [[PHI:%[0-9]+]]:sreg_32 = PHI [[COPY]], %bb.0, [[COPY1]], %bb.1
33   ; GCN-NEXT:   $sgpr0 = COPY [[PHI]]
34   ; GCN-NEXT:   S_SETPC_B64 undef $sgpr30_sgpr31
35   bb.0:
36     liveins: $sgpr0, $sgpr1, $sgpr2
38     %0:sgpr(s32) = COPY $sgpr0
39     %1:sgpr(s32) = COPY $sgpr1
40     %2:sgpr(s32) = COPY $sgpr2
41     %3:sgpr(s32) = G_CONSTANT i32 0
42     %4:sgpr(s32) = G_ICMP intpred(eq), %2(s32), %3
43     G_BRCOND %4, %bb.1
44     G_BR %bb.2
46   bb.1:
47     %5:sgpr(s32) = COPY %1
48     G_BR %bb.2
50   bb.2:
51     %6:sgpr(s32) = G_PHI %0(s32), %bb.0, %5(s32), %bb.1
52     $sgpr0 = COPY %6
53     S_SETPC_B64 undef $sgpr30_sgpr31
55 ...
57 ---
58 name:            g_phi_s32_vv_sbranch
59 legalized:       true
60 regBankSelected: true
61 tracksRegLiveness: true
62 machineFunctionInfo: {}
63 body:             |
64   ; GCN-LABEL: name: g_phi_s32_vv_sbranch
65   ; GCN: bb.0:
66   ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
67   ; GCN-NEXT:   liveins: $vgpr0, $vgpr1, $sgpr2
68   ; GCN-NEXT: {{  $}}
69   ; GCN-NEXT:   [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
70   ; GCN-NEXT:   [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
71   ; GCN-NEXT:   [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr2
72   ; GCN-NEXT:   [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0
73   ; GCN-NEXT:   S_CMP_EQ_U32 [[COPY2]], [[S_MOV_B32_]], implicit-def $scc
74   ; GCN-NEXT:   [[COPY3:%[0-9]+]]:sreg_32 = COPY $scc
75   ; GCN-NEXT:   $scc = COPY [[COPY3]]
76   ; GCN-NEXT:   S_CBRANCH_SCC1 %bb.1, implicit $scc
77   ; GCN-NEXT:   S_BRANCH %bb.2
78   ; GCN-NEXT: {{  $}}
79   ; GCN-NEXT: bb.1:
80   ; GCN-NEXT:   successors: %bb.2(0x80000000)
81   ; GCN-NEXT: {{  $}}
82   ; GCN-NEXT:   [[COPY4:%[0-9]+]]:sreg_32 = COPY [[COPY1]]
83   ; GCN-NEXT:   S_BRANCH %bb.2
84   ; GCN-NEXT: {{  $}}
85   ; GCN-NEXT: bb.2:
86   ; GCN-NEXT:   [[PHI:%[0-9]+]]:vgpr_32 = PHI [[COPY]], %bb.0, [[COPY4]], %bb.1
87   ; GCN-NEXT:   $vgpr0 = COPY [[PHI]]
88   ; GCN-NEXT:   S_SETPC_B64 undef $sgpr30_sgpr31
89   bb.0:
90     liveins: $vgpr0, $vgpr1, $sgpr2
92     %0:vgpr(s32) = COPY $vgpr0
93     %1:vgpr(s32) = COPY $vgpr1
94     %2:sgpr(s32) = COPY $sgpr2
95     %3:sgpr(s32) = G_CONSTANT i32 0
96     %4:sgpr(s32) = G_ICMP intpred(eq), %2(s32), %3
97     G_BRCOND %4, %bb.1
98     G_BR %bb.2
100   bb.1:
101     %5:sgpr(s32) = COPY %1
102     G_BR %bb.2
104   bb.2:
105     %6:vgpr(s32) = G_PHI %0(s32), %bb.0, %5(s32), %bb.1
106     $vgpr0 = COPY %6(s32)
107     S_SETPC_B64 undef $sgpr30_sgpr31
112 name:            g_phi_s32_sv_sbranch
113 legalized:       true
114 regBankSelected: true
115 tracksRegLiveness: true
116 machineFunctionInfo: {}
117 body:             |
118   ; GCN-LABEL: name: g_phi_s32_sv_sbranch
119   ; GCN: bb.0:
120   ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
121   ; GCN-NEXT:   liveins: $sgpr0, $vgpr0, $sgpr1, $sgpr2
122   ; GCN-NEXT: {{  $}}
123   ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
124   ; GCN-NEXT:   [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0
125   ; GCN-NEXT:   [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr2
126   ; GCN-NEXT:   [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0
127   ; GCN-NEXT:   S_CMP_EQ_U32 [[COPY2]], [[S_MOV_B32_]], implicit-def $scc
128   ; GCN-NEXT:   [[COPY3:%[0-9]+]]:sreg_32 = COPY $scc
129   ; GCN-NEXT:   $scc = COPY [[COPY3]]
130   ; GCN-NEXT:   S_CBRANCH_SCC1 %bb.1, implicit $scc
131   ; GCN-NEXT:   S_BRANCH %bb.2
132   ; GCN-NEXT: {{  $}}
133   ; GCN-NEXT: bb.1:
134   ; GCN-NEXT:   successors: %bb.2(0x80000000)
135   ; GCN-NEXT: {{  $}}
136   ; GCN-NEXT:   S_BRANCH %bb.2
137   ; GCN-NEXT: {{  $}}
138   ; GCN-NEXT: bb.2:
139   ; GCN-NEXT:   [[PHI:%[0-9]+]]:vgpr_32 = PHI [[COPY]], %bb.0, [[COPY1]], %bb.1
140   ; GCN-NEXT:   $vgpr0 = COPY [[PHI]]
141   ; GCN-NEXT:   S_SETPC_B64 undef $sgpr30_sgpr31
142   bb.0:
143     liveins: $sgpr0, $vgpr0, $sgpr1, $sgpr2
145     %0:sgpr(s32) = COPY $sgpr0
146     %1:vgpr(s32) = COPY $vgpr0
147     %2:sgpr(s32) = COPY $sgpr2
148     %3:sgpr(s32) = G_CONSTANT i32 0
149     %4:sgpr(s32) = G_ICMP intpred(eq), %2(s32), %3
150     G_BRCOND %4, %bb.1
151     G_BR %bb.2
153   bb.1:
154     %5:vgpr(s32) = COPY %1
155     G_BR %bb.2
157   bb.2:
158     %6:vgpr(s32) = G_PHI %0(s32), %bb.0, %5(s32), %bb.1
159     $vgpr0 = COPY %6
160     S_SETPC_B64 undef $sgpr30_sgpr31
165 name:            g_phi_s32_vs_sbranch
166 legalized:       true
167 regBankSelected: true
168 tracksRegLiveness: true
169 machineFunctionInfo: {}
170 body:             |
171   ; GCN-LABEL: name: g_phi_s32_vs_sbranch
172   ; GCN: bb.0:
173   ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
174   ; GCN-NEXT:   liveins: $sgpr0, $vgpr0, $sgpr1
175   ; GCN-NEXT: {{  $}}
176   ; GCN-NEXT:   [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
177   ; GCN-NEXT:   [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0
178   ; GCN-NEXT:   [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr1
179   ; GCN-NEXT:   [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0
180   ; GCN-NEXT:   S_CMP_EQ_U32 [[COPY2]], [[S_MOV_B32_]], implicit-def $scc
181   ; GCN-NEXT:   [[COPY3:%[0-9]+]]:sreg_32 = COPY $scc
182   ; GCN-NEXT:   $scc = COPY [[COPY3]]
183   ; GCN-NEXT:   S_CBRANCH_SCC1 %bb.1, implicit $scc
184   ; GCN-NEXT:   S_BRANCH %bb.2
185   ; GCN-NEXT: {{  $}}
186   ; GCN-NEXT: bb.1:
187   ; GCN-NEXT:   successors: %bb.2(0x80000000)
188   ; GCN-NEXT: {{  $}}
189   ; GCN-NEXT:   [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[COPY1]]
190   ; GCN-NEXT:   S_BRANCH %bb.2
191   ; GCN-NEXT: {{  $}}
192   ; GCN-NEXT: bb.2:
193   ; GCN-NEXT:   [[PHI:%[0-9]+]]:vgpr_32 = PHI [[COPY]], %bb.0, [[COPY4]], %bb.1
194   ; GCN-NEXT:   $vgpr0 = COPY [[PHI]]
195   ; GCN-NEXT:   S_SETPC_B64 undef $sgpr30_sgpr31
196   bb.0:
197     liveins: $sgpr0, $vgpr0, $sgpr1
199     %0:vgpr(s32) = COPY $vgpr0
200     %1:sgpr(s32) = COPY $sgpr0
201     %2:sgpr(s32) = COPY $sgpr1
202     %3:sgpr(s32) = G_CONSTANT i32 0
203     %4:sgpr(s32) = G_ICMP intpred(eq), %2(s32), %3
204     G_BRCOND %4, %bb.1
205     G_BR %bb.2
207   bb.1:
208     %5:vgpr(s32) = COPY %1
209     G_BR %bb.2
211   bb.2:
212     %6:vgpr(s32) = G_PHI %0(s32), %bb.0, %5(s32), %bb.1
213     $vgpr0 = COPY %6
214     S_SETPC_B64 undef $sgpr30_sgpr31
219 name:            g_phi_s64_ss_sbranch
220 legalized:       true
221 regBankSelected: true
222 tracksRegLiveness: true
223 machineFunctionInfo: {}
224 body:             |
225   ; GCN-LABEL: name: g_phi_s64_ss_sbranch
226   ; GCN: bb.0:
227   ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
228   ; GCN-NEXT:   liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4
229   ; GCN-NEXT: {{  $}}
230   ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
231   ; GCN-NEXT:   [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3
232   ; GCN-NEXT:   [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr4
233   ; GCN-NEXT:   [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0
234   ; GCN-NEXT:   S_CMP_EQ_U32 [[COPY2]], [[S_MOV_B32_]], implicit-def $scc
235   ; GCN-NEXT:   [[COPY3:%[0-9]+]]:sreg_32 = COPY $scc
236   ; GCN-NEXT:   $scc = COPY [[COPY3]]
237   ; GCN-NEXT:   S_CBRANCH_SCC1 %bb.1, implicit $scc
238   ; GCN-NEXT:   S_BRANCH %bb.2
239   ; GCN-NEXT: {{  $}}
240   ; GCN-NEXT: bb.1:
241   ; GCN-NEXT:   successors: %bb.2(0x80000000)
242   ; GCN-NEXT: {{  $}}
243   ; GCN-NEXT:   S_BRANCH %bb.2
244   ; GCN-NEXT: {{  $}}
245   ; GCN-NEXT: bb.2:
246   ; GCN-NEXT:   [[PHI:%[0-9]+]]:sreg_64 = PHI [[COPY]], %bb.0, [[COPY1]], %bb.1
247   ; GCN-NEXT:   $sgpr0_sgpr1 = COPY [[PHI]]
248   ; GCN-NEXT:   S_SETPC_B64 undef $sgpr30_sgpr31
249   bb.0:
250     liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4
252     %0:sgpr(s64) = COPY $sgpr0_sgpr1
253     %1:sgpr(s64) = COPY $sgpr2_sgpr3
254     %2:sgpr(s32) = COPY $sgpr4
255     %3:sgpr(s32) = G_CONSTANT i32 0
256     %4:sgpr(s32) = G_ICMP intpred(eq), %2(s32), %3
257     G_BRCOND %4, %bb.1
258     G_BR %bb.2
260   bb.1:
261     %5:sgpr(s64) = COPY %1
262     G_BR %bb.2
264   bb.2:
265     %6:sgpr(s64) = G_PHI %0(s64), %bb.0, %5(s64), %bb.1
266     $sgpr0_sgpr1 = COPY %6
267     S_SETPC_B64 undef $sgpr30_sgpr31
271 name:            g_phi_v2s16_vv_sbranch
272 legalized:       true
273 regBankSelected: true
274 tracksRegLiveness: true
275 machineFunctionInfo: {}
276 body:             |
277   ; GCN-LABEL: name: g_phi_v2s16_vv_sbranch
278   ; GCN: bb.0:
279   ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
280   ; GCN-NEXT:   liveins: $vgpr0, $vgpr1, $sgpr2
281   ; GCN-NEXT: {{  $}}
282   ; GCN-NEXT:   [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
283   ; GCN-NEXT:   [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
284   ; GCN-NEXT:   [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr2
285   ; GCN-NEXT:   [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0
286   ; GCN-NEXT:   S_CMP_EQ_U32 [[COPY2]], [[S_MOV_B32_]], implicit-def $scc
287   ; GCN-NEXT:   [[COPY3:%[0-9]+]]:sreg_32 = COPY $scc
288   ; GCN-NEXT:   $scc = COPY [[COPY3]]
289   ; GCN-NEXT:   S_CBRANCH_SCC1 %bb.1, implicit $scc
290   ; GCN-NEXT:   S_BRANCH %bb.2
291   ; GCN-NEXT: {{  $}}
292   ; GCN-NEXT: bb.1:
293   ; GCN-NEXT:   successors: %bb.2(0x80000000)
294   ; GCN-NEXT: {{  $}}
295   ; GCN-NEXT:   [[COPY4:%[0-9]+]]:sreg_32 = COPY [[COPY1]]
296   ; GCN-NEXT:   S_BRANCH %bb.2
297   ; GCN-NEXT: {{  $}}
298   ; GCN-NEXT: bb.2:
299   ; GCN-NEXT:   [[PHI:%[0-9]+]]:vgpr_32 = PHI [[COPY]], %bb.0, [[COPY4]], %bb.1
300   ; GCN-NEXT:   $vgpr0 = COPY [[PHI]]
301   ; GCN-NEXT:   S_SETPC_B64 undef $sgpr30_sgpr31
302   bb.0:
303     liveins: $vgpr0, $vgpr1, $sgpr2
305     %0:vgpr(<2 x s16>) = COPY $vgpr0
306     %1:vgpr(<2 x s16>) = COPY $vgpr1
307     %2:sgpr(s32) = COPY $sgpr2
308     %3:sgpr(s32) = G_CONSTANT i32 0
309     %4:sgpr(s32) = G_ICMP intpred(eq), %2(s32), %3
310     G_BRCOND %4, %bb.1
311     G_BR %bb.2
313   bb.1:
314     %5:sgpr(<2 x s16>) = COPY %1
315     G_BR %bb.2
317   bb.2:
318     %6:vgpr(<2 x s16>) = G_PHI %0(<2 x s16>), %bb.0, %5(<2 x s16>), %bb.1
319     $vgpr0 = COPY %6
320     S_SETPC_B64 undef $sgpr30_sgpr31
325 name:            g_phi_vcc_s1_sbranch
326 legalized:       true
327 regBankSelected: true
328 tracksRegLiveness: true
329 machineFunctionInfo: {}
330 body:             |
331   ; GCN-LABEL: name: g_phi_vcc_s1_sbranch
332   ; GCN: bb.0:
333   ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
334   ; GCN-NEXT:   liveins: $vgpr0, $vgpr1, $sgpr2
335   ; GCN-NEXT: {{  $}}
336   ; GCN-NEXT:   [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
337   ; GCN-NEXT:   [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
338   ; GCN-NEXT:   [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr2
339   ; GCN-NEXT:   [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0
340   ; GCN-NEXT:   [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64 = V_CMP_EQ_U32_e64 [[COPY]], [[S_MOV_B32_]], implicit $exec
341   ; GCN-NEXT:   S_CMP_EQ_U32 [[COPY2]], [[S_MOV_B32_]], implicit-def $scc
342   ; GCN-NEXT:   [[COPY3:%[0-9]+]]:sreg_32 = COPY $scc
343   ; GCN-NEXT:   $scc = COPY [[COPY3]]
344   ; GCN-NEXT:   S_CBRANCH_SCC1 %bb.1, implicit $scc
345   ; GCN-NEXT:   S_BRANCH %bb.2
346   ; GCN-NEXT: {{  $}}
347   ; GCN-NEXT: bb.1:
348   ; GCN-NEXT:   successors: %bb.2(0x80000000)
349   ; GCN-NEXT: {{  $}}
350   ; GCN-NEXT:   [[V_CMP_EQ_U32_e64_1:%[0-9]+]]:sreg_64 = V_CMP_EQ_U32_e64 [[COPY1]], [[S_MOV_B32_]], implicit $exec
351   ; GCN-NEXT:   S_BRANCH %bb.2
352   ; GCN-NEXT: {{  $}}
353   ; GCN-NEXT: bb.2:
354   ; GCN-NEXT:   [[PHI:%[0-9]+]]:sreg_64_xexec = PHI [[V_CMP_EQ_U32_e64_]], %bb.0, [[V_CMP_EQ_U32_e64_1]], %bb.1
355   ; GCN-NEXT:   S_SETPC_B64 undef $sgpr30_sgpr31, implicit [[PHI]]
356   bb.0:
357     liveins: $vgpr0, $vgpr1, $sgpr2
359     %0:vgpr(s32) = COPY $vgpr0
360     %1:vgpr(s32) = COPY $vgpr1
361     %2:sgpr(s32) = COPY $sgpr2
362     %3:sgpr(s32) = G_CONSTANT i32 0
363     %4:vcc(s1) = G_ICMP intpred(eq), %0, %3
364     %5:sgpr(s32) = G_ICMP intpred(eq), %2(s32), %3
365     G_BRCOND %5, %bb.1
366     G_BR %bb.2
368   bb.1:
369     %6:vcc(s1) = G_ICMP intpred(eq), %1, %3
370     G_BR %bb.2
372   bb.2:
373     %7:vcc(s1) = G_PHI %4, %bb.0, %6, %bb.1
374     S_SETPC_B64 undef $sgpr30_sgpr31, implicit %7
379 name:            phi_s32_ss_sbranch
380 legalized:       true
381 regBankSelected: true
382 tracksRegLiveness: true
383 machineFunctionInfo: {}
384 body:             |
385   ; GCN-LABEL: name: phi_s32_ss_sbranch
386   ; GCN: bb.0:
387   ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
388   ; GCN-NEXT:   liveins: $sgpr0, $sgpr1, $sgpr2
389   ; GCN-NEXT: {{  $}}
390   ; GCN-NEXT:   [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
391   ; GCN-NEXT:   [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
392   ; GCN-NEXT:   [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr2
393   ; GCN-NEXT:   [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0
394   ; GCN-NEXT:   S_CMP_EQ_U32 [[COPY2]], [[S_MOV_B32_]], implicit-def $scc
395   ; GCN-NEXT:   [[COPY3:%[0-9]+]]:sreg_32 = COPY $scc
396   ; GCN-NEXT:   $scc = COPY [[COPY3]]
397   ; GCN-NEXT:   S_CBRANCH_SCC1 %bb.1, implicit $scc
398   ; GCN-NEXT:   S_BRANCH %bb.2
399   ; GCN-NEXT: {{  $}}
400   ; GCN-NEXT: bb.1:
401   ; GCN-NEXT:   successors: %bb.2(0x80000000)
402   ; GCN-NEXT: {{  $}}
403   ; GCN-NEXT:   S_BRANCH %bb.2
404   ; GCN-NEXT: {{  $}}
405   ; GCN-NEXT: bb.2:
406   ; GCN-NEXT:   [[PHI:%[0-9]+]]:sreg_32 = PHI [[COPY]], %bb.0, [[COPY1]], %bb.1
407   ; GCN-NEXT:   $sgpr0 = COPY [[PHI]]
408   ; GCN-NEXT:   S_SETPC_B64 undef $sgpr30_sgpr31
409   bb.0:
410     liveins: $sgpr0, $sgpr1, $sgpr2
412     %0:sgpr(s32) = COPY $sgpr0
413     %1:sgpr(s32) = COPY $sgpr1
414     %2:sgpr(s32) = COPY $sgpr2
415     %3:sgpr(s32) = G_CONSTANT i32 0
416     %4:sgpr(s32) = G_ICMP intpred(eq), %2(s32), %3
417     G_BRCOND %4, %bb.1
418     G_BR %bb.2
420   bb.1:
421     %5:sgpr(s32) = COPY %1
422     G_BR %bb.2
424   bb.2:
425     %6:sgpr(s32) = PHI %0(s32), %bb.0, %5(s32), %bb.1
426     $sgpr0 = COPY %6(s32)
427     S_SETPC_B64 undef $sgpr30_sgpr31
432 name:            phi_s32_vv_sbranch
433 legalized:       true
434 regBankSelected: true
435 tracksRegLiveness: true
436 machineFunctionInfo: {}
437 body:             |
438   ; GCN-LABEL: name: phi_s32_vv_sbranch
439   ; GCN: bb.0:
440   ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
441   ; GCN-NEXT:   liveins: $vgpr0, $vgpr1, $sgpr2
442   ; GCN-NEXT: {{  $}}
443   ; GCN-NEXT:   [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
444   ; GCN-NEXT:   [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
445   ; GCN-NEXT:   [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr2
446   ; GCN-NEXT:   [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0
447   ; GCN-NEXT:   S_CMP_EQ_U32 [[COPY2]], [[S_MOV_B32_]], implicit-def $scc
448   ; GCN-NEXT:   [[COPY3:%[0-9]+]]:sreg_32 = COPY $scc
449   ; GCN-NEXT:   $scc = COPY [[COPY3]]
450   ; GCN-NEXT:   S_CBRANCH_SCC1 %bb.1, implicit $scc
451   ; GCN-NEXT:   S_BRANCH %bb.2
452   ; GCN-NEXT: {{  $}}
453   ; GCN-NEXT: bb.1:
454   ; GCN-NEXT:   successors: %bb.2(0x80000000)
455   ; GCN-NEXT: {{  $}}
456   ; GCN-NEXT:   [[COPY4:%[0-9]+]]:sreg_32 = COPY [[COPY1]]
457   ; GCN-NEXT:   S_BRANCH %bb.2
458   ; GCN-NEXT: {{  $}}
459   ; GCN-NEXT: bb.2:
460   ; GCN-NEXT:   [[PHI:%[0-9]+]]:vgpr_32 = PHI [[COPY]], %bb.0, [[COPY4]], %bb.1
461   ; GCN-NEXT:   $vgpr0 = COPY [[PHI]]
462   ; GCN-NEXT:   S_SETPC_B64 undef $sgpr30_sgpr31
463   bb.0:
464     liveins: $vgpr0, $vgpr1, $sgpr2
466     %0:vgpr(s32) = COPY $vgpr0
467     %1:vgpr(s32) = COPY $vgpr1
468     %2:sgpr(s32) = COPY $sgpr2
469     %3:sgpr(s32) = G_CONSTANT i32 0
470     %4:sgpr(s32) = G_ICMP intpred(eq), %2(s32), %3
471     G_BRCOND %4, %bb.1
472     G_BR %bb.2
474   bb.1:
475     %5:sgpr(s32) = COPY %1
476     G_BR %bb.2
478   bb.2:
479     %6:vgpr(s32) = PHI %0(s32), %bb.0, %5(s32), %bb.1
480     $vgpr0 = COPY %6
481     S_SETPC_B64 undef $sgpr30_sgpr31