[llvm-objdump] - Remove one overload of reportError. NFCI.
[llvm-complete.git] / test / CodeGen / AMDGPU / GlobalISel / inst-select-phi.mir
blobbe0820f80c67d354184d2bc45779466c83148dfe
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -march=amdgcn -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:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
14   ; GCN:   liveins: $sgpr0, $sgpr1, $sgpr2
15   ; GCN:   [[COPY:%[0-9]+]]:sreg_32_xm0 = COPY $sgpr0
16   ; GCN:   [[COPY1:%[0-9]+]]:sreg_32_xm0 = COPY $sgpr1
17   ; GCN:   [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr2
18   ; GCN:   [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0
19   ; GCN:   S_CMP_EQ_U32 [[COPY2]], [[S_MOV_B32_]], implicit-def $scc
20   ; GCN:   [[COPY3:%[0-9]+]]:sreg_32_xm0 = COPY $scc
21   ; GCN:   $scc = COPY [[COPY3]]
22   ; GCN:   S_CBRANCH_SCC1 %bb.1, implicit $scc
23   ; GCN:   S_BRANCH %bb.2
24   ; GCN: bb.1:
25   ; GCN:   successors: %bb.2(0x80000000)
26   ; GCN:   S_BRANCH %bb.2
27   ; GCN: bb.2:
28   ; GCN:   [[PHI:%[0-9]+]]:sreg_32_xm0 = PHI [[COPY]], %bb.0, [[COPY1]], %bb.1
29   ; GCN:   $sgpr0 = COPY [[PHI]]
30   ; GCN:   S_SETPC_B64 undef $sgpr30_sgpr31
31   bb.0:
32     liveins: $sgpr0, $sgpr1, $sgpr2
34     %0:sgpr(s32) = COPY $sgpr0
35     %1:sgpr(s32) = COPY $sgpr1
36     %2:sgpr(s32) = COPY $sgpr2
37     %3:sgpr(s32) = G_CONSTANT i32 0
38     %4:scc(s1) = G_ICMP intpred(eq), %2(s32), %3
39     G_BRCOND %4(s1), %bb.1
40     G_BR %bb.2
42   bb.1:
43     %5:sgpr(s32) = COPY %1
44     G_BR %bb.2
46   bb.2:
47     %6:sgpr(s32) = G_PHI %0(s32), %bb.0, %5(s32), %bb.1
48     $sgpr0 = COPY %6
49     S_SETPC_B64 undef $sgpr30_sgpr31
51 ...
53 ---
54 name:            g_phi_s32_vv_sbranch
55 legalized:       true
56 regBankSelected: true
57 tracksRegLiveness: true
58 machineFunctionInfo: {}
59 body:             |
60   ; GCN-LABEL: name: g_phi_s32_vv_sbranch
61   ; GCN: bb.0:
62   ; GCN:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
63   ; GCN:   liveins: $vgpr0, $vgpr1, $sgpr2
64   ; GCN:   [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
65   ; GCN:   [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
66   ; GCN:   [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr2
67   ; GCN:   [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0
68   ; GCN:   S_CMP_EQ_U32 [[COPY2]], [[S_MOV_B32_]], implicit-def $scc
69   ; GCN:   [[COPY3:%[0-9]+]]:sreg_32_xm0 = COPY $scc
70   ; GCN:   $scc = COPY [[COPY3]]
71   ; GCN:   S_CBRANCH_SCC1 %bb.1, implicit $scc
72   ; GCN:   S_BRANCH %bb.2
73   ; GCN: bb.1:
74   ; GCN:   successors: %bb.2(0x80000000)
75   ; GCN:   [[COPY4:%[0-9]+]]:sreg_32_xm0 = COPY [[COPY1]]
76   ; GCN:   S_BRANCH %bb.2
77   ; GCN: bb.2:
78   ; GCN:   [[PHI:%[0-9]+]]:vgpr_32 = PHI [[COPY]], %bb.0, [[COPY4]], %bb.1
79   ; GCN:   $vgpr0 = COPY [[PHI]]
80   ; GCN:   S_SETPC_B64 undef $sgpr30_sgpr31
81   bb.0:
82     liveins: $vgpr0, $vgpr1, $sgpr2
84     %0:vgpr(s32) = COPY $vgpr0
85     %1:vgpr(s32) = COPY $vgpr1
86     %2:sgpr(s32) = COPY $sgpr2
87     %3:sgpr(s32) = G_CONSTANT i32 0
88     %4:scc(s1) = G_ICMP intpred(eq), %2(s32), %3
89     G_BRCOND %4(s1), %bb.1
90     G_BR %bb.2
92   bb.1:
93     %5:sgpr(s32) = COPY %1
94     G_BR %bb.2
96   bb.2:
97     %6:vgpr(s32) = G_PHI %0(s32), %bb.0, %5(s32), %bb.1
98     $vgpr0 = COPY %6(s32)
99     S_SETPC_B64 undef $sgpr30_sgpr31
104 name:            g_phi_s32_sv_sbranch
105 legalized:       true
106 regBankSelected: true
107 tracksRegLiveness: true
108 machineFunctionInfo: {}
109 body:             |
110   bb.0:
111     liveins: $sgpr0, $vgpr0, $sgpr1, $sgpr2
113     %0:sgpr(s32) = COPY $sgpr0
114     %1:vgpr(s32) = COPY $vgpr0
115     %2:sgpr(s32) = COPY $sgpr2
116     %3:sgpr(s32) = G_CONSTANT i32 0
117     %4:scc(s1) = G_ICMP intpred(eq), %2(s32), %3
118     G_BRCOND %4(s1), %bb.1
119     G_BR %bb.2
121   bb.1:
122     %5:vgpr(s32) = COPY %1
123     G_BR %bb.2
125   bb.2:
126     %6:vgpr(s32) = G_PHI %0(s32), %bb.0, %5(s32), %bb.1
127     $vgpr0 = COPY %6
128     S_SETPC_B64 undef $sgpr30_sgpr31
133 name:            g_phi_s32_vs_sbranch
134 legalized:       true
135 regBankSelected: true
136 tracksRegLiveness: true
137 machineFunctionInfo: {}
138 body:             |
139   bb.0:
140     liveins: $sgpr0, $vgpr0, $sgpr1
142     %0:vgpr(s32) = COPY $vgpr0
143     %1:sgpr(s32) = COPY $sgpr0
144     %2:sgpr(s32) = COPY $sgpr1
145     %3:sgpr(s32) = G_CONSTANT i32 0
146     %4:scc(s1) = G_ICMP intpred(eq), %2(s32), %3
147     G_BRCOND %4(s1), %bb.1
148     G_BR %bb.2
150   bb.1:
151     %5:vgpr(s32) = COPY %1
152     G_BR %bb.2
154   bb.2:
155     %6:vgpr(s32) = G_PHI %0(s32), %bb.0, %5(s32), %bb.1
156     $vgpr0 = COPY %6
157     S_SETPC_B64 undef $sgpr30_sgpr31
162 name:            g_phi_s64_ss_sbranch
163 legalized:       true
164 regBankSelected: true
165 tracksRegLiveness: true
166 machineFunctionInfo: {}
167 body:             |
168   ; GCN-LABEL: name: g_phi_s64_ss_sbranch
169   ; GCN: bb.0:
170   ; GCN:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
171   ; GCN:   liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4
172   ; GCN:   [[COPY:%[0-9]+]]:sreg_64_xexec = COPY $sgpr0_sgpr1
173   ; GCN:   [[COPY1:%[0-9]+]]:sreg_64_xexec = COPY $sgpr2_sgpr3
174   ; GCN:   [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr4
175   ; GCN:   [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0
176   ; GCN:   S_CMP_EQ_U32 [[COPY2]], [[S_MOV_B32_]], implicit-def $scc
177   ; GCN:   [[COPY3:%[0-9]+]]:sreg_32_xm0 = COPY $scc
178   ; GCN:   $scc = COPY [[COPY3]]
179   ; GCN:   S_CBRANCH_SCC1 %bb.1, implicit $scc
180   ; GCN:   S_BRANCH %bb.2
181   ; GCN: bb.1:
182   ; GCN:   successors: %bb.2(0x80000000)
183   ; GCN:   S_BRANCH %bb.2
184   ; GCN: bb.2:
185   ; GCN:   [[PHI:%[0-9]+]]:sreg_64_xexec = PHI [[COPY]], %bb.0, [[COPY1]], %bb.1
186   ; GCN:   $sgpr0_sgpr1 = COPY [[PHI]]
187   ; GCN:   S_SETPC_B64 undef $sgpr30_sgpr31
188   bb.0:
189     liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4
191     %0:sgpr(s64) = COPY $sgpr0_sgpr1
192     %1:sgpr(s64) = COPY $sgpr2_sgpr3
193     %2:sgpr(s32) = COPY $sgpr4
194     %3:sgpr(s32) = G_CONSTANT i32 0
195     %4:scc(s1) = G_ICMP intpred(eq), %2(s32), %3
196     G_BRCOND %4(s1), %bb.1
197     G_BR %bb.2
199   bb.1:
200     %5:sgpr(s64) = COPY %1
201     G_BR %bb.2
203   bb.2:
204     %6:sgpr(s64) = G_PHI %0(s64), %bb.0, %5(s64), %bb.1
205     $sgpr0_sgpr1 = COPY %6
206     S_SETPC_B64 undef $sgpr30_sgpr31
210 name:            g_phi_v2s16_vv_sbranch
211 legalized:       true
212 regBankSelected: true
213 tracksRegLiveness: true
214 machineFunctionInfo: {}
215 body:             |
216   ; GCN-LABEL: name: g_phi_v2s16_vv_sbranch
217   ; GCN: bb.0:
218   ; GCN:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
219   ; GCN:   liveins: $vgpr0, $vgpr1, $sgpr2
220   ; GCN:   [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
221   ; GCN:   [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
222   ; GCN:   [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr2
223   ; GCN:   [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0
224   ; GCN:   S_CMP_EQ_U32 [[COPY2]], [[S_MOV_B32_]], implicit-def $scc
225   ; GCN:   [[COPY3:%[0-9]+]]:sreg_32_xm0 = COPY $scc
226   ; GCN:   $scc = COPY [[COPY3]]
227   ; GCN:   S_CBRANCH_SCC1 %bb.1, implicit $scc
228   ; GCN:   S_BRANCH %bb.2
229   ; GCN: bb.1:
230   ; GCN:   successors: %bb.2(0x80000000)
231   ; GCN:   [[COPY4:%[0-9]+]]:sreg_32_xm0 = COPY [[COPY1]]
232   ; GCN:   S_BRANCH %bb.2
233   ; GCN: bb.2:
234   ; GCN:   [[PHI:%[0-9]+]]:vgpr_32 = PHI [[COPY]], %bb.0, [[COPY4]], %bb.1
235   ; GCN:   $vgpr0 = COPY [[PHI]]
236   ; GCN:   S_SETPC_B64 undef $sgpr30_sgpr31
237   bb.0:
238     liveins: $vgpr0, $vgpr1, $sgpr2
240     %0:vgpr(<2 x s16>) = COPY $vgpr0
241     %1:vgpr(<2 x s16>) = COPY $vgpr1
242     %2:sgpr(s32) = COPY $sgpr2
243     %3:sgpr(s32) = G_CONSTANT i32 0
244     %4:scc(s1) = G_ICMP intpred(eq), %2(s32), %3
245     G_BRCOND %4(s1), %bb.1
246     G_BR %bb.2
248   bb.1:
249     %5:sgpr(<2 x s16>) = COPY %1
250     G_BR %bb.2
252   bb.2:
253     %6:vgpr(<2 x s16>) = G_PHI %0(<2 x s16>), %bb.0, %5(<2 x s16>), %bb.1
254     $vgpr0 = COPY %6
255     S_SETPC_B64 undef $sgpr30_sgpr31
260 name:            g_phi_vcc_s1_sbranch
261 legalized:       true
262 regBankSelected: true
263 tracksRegLiveness: true
264 machineFunctionInfo: {}
265 body:             |
266   bb.0:
267     liveins: $vgpr0, $vgpr1, $sgpr2
269     %0:vgpr(s32) = COPY $vgpr0
270     %1:vgpr(s32) = COPY $vgpr1
271     %2:sgpr(s32) = COPY $sgpr2
272     %3:sgpr(s32) = G_CONSTANT i32 0
273     %4:vcc(s1) = G_ICMP intpred(eq), %0, %3
274     %5:scc(s1) = G_ICMP intpred(eq), %2(s32), %3
275     G_BRCOND %5(s1), %bb.1
276     G_BR %bb.2
278   bb.1:
279     %6:vcc(s1) = G_ICMP intpred(eq), %1, %3
280     G_BR %bb.2
282   bb.2:
283     %7:vcc(s1) = G_PHI %4, %bb.0, %6, %bb.1
284     S_SETPC_B64 undef $sgpr30_sgpr31, implicit %7
289 name:            phi_s32_ss_sbranch
290 legalized:       true
291 regBankSelected: true
292 tracksRegLiveness: true
293 machineFunctionInfo: {}
294 body:             |
295   ; GCN-LABEL: name: phi_s32_ss_sbranch
296   ; GCN: bb.0:
297   ; GCN:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
298   ; GCN:   liveins: $sgpr0, $sgpr1, $sgpr2
299   ; GCN:   [[COPY:%[0-9]+]]:sreg_32_xm0 = COPY $sgpr0
300   ; GCN:   [[COPY1:%[0-9]+]]:sreg_32_xm0 = COPY $sgpr1
301   ; GCN:   [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr2
302   ; GCN:   [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0
303   ; GCN:   S_CMP_EQ_U32 [[COPY2]], [[S_MOV_B32_]], implicit-def $scc
304   ; GCN:   [[COPY3:%[0-9]+]]:sreg_32_xm0 = COPY $scc
305   ; GCN:   $scc = COPY [[COPY3]]
306   ; GCN:   S_CBRANCH_SCC1 %bb.1, implicit $scc
307   ; GCN:   S_BRANCH %bb.2
308   ; GCN: bb.1:
309   ; GCN:   successors: %bb.2(0x80000000)
310   ; GCN:   S_BRANCH %bb.2
311   ; GCN: bb.2:
312   ; GCN:   [[PHI:%[0-9]+]]:sreg_32_xm0 = PHI [[COPY]], %bb.0, [[COPY1]], %bb.1
313   ; GCN:   $sgpr0 = COPY [[PHI]]
314   ; GCN:   S_SETPC_B64 undef $sgpr30_sgpr31
315   bb.0:
316     liveins: $sgpr0, $sgpr1, $sgpr2
318     %0:sgpr(s32) = COPY $sgpr0
319     %1:sgpr(s32) = COPY $sgpr1
320     %2:sgpr(s32) = COPY $sgpr2
321     %3:sgpr(s32) = G_CONSTANT i32 0
322     %4:scc(s1) = G_ICMP intpred(eq), %2(s32), %3
323     G_BRCOND %4(s1), %bb.1
324     G_BR %bb.2
326   bb.1:
327     %5:sgpr(s32) = COPY %1
328     G_BR %bb.2
330   bb.2:
331     %6:sgpr(s32) = PHI %0(s32), %bb.0, %5(s32), %bb.1
332     $sgpr0 = COPY %6(s32)
333     S_SETPC_B64 undef $sgpr30_sgpr31
338 name:            phi_s32_vv_sbranch
339 legalized:       true
340 regBankSelected: true
341 tracksRegLiveness: true
342 machineFunctionInfo: {}
343 body:             |
344   ; GCN-LABEL: name: phi_s32_vv_sbranch
345   ; GCN: bb.0:
346   ; GCN:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
347   ; GCN:   liveins: $vgpr0, $vgpr1, $sgpr2
348   ; GCN:   [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
349   ; GCN:   [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
350   ; GCN:   [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr2
351   ; GCN:   [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0
352   ; GCN:   S_CMP_EQ_U32 [[COPY2]], [[S_MOV_B32_]], implicit-def $scc
353   ; GCN:   [[COPY3:%[0-9]+]]:sreg_32_xm0 = COPY $scc
354   ; GCN:   $scc = COPY [[COPY3]]
355   ; GCN:   S_CBRANCH_SCC1 %bb.1, implicit $scc
356   ; GCN:   S_BRANCH %bb.2
357   ; GCN: bb.1:
358   ; GCN:   successors: %bb.2(0x80000000)
359   ; GCN:   [[COPY4:%[0-9]+]]:sreg_32_xm0 = COPY [[COPY1]]
360   ; GCN:   S_BRANCH %bb.2
361   ; GCN: bb.2:
362   ; GCN:   [[PHI:%[0-9]+]]:vgpr_32 = PHI [[COPY]], %bb.0, [[COPY4]], %bb.1
363   ; GCN:   $vgpr0 = COPY [[PHI]]
364   ; GCN:   S_SETPC_B64 undef $sgpr30_sgpr31
365   bb.0:
366     liveins: $vgpr0, $vgpr1, $sgpr2
368     %0:vgpr(s32) = COPY $vgpr0
369     %1:vgpr(s32) = COPY $vgpr1
370     %2:sgpr(s32) = COPY $sgpr2
371     %3:sgpr(s32) = G_CONSTANT i32 0
372     %4:scc(s1) = G_ICMP intpred(eq), %2(s32), %3
373     G_BRCOND %4(s1), %bb.1
374     G_BR %bb.2
376   bb.1:
377     %5:sgpr(s32) = COPY %1
378     G_BR %bb.2
380   bb.2:
381     %6:vgpr(s32) = PHI %0(s32), %bb.0, %5(s32), %bb.1
382     $vgpr0 = COPY %6
383     S_SETPC_B64 undef $sgpr30_sgpr31