[ORC] Fix bug in source file name finding in DebuggerSupportPlugin.
[llvm-project.git] / llvm / test / CodeGen / RISCV / GlobalISel / legalizer / legalize-phi-rv64.mir
blob980682616d1d35d8b88d885520c5e01c9b22c9ad
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=riscv64 -run-pass=legalizer %s -o - \
3 # RUN:   | FileCheck %s
5 --- |
6   define i1 @phi_i1(i1 %cnd, i1 %a, i1 %b) {
7   entry:
8     br i1 %cnd, label %cond.end, label %cond.false
10   cond.false:                                       ; preds = %entry
11     br label %cond.end
13   cond.end:                                         ; preds = %entry, %cond.false
14     %cond = phi i1 [ %b, %cond.false ], [ %a, %entry ]
15     ret i1 %cond
16   }
18   define i8 @phi_i8(i1 %cnd, i8 %a, i8 %b) {
19   entry:
20     br i1 %cnd, label %cond.end, label %cond.false
22   cond.false:                                       ; preds = %entry
23     br label %cond.end
25   cond.end:                                         ; preds = %entry, %cond.false
26     %cond = phi i8 [ %b, %cond.false ], [ %a, %entry ]
27     ret i8 %cond
28   }
30   define i16 @phi_i16(i1 %cnd, i16 %a, i16 %b) {
31   entry:
32     br i1 %cnd, label %cond.end, label %cond.false
34   cond.false:                                       ; preds = %entry
35     br label %cond.end
37   cond.end:                                         ; preds = %entry, %cond.false
38     %cond = phi i16 [ %b, %cond.false ], [ %a, %entry ]
39     ret i16 %cond
40   }
42   define i32 @phi_i32(i1 %cnd, i32 %a, i32 %b) {
43   entry:
44     br i1 %cnd, label %cond.end, label %cond.false
46   cond.false:                                       ; preds = %entry
47     br label %cond.end
49   cond.end:                                         ; preds = %entry, %cond.false
50     %cond = phi i32 [ %b, %cond.false ], [ %a, %entry ]
51     ret i32 %cond
52   }
54   define i64 @phi_i64(i1 %cnd, i64 %a, i64 %b) {
55   entry:
56     br i1 %cnd, label %cond.end, label %cond.false
58   cond.false:                                       ; preds = %entry
59     br label %cond.end
61   cond.end:                                         ; preds = %entry, %cond.false
62     %cond = phi i64 [ %b, %cond.false ], [ %a, %entry ]
63     ret i64 %cond
64   }
66   define ptr @phi_ptr(i1 %cnd, ptr %a, ptr %b) {
67   entry:
68     br i1 %cnd, label %cond.end, label %cond.false
70   cond.false:                                       ; preds = %entry
71     br label %cond.end
73   cond.end:                                         ; preds = %entry, %cond.false
74     %cond = phi ptr [ %b, %cond.false ], [ %a, %entry ]
75     ret ptr %cond
76   }
78   define i72 @phi_i72(i1 %cnd, i72 %a, i72 %b) {
79   entry:
80     br i1 %cnd, label %cond.end, label %cond.false
82   cond.false:                                       ; preds = %entry
83     br label %cond.end
85   cond.end:                                         ; preds = %entry, %cond.false
86     %cond = phi i72 [ %b, %cond.false ], [ %a, %entry ]
87     ret i72 %cond
88   }
90   define i128 @phi_i128(i1 %cnd, i128 %a, i128 %b) {
91   entry:
92     br i1 %cnd, label %cond.end, label %cond.false
94   cond.false:                                       ; preds = %entry
95     br label %cond.end
97   cond.end:                                         ; preds = %entry, %cond.false
98     %cond = phi i128 [ %b, %cond.false ], [ %a, %entry ]
99     ret i128 %cond
100   }
102   define i192 @phi_i192(i1 %cnd, i192 %a, i192 %b) {
103   entry:
104     br i1 %cnd, label %cond.end, label %cond.false
106   cond.false:                                       ; preds = %entry
107     br label %cond.end
109   cond.end:                                         ; preds = %entry, %cond.false
110     %cond = phi i192 [ %b, %cond.false ], [ %a, %entry ]
111     ret i192 %cond
112   }
116 name:            phi_i1
117 alignment:       4
118 tracksRegLiveness: true
119 registers:
120   - { id: 0, class: _ }
121   - { id: 1, class: _ }
122   - { id: 2, class: _ }
123   - { id: 3, class: _ }
124   - { id: 4, class: _ }
125   - { id: 5, class: _ }
126   - { id: 6, class: _ }
127   - { id: 7, class: _ }
128 frameInfo:
129   maxAlignment:    1
130 machineFunctionInfo:
131   varArgsFrameIndex: 0
132   varArgsSaveSize: 0
133 body:             |
134   ; CHECK-LABEL: name: phi_i1
135   ; CHECK: bb.0.entry:
136   ; CHECK-NEXT:   successors: %bb.2(0x40000000), %bb.1(0x40000000)
137   ; CHECK-NEXT:   liveins: $x10, $x11, $x12
138   ; CHECK-NEXT: {{  $}}
139   ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s64) = COPY $x10
140   ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(s64) = COPY $x11
141   ; CHECK-NEXT:   [[COPY2:%[0-9]+]]:_(s64) = COPY $x12
142   ; CHECK-NEXT:   [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s64)
143   ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
144   ; CHECK-NEXT:   [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]
145   ; CHECK-NEXT:   G_BRCOND [[AND]](s64), %bb.2
146   ; CHECK-NEXT:   G_BR %bb.1
147   ; CHECK-NEXT: {{  $}}
148   ; CHECK-NEXT: bb.1.cond.false:
149   ; CHECK-NEXT:   successors: %bb.2(0x80000000)
150   ; CHECK-NEXT: {{  $}}
151   ; CHECK-NEXT:   [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY2]](s64)
152   ; CHECK-NEXT: {{  $}}
153   ; CHECK-NEXT: bb.2.cond.end:
154   ; CHECK-NEXT:   [[PHI:%[0-9]+]]:_(s32) = G_PHI [[TRUNC1]](s32), %bb.1, [[TRUNC]](s32), %bb.0
155   ; CHECK-NEXT:   [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[PHI]](s32)
156   ; CHECK-NEXT:   $x10 = COPY [[ANYEXT]](s64)
157   ; CHECK-NEXT:   PseudoRET implicit $x10
158   bb.1.entry:
159     liveins: $x10, $x11, $x12
161     %3:_(s64) = COPY $x10
162     %0:_(s1) = G_TRUNC %3(s64)
163     %4:_(s64) = COPY $x11
164     %1:_(s1) = G_TRUNC %4(s64)
165     %5:_(s64) = COPY $x12
166     %2:_(s1) = G_TRUNC %5(s64)
167     G_BRCOND %0(s1), %bb.3
168     G_BR %bb.2
170   bb.2.cond.false:
172   bb.3.cond.end:
173     %6:_(s1) = G_PHI %2(s1), %bb.2, %1(s1), %bb.1
174     %7:_(s64) = G_ANYEXT %6(s1)
175     $x10 = COPY %7(s64)
176     PseudoRET implicit $x10
180 name:            phi_i8
181 alignment:       4
182 tracksRegLiveness: true
183 registers:
184   - { id: 0, class: _ }
185   - { id: 1, class: _ }
186   - { id: 2, class: _ }
187   - { id: 3, class: _ }
188   - { id: 4, class: _ }
189   - { id: 5, class: _ }
190   - { id: 6, class: _ }
191   - { id: 7, class: _ }
192 frameInfo:
193   maxAlignment:    1
194 machineFunctionInfo:
195   varArgsFrameIndex: 0
196   varArgsSaveSize: 0
197 body:             |
198   ; CHECK-LABEL: name: phi_i8
199   ; CHECK: bb.0.entry:
200   ; CHECK-NEXT:   successors: %bb.2(0x40000000), %bb.1(0x40000000)
201   ; CHECK-NEXT:   liveins: $x10, $x11, $x12
202   ; CHECK-NEXT: {{  $}}
203   ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s64) = COPY $x10
204   ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(s64) = COPY $x11
205   ; CHECK-NEXT:   [[COPY2:%[0-9]+]]:_(s64) = COPY $x12
206   ; CHECK-NEXT:   [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s64)
207   ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
208   ; CHECK-NEXT:   [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]
209   ; CHECK-NEXT:   G_BRCOND [[AND]](s64), %bb.2
210   ; CHECK-NEXT:   G_BR %bb.1
211   ; CHECK-NEXT: {{  $}}
212   ; CHECK-NEXT: bb.1.cond.false:
213   ; CHECK-NEXT:   successors: %bb.2(0x80000000)
214   ; CHECK-NEXT: {{  $}}
215   ; CHECK-NEXT:   [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY2]](s64)
216   ; CHECK-NEXT: {{  $}}
217   ; CHECK-NEXT: bb.2.cond.end:
218   ; CHECK-NEXT:   [[PHI:%[0-9]+]]:_(s32) = G_PHI [[TRUNC1]](s32), %bb.1, [[TRUNC]](s32), %bb.0
219   ; CHECK-NEXT:   [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[PHI]](s32)
220   ; CHECK-NEXT:   $x10 = COPY [[ANYEXT]](s64)
221   ; CHECK-NEXT:   PseudoRET implicit $x10
222   bb.1.entry:
223     liveins: $x10, $x11, $x12
225     %3:_(s64) = COPY $x10
226     %0:_(s1) = G_TRUNC %3(s64)
227     %4:_(s64) = COPY $x11
228     %1:_(s8) = G_TRUNC %4(s64)
229     %5:_(s64) = COPY $x12
230     %2:_(s8) = G_TRUNC %5(s64)
231     G_BRCOND %0(s1), %bb.3
232     G_BR %bb.2
234   bb.2.cond.false:
236   bb.3.cond.end:
237     %6:_(s8) = G_PHI %2(s8), %bb.2, %1(s8), %bb.1
238     %7:_(s64) = G_ANYEXT %6(s8)
239     $x10 = COPY %7(s64)
240     PseudoRET implicit $x10
244 name:            phi_i16
245 alignment:       4
246 tracksRegLiveness: true
247 registers:
248   - { id: 0, class: _ }
249   - { id: 1, class: _ }
250   - { id: 2, class: _ }
251   - { id: 3, class: _ }
252   - { id: 4, class: _ }
253   - { id: 5, class: _ }
254   - { id: 6, class: _ }
255   - { id: 7, class: _ }
256 frameInfo:
257   maxAlignment:    1
258 machineFunctionInfo:
259   varArgsFrameIndex: 0
260   varArgsSaveSize: 0
261 body:             |
262   ; CHECK-LABEL: name: phi_i16
263   ; CHECK: bb.0.entry:
264   ; CHECK-NEXT:   successors: %bb.2(0x40000000), %bb.1(0x40000000)
265   ; CHECK-NEXT:   liveins: $x10, $x11, $x12
266   ; CHECK-NEXT: {{  $}}
267   ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s64) = COPY $x10
268   ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(s64) = COPY $x11
269   ; CHECK-NEXT:   [[COPY2:%[0-9]+]]:_(s64) = COPY $x12
270   ; CHECK-NEXT:   [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s64)
271   ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
272   ; CHECK-NEXT:   [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]
273   ; CHECK-NEXT:   G_BRCOND [[AND]](s64), %bb.2
274   ; CHECK-NEXT:   G_BR %bb.1
275   ; CHECK-NEXT: {{  $}}
276   ; CHECK-NEXT: bb.1.cond.false:
277   ; CHECK-NEXT:   successors: %bb.2(0x80000000)
278   ; CHECK-NEXT: {{  $}}
279   ; CHECK-NEXT:   [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY2]](s64)
280   ; CHECK-NEXT: {{  $}}
281   ; CHECK-NEXT: bb.2.cond.end:
282   ; CHECK-NEXT:   [[PHI:%[0-9]+]]:_(s32) = G_PHI [[TRUNC1]](s32), %bb.1, [[TRUNC]](s32), %bb.0
283   ; CHECK-NEXT:   [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[PHI]](s32)
284   ; CHECK-NEXT:   $x10 = COPY [[ANYEXT]](s64)
285   ; CHECK-NEXT:   PseudoRET implicit $x10
286   bb.1.entry:
287     liveins: $x10, $x11, $x12
289     %3:_(s64) = COPY $x10
290     %0:_(s1) = G_TRUNC %3(s64)
291     %4:_(s64) = COPY $x11
292     %1:_(s16) = G_TRUNC %4(s64)
293     %5:_(s64) = COPY $x12
294     %2:_(s16) = G_TRUNC %5(s64)
295     G_BRCOND %0(s1), %bb.3
296     G_BR %bb.2
298   bb.2.cond.false:
300   bb.3.cond.end:
301     %6:_(s16) = G_PHI %2(s16), %bb.2, %1(s16), %bb.1
302     %7:_(s64) = G_ANYEXT %6(s16)
303     $x10 = COPY %7(s64)
304     PseudoRET implicit $x10
308 name:            phi_i32
309 alignment:       4
310 tracksRegLiveness: true
311 registers:
312   - { id: 0, class: _ }
313   - { id: 1, class: _ }
314   - { id: 2, class: _ }
315   - { id: 3, class: _ }
316   - { id: 4, class: _ }
317   - { id: 5, class: _ }
318   - { id: 6, class: _ }
319   - { id: 7, class: _ }
320 frameInfo:
321   maxAlignment:    1
322 machineFunctionInfo:
323   varArgsFrameIndex: 0
324   varArgsSaveSize: 0
325 body:             |
326   ; CHECK-LABEL: name: phi_i32
327   ; CHECK: bb.0.entry:
328   ; CHECK-NEXT:   successors: %bb.2(0x40000000), %bb.1(0x40000000)
329   ; CHECK-NEXT:   liveins: $x10, $x11, $x12
330   ; CHECK-NEXT: {{  $}}
331   ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s64) = COPY $x10
332   ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(s64) = COPY $x11
333   ; CHECK-NEXT:   [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s64)
334   ; CHECK-NEXT:   [[COPY2:%[0-9]+]]:_(s64) = COPY $x12
335   ; CHECK-NEXT:   [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY2]](s64)
336   ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
337   ; CHECK-NEXT:   [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]
338   ; CHECK-NEXT:   G_BRCOND [[AND]](s64), %bb.2
339   ; CHECK-NEXT:   G_BR %bb.1
340   ; CHECK-NEXT: {{  $}}
341   ; CHECK-NEXT: bb.1.cond.false:
342   ; CHECK-NEXT:   successors: %bb.2(0x80000000)
343   ; CHECK-NEXT: {{  $}}
344   ; CHECK-NEXT: bb.2.cond.end:
345   ; CHECK-NEXT:   [[PHI:%[0-9]+]]:_(s32) = G_PHI [[TRUNC1]](s32), %bb.1, [[TRUNC]](s32), %bb.0
346   ; CHECK-NEXT:   [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[PHI]](s32)
347   ; CHECK-NEXT:   $x10 = COPY [[ANYEXT]](s64)
348   ; CHECK-NEXT:   PseudoRET implicit $x10
349   bb.1.entry:
350     liveins: $x10, $x11, $x12
352     %3:_(s64) = COPY $x10
353     %0:_(s1) = G_TRUNC %3(s64)
354     %4:_(s64) = COPY $x11
355     %1:_(s32) = G_TRUNC %4(s64)
356     %5:_(s64) = COPY $x12
357     %2:_(s32) = G_TRUNC %5(s64)
358     G_BRCOND %0(s1), %bb.3
359     G_BR %bb.2
361   bb.2.cond.false:
363   bb.3.cond.end:
364     %6:_(s32) = G_PHI %2(s32), %bb.2, %1(s32), %bb.1
365     %7:_(s64) = G_ANYEXT %6(s32)
366     $x10 = COPY %7(s64)
367     PseudoRET implicit $x10
371 name:            phi_i64
372 alignment:       4
373 tracksRegLiveness: true
374 registers:
375   - { id: 0, class: _ }
376   - { id: 1, class: _ }
377   - { id: 2, class: _ }
378   - { id: 3, class: _ }
379   - { id: 4, class: _ }
380 frameInfo:
381   maxAlignment:    1
382 machineFunctionInfo:
383   varArgsFrameIndex: 0
384   varArgsSaveSize: 0
385 body:             |
386   ; CHECK-LABEL: name: phi_i64
387   ; CHECK: bb.0.entry:
388   ; CHECK-NEXT:   successors: %bb.2(0x40000000), %bb.1(0x40000000)
389   ; CHECK-NEXT:   liveins: $x10, $x11, $x12
390   ; CHECK-NEXT: {{  $}}
391   ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s64) = COPY $x10
392   ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(s64) = COPY $x11
393   ; CHECK-NEXT:   [[COPY2:%[0-9]+]]:_(s64) = COPY $x12
394   ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
395   ; CHECK-NEXT:   [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]
396   ; CHECK-NEXT:   G_BRCOND [[AND]](s64), %bb.2
397   ; CHECK-NEXT:   G_BR %bb.1
398   ; CHECK-NEXT: {{  $}}
399   ; CHECK-NEXT: bb.1.cond.false:
400   ; CHECK-NEXT:   successors: %bb.2(0x80000000)
401   ; CHECK-NEXT: {{  $}}
402   ; CHECK-NEXT: bb.2.cond.end:
403   ; CHECK-NEXT:   [[PHI:%[0-9]+]]:_(s64) = G_PHI [[COPY2]](s64), %bb.1, [[COPY1]](s64), %bb.0
404   ; CHECK-NEXT:   $x10 = COPY [[PHI]](s64)
405   ; CHECK-NEXT:   PseudoRET implicit $x10
406   bb.1.entry:
407     liveins: $x10, $x11, $x12
409     %3:_(s64) = COPY $x10
410     %0:_(s1) = G_TRUNC %3(s64)
411     %1:_(s64) = COPY $x11
412     %2:_(s64) = COPY $x12
413     G_BRCOND %0(s1), %bb.3
414     G_BR %bb.2
416   bb.2.cond.false:
418   bb.3.cond.end:
419     %4:_(s64) = G_PHI %2(s64), %bb.2, %1(s64), %bb.1
420     $x10 = COPY %4(s64)
421     PseudoRET implicit $x10
425 name:            phi_ptr
426 alignment:       4
427 tracksRegLiveness: true
428 registers:
429   - { id: 0, class: _ }
430   - { id: 1, class: _ }
431   - { id: 2, class: _ }
432   - { id: 3, class: _ }
433   - { id: 4, class: _ }
434 frameInfo:
435   maxAlignment:    1
436 machineFunctionInfo:
437   varArgsFrameIndex: 0
438   varArgsSaveSize: 0
439 body:             |
440   ; CHECK-LABEL: name: phi_ptr
441   ; CHECK: bb.0.entry:
442   ; CHECK-NEXT:   successors: %bb.2(0x40000000), %bb.1(0x40000000)
443   ; CHECK-NEXT:   liveins: $x10, $x11, $x12
444   ; CHECK-NEXT: {{  $}}
445   ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s64) = COPY $x10
446   ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(p0) = COPY $x11
447   ; CHECK-NEXT:   [[COPY2:%[0-9]+]]:_(p0) = COPY $x12
448   ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
449   ; CHECK-NEXT:   [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]
450   ; CHECK-NEXT:   G_BRCOND [[AND]](s64), %bb.2
451   ; CHECK-NEXT:   G_BR %bb.1
452   ; CHECK-NEXT: {{  $}}
453   ; CHECK-NEXT: bb.1.cond.false:
454   ; CHECK-NEXT:   successors: %bb.2(0x80000000)
455   ; CHECK-NEXT: {{  $}}
456   ; CHECK-NEXT: bb.2.cond.end:
457   ; CHECK-NEXT:   [[PHI:%[0-9]+]]:_(p0) = G_PHI [[COPY2]](p0), %bb.1, [[COPY1]](p0), %bb.0
458   ; CHECK-NEXT:   $x10 = COPY [[PHI]](p0)
459   ; CHECK-NEXT:   PseudoRET implicit $x10
460   bb.1.entry:
461     liveins: $x10, $x11, $x12
463     %3:_(s64) = COPY $x10
464     %0:_(s1) = G_TRUNC %3(s64)
465     %1:_(p0) = COPY $x11
466     %2:_(p0) = COPY $x12
467     G_BRCOND %0(s1), %bb.3
468     G_BR %bb.2
470   bb.2.cond.false:
472   bb.3.cond.end:
473     %4:_(p0) = G_PHI %2(p0), %bb.2, %1(p0), %bb.1
474     $x10 = COPY %4(p0)
475     PseudoRET implicit $x10
479 name:            phi_i72
480 alignment:       4
481 tracksRegLiveness: true
482 registers:
483   - { id: 0, class: _ }
484   - { id: 1, class: _ }
485   - { id: 2, class: _ }
486   - { id: 3, class: _ }
487   - { id: 4, class: _ }
488   - { id: 5, class: _ }
489   - { id: 6, class: _ }
490   - { id: 7, class: _ }
491   - { id: 8, class: _ }
492   - { id: 9, class: _ }
493   - { id: 10, class: _ }
494   - { id: 11, class: _ }
495   - { id: 12, class: _ }
496   - { id: 13, class: _ }
497 frameInfo:
498   maxAlignment:    1
499 machineFunctionInfo:
500   varArgsFrameIndex: 0
501   varArgsSaveSize: 0
502 body:             |
503   ; CHECK-LABEL: name: phi_i72
504   ; CHECK: bb.0.entry:
505   ; CHECK-NEXT:   successors: %bb.2(0x40000000), %bb.1(0x40000000)
506   ; CHECK-NEXT:   liveins: $x10, $x11, $x12, $x13, $x14
507   ; CHECK-NEXT: {{  $}}
508   ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s64) = COPY $x10
509   ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(s64) = COPY $x11
510   ; CHECK-NEXT:   [[COPY2:%[0-9]+]]:_(s64) = COPY $x12
511   ; CHECK-NEXT:   [[COPY3:%[0-9]+]]:_(s64) = COPY $x13
512   ; CHECK-NEXT:   [[COPY4:%[0-9]+]]:_(s64) = COPY $x14
513   ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
514   ; CHECK-NEXT:   [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]
515   ; CHECK-NEXT:   G_BRCOND [[AND]](s64), %bb.2
516   ; CHECK-NEXT:   G_BR %bb.1
517   ; CHECK-NEXT: {{  $}}
518   ; CHECK-NEXT: bb.1.cond.false:
519   ; CHECK-NEXT:   successors: %bb.2(0x80000000)
520   ; CHECK-NEXT: {{  $}}
521   ; CHECK-NEXT: bb.2.cond.end:
522   ; CHECK-NEXT:   [[PHI:%[0-9]+]]:_(s64) = G_PHI [[COPY3]](s64), %bb.1, [[COPY1]](s64), %bb.0
523   ; CHECK-NEXT:   [[PHI1:%[0-9]+]]:_(s64) = G_PHI [[COPY4]](s64), %bb.1, [[COPY2]](s64), %bb.0
524   ; CHECK-NEXT:   $x10 = COPY [[PHI]](s64)
525   ; CHECK-NEXT:   $x11 = COPY [[PHI1]](s64)
526   ; CHECK-NEXT:   PseudoRET implicit $x10, implicit $x11
527   bb.1.entry:
528     liveins: $x10, $x11, $x12, $x13, $x14
530     %3:_(s64) = COPY $x10
531     %0:_(s1) = G_TRUNC %3(s64)
532     %4:_(s64) = COPY $x11
533     %5:_(s64) = COPY $x12
534     %6:_(s128) = G_MERGE_VALUES %4(s64), %5(s64)
535     %1:_(s72) = G_TRUNC %6(s128)
536     %7:_(s64) = COPY $x13
537     %8:_(s64) = COPY $x14
538     %9:_(s128) = G_MERGE_VALUES %7(s64), %8(s64)
539     %2:_(s72) = G_TRUNC %9(s128)
540     G_BRCOND %0(s1), %bb.3
541     G_BR %bb.2
543   bb.2.cond.false:
545   bb.3.cond.end:
546     %10:_(s72) = G_PHI %2(s72), %bb.2, %1(s72), %bb.1
547     %13:_(s128) = G_ANYEXT %10(s72)
548     %11:_(s64), %12:_(s64) = G_UNMERGE_VALUES %13(s128)
549     $x10 = COPY %11(s64)
550     $x11 = COPY %12(s64)
551     PseudoRET implicit $x10, implicit $x11
555 name:            phi_i128
556 alignment:       4
557 tracksRegLiveness: true
558 registers:
559   - { id: 0, class: _ }
560   - { id: 1, class: _ }
561   - { id: 2, class: _ }
562   - { id: 3, class: _ }
563   - { id: 4, class: _ }
564   - { id: 5, class: _ }
565   - { id: 6, class: _ }
566   - { id: 7, class: _ }
567   - { id: 8, class: _ }
568   - { id: 9, class: _ }
569   - { id: 10, class: _ }
570 frameInfo:
571   maxAlignment:    1
572 machineFunctionInfo:
573   varArgsFrameIndex: 0
574   varArgsSaveSize: 0
575 body:             |
576   ; CHECK-LABEL: name: phi_i128
577   ; CHECK: bb.0.entry:
578   ; CHECK-NEXT:   successors: %bb.2(0x40000000), %bb.1(0x40000000)
579   ; CHECK-NEXT:   liveins: $x10, $x11, $x12, $x13, $x14
580   ; CHECK-NEXT: {{  $}}
581   ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s64) = COPY $x10
582   ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(s64) = COPY $x11
583   ; CHECK-NEXT:   [[COPY2:%[0-9]+]]:_(s64) = COPY $x12
584   ; CHECK-NEXT:   [[COPY3:%[0-9]+]]:_(s64) = COPY $x13
585   ; CHECK-NEXT:   [[COPY4:%[0-9]+]]:_(s64) = COPY $x14
586   ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
587   ; CHECK-NEXT:   [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]
588   ; CHECK-NEXT:   G_BRCOND [[AND]](s64), %bb.2
589   ; CHECK-NEXT:   G_BR %bb.1
590   ; CHECK-NEXT: {{  $}}
591   ; CHECK-NEXT: bb.1.cond.false:
592   ; CHECK-NEXT:   successors: %bb.2(0x80000000)
593   ; CHECK-NEXT: {{  $}}
594   ; CHECK-NEXT: bb.2.cond.end:
595   ; CHECK-NEXT:   [[PHI:%[0-9]+]]:_(s64) = G_PHI [[COPY3]](s64), %bb.1, [[COPY1]](s64), %bb.0
596   ; CHECK-NEXT:   [[PHI1:%[0-9]+]]:_(s64) = G_PHI [[COPY4]](s64), %bb.1, [[COPY2]](s64), %bb.0
597   ; CHECK-NEXT:   $x10 = COPY [[PHI]](s64)
598   ; CHECK-NEXT:   $x11 = COPY [[PHI1]](s64)
599   ; CHECK-NEXT:   PseudoRET implicit $x10, implicit $x11
600   bb.1.entry:
601     liveins: $x10, $x11, $x12, $x13, $x14
603     %3:_(s64) = COPY $x10
604     %0:_(s1) = G_TRUNC %3(s64)
605     %4:_(s64) = COPY $x11
606     %5:_(s64) = COPY $x12
607     %1:_(s128) = G_MERGE_VALUES %4(s64), %5(s64)
608     %6:_(s64) = COPY $x13
609     %7:_(s64) = COPY $x14
610     %2:_(s128) = G_MERGE_VALUES %6(s64), %7(s64)
611     G_BRCOND %0(s1), %bb.3
612     G_BR %bb.2
614   bb.2.cond.false:
616   bb.3.cond.end:
617     %8:_(s128) = G_PHI %2(s128), %bb.2, %1(s128), %bb.1
618     %9:_(s64), %10:_(s64) = G_UNMERGE_VALUES %8(s128)
619     $x10 = COPY %9(s64)
620     $x11 = COPY %10(s64)
621     PseudoRET implicit $x10, implicit $x11
625 name:            phi_i192
626 alignment:       4
627 tracksRegLiveness: true
628 registers:
629   - { id: 0, class: _ }
630   - { id: 1, class: _ }
631   - { id: 2, class: _ }
632   - { id: 3, class: _ }
633   - { id: 4, class: _ }
634   - { id: 5, class: _ }
635   - { id: 6, class: _ }
636   - { id: 7, class: _ }
637   - { id: 8, class: _ }
638   - { id: 9, class: _ }
639   - { id: 10, class: _ }
640   - { id: 11, class: _ }
641   - { id: 12, class: _ }
642   - { id: 13, class: _ }
643 frameInfo:
644   maxAlignment:    1
645 machineFunctionInfo:
646   varArgsFrameIndex: 0
647   varArgsSaveSize: 0
648 body:             |
649   ; CHECK-LABEL: name: phi_i192
650   ; CHECK: bb.0.entry:
651   ; CHECK-NEXT:   successors: %bb.2(0x40000000), %bb.1(0x40000000)
652   ; CHECK-NEXT:   liveins: $x10, $x11, $x12
653   ; CHECK-NEXT: {{  $}}
654   ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s64) = COPY $x10
655   ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(s64) = COPY $x11
656   ; CHECK-NEXT:   [[COPY2:%[0-9]+]]:_(s64) = COPY $x11
657   ; CHECK-NEXT:   [[COPY3:%[0-9]+]]:_(s64) = COPY $x11
658   ; CHECK-NEXT:   [[COPY4:%[0-9]+]]:_(s64) = COPY $x12
659   ; CHECK-NEXT:   [[COPY5:%[0-9]+]]:_(s64) = COPY $x12
660   ; CHECK-NEXT:   [[COPY6:%[0-9]+]]:_(s64) = COPY $x12
661   ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
662   ; CHECK-NEXT:   [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]
663   ; CHECK-NEXT:   G_BRCOND [[AND]](s64), %bb.2
664   ; CHECK-NEXT:   G_BR %bb.1
665   ; CHECK-NEXT: {{  $}}
666   ; CHECK-NEXT: bb.1.cond.false:
667   ; CHECK-NEXT:   successors: %bb.2(0x80000000)
668   ; CHECK-NEXT: {{  $}}
669   ; CHECK-NEXT: bb.2.cond.end:
670   ; CHECK-NEXT:   [[PHI:%[0-9]+]]:_(s64) = G_PHI [[COPY4]](s64), %bb.1, [[COPY1]](s64), %bb.0
671   ; CHECK-NEXT:   [[PHI1:%[0-9]+]]:_(s64) = G_PHI [[COPY5]](s64), %bb.1, [[COPY2]](s64), %bb.0
672   ; CHECK-NEXT:   [[PHI2:%[0-9]+]]:_(s64) = G_PHI [[COPY6]](s64), %bb.1, [[COPY3]](s64), %bb.0
673   ; CHECK-NEXT:   $x10 = COPY [[PHI]](s64)
674   ; CHECK-NEXT:   $x10 = COPY [[PHI1]](s64)
675   ; CHECK-NEXT:   $x10 = COPY [[PHI2]](s64)
676   ; CHECK-NEXT:   PseudoRET implicit $x10, implicit $x10, implicit $x10
677   bb.1.entry:
678     liveins: $x10, $x11, $x12
680     %3:_(s64) = COPY $x10
681     %0:_(s1) = G_TRUNC %3(s64)
682     %4:_(s64) = COPY $x11
683     %5:_(s64) = COPY $x11
684     %6:_(s64) = COPY $x11
685     %1:_(s192) = G_MERGE_VALUES %4(s64), %5(s64), %6(s64)
686     %7:_(s64) = COPY $x12
687     %8:_(s64) = COPY $x12
688     %9:_(s64) = COPY $x12
689     %2:_(s192) = G_MERGE_VALUES %7(s64), %8(s64), %9(s64)
690     G_BRCOND %0(s1), %bb.3
691     G_BR %bb.2
693   bb.2.cond.false:
695   bb.3.cond.end:
696     %10:_(s192) = G_PHI %2(s192), %bb.2, %1(s192), %bb.1
697     %11:_(s64), %12:_(s64), %13:_(s64) = G_UNMERGE_VALUES %10(s192)
698     $x10 = COPY %11(s64)
699     $x10 = COPY %12(s64)
700     $x10 = COPY %13(s64)
701     PseudoRET implicit $x10, implicit $x10, implicit $x10