@@ -368,3 +368,134 @@ body: |
368
368
%y:vr = COPY %x
369
369
%z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 4 /* e16 */, 0 /* tu, mu */
370
370
...
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