@@ -368,3 +368,134 @@ body: |
368368 %y:vr = COPY %x
369369 %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 4 /* e16 */, 0 /* tu, mu */
370370 ...
371+ ---
372+ name : phi
373+ tracksRegLiveness : true
374+ body : |
375+ ; CHECK-LABEL: name: phi
376+ ; CHECK: bb.0:
377+ ; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)
378+ ; CHECK-NEXT: {{ $}}
379+ ; CHECK-NEXT: %w:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
380+ ; CHECK-NEXT: BNE $noreg, $noreg, %bb.2
381+ ; CHECK-NEXT: {{ $}}
382+ ; CHECK-NEXT: bb.1:
383+ ; CHECK-NEXT: successors: %bb.2(0x80000000)
384+ ; CHECK-NEXT: {{ $}}
385+ ; CHECK-NEXT: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
386+ ; CHECK-NEXT: {{ $}}
387+ ; CHECK-NEXT: bb.2:
388+ ; CHECK-NEXT: %y:vr = PHI %w, %bb.0, %x, %bb.1
389+ ; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
390+ bb.0:
391+ %w:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */
392+ BNE $noreg, $noreg, %bb.2
393+ bb.1:
394+ %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */
395+ bb.2:
396+ %y:vr = PHI %w, %bb.0, %x, %bb.1
397+ %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
398+ ...
399+ ---
400+ name : phi_user_invalid_sew
401+ tracksRegLiveness : true
402+ body : |
403+ ; CHECK-LABEL: name: phi_user_invalid_sew
404+ ; CHECK: bb.0:
405+ ; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)
406+ ; CHECK-NEXT: {{ $}}
407+ ; CHECK-NEXT: %w:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */
408+ ; CHECK-NEXT: BNE $noreg, $noreg, %bb.2
409+ ; CHECK-NEXT: {{ $}}
410+ ; CHECK-NEXT: bb.1:
411+ ; CHECK-NEXT: successors: %bb.2(0x80000000)
412+ ; CHECK-NEXT: {{ $}}
413+ ; CHECK-NEXT: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */
414+ ; CHECK-NEXT: {{ $}}
415+ ; CHECK-NEXT: bb.2:
416+ ; CHECK-NEXT: %y:vr = PHI %w, %bb.0, %x, %bb.1
417+ ; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 4 /* e16 */, 0 /* tu, mu */
418+ bb.0:
419+ %w:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */
420+ BNE $noreg, $noreg, %bb.2
421+ bb.1:
422+ %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */
423+ bb.2:
424+ %y:vr = PHI %w, %bb.0, %x, %bb.1
425+ %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 4 /* e16 */, 0 /* tu, mu */
426+ ...
427+ ---
428+ name : phi_different_incoming_sew
429+ tracksRegLiveness : true
430+ body : |
431+ ; CHECK-LABEL: name: phi_different_incoming_sew
432+ ; CHECK: bb.0:
433+ ; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)
434+ ; CHECK-NEXT: {{ $}}
435+ ; CHECK-NEXT: %w:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
436+ ; CHECK-NEXT: BNE $noreg, $noreg, %bb.2
437+ ; CHECK-NEXT: {{ $}}
438+ ; CHECK-NEXT: bb.1:
439+ ; CHECK-NEXT: successors: %bb.2(0x80000000)
440+ ; CHECK-NEXT: {{ $}}
441+ ; CHECK-NEXT: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 /* tu, mu */
442+ ; CHECK-NEXT: {{ $}}
443+ ; CHECK-NEXT: bb.2:
444+ ; CHECK-NEXT: %y:vr = PHI %w, %bb.0, %x, %bb.1
445+ ; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
446+ bb.0:
447+ %w:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */
448+ BNE $noreg, $noreg, %bb.2
449+ bb.1:
450+ %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 /* tu, mu */
451+ bb.2:
452+ %y:vr = PHI %w, %bb.0, %x, %bb.1
453+ %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
454+ ...
455+ ---
456+ name : phi_cycle_direct
457+ tracksRegLiveness : true
458+ body : |
459+ ; CHECK-LABEL: name: phi_cycle_direct
460+ ; CHECK: bb.0:
461+ ; CHECK-NEXT: successors: %bb.1(0x80000000)
462+ ; CHECK-NEXT: {{ $}}
463+ ; CHECK-NEXT: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
464+ ; CHECK-NEXT: {{ $}}
465+ ; CHECK-NEXT: bb.1:
466+ ; CHECK-NEXT: successors: %bb.1(0x80000000)
467+ ; CHECK-NEXT: {{ $}}
468+ ; CHECK-NEXT: %y:vr = PHI %x, %bb.0, %y, %bb.1
469+ ; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
470+ ; CHECK-NEXT: PseudoBR %bb.1
471+ bb.0:
472+ %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */
473+ bb.1:
474+ %y:vr = PHI %x, %bb.0, %y, %bb.1
475+ %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
476+ PseudoBR %bb.1
477+ ...
478+ ---
479+ name : phi_cycle_indirect
480+ tracksRegLiveness : true
481+ body : |
482+ ; CHECK-LABEL: name: phi_cycle_indirect
483+ ; CHECK: bb.0:
484+ ; CHECK-NEXT: successors: %bb.1(0x80000000)
485+ ; CHECK-NEXT: {{ $}}
486+ ; CHECK-NEXT: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
487+ ; CHECK-NEXT: {{ $}}
488+ ; CHECK-NEXT: bb.1:
489+ ; CHECK-NEXT: successors: %bb.1(0x80000000)
490+ ; CHECK-NEXT: {{ $}}
491+ ; CHECK-NEXT: %y:vr = PHI %x, %bb.0, %z, %bb.1
492+ ; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
493+ ; CHECK-NEXT: PseudoBR %bb.1
494+ bb.0:
495+ %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */
496+ bb.1:
497+ %y:vr = PHI %x, %bb.0, %z, %bb.1
498+ %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
499+ PseudoBR %bb.1
500+ ...
501+
0 commit comments