Commit 042fad4
committed
[RISCV] Unify vsetvli compatibility logic in forward and backwards passes
The backwards local postpass has its own logic for figuring out if two vsetvlis
are compatible, separate from isCompatible used by the forward pass. However
these largely work out the same thing, i.e. is it possible to mutate vsetvli A
to be vsetvli B given these demanded properties.
The main difference between the two is that the backwards postpass needs to be able to reason about vsetvli x0, x0, whereas the forward pass doesn't (because regular vector pseudos can't express this).
So if we teach VSETVLIInfo used by the forward pass to handle the vsetvli x0,
x0 case, then it becomes possible to unify the two passes. To do this we
introduce a new state to represent that the VL is preserved from the previous
vsetvli. Then in VSETVLIInfo::isCompatible, we can use this information to avoid
check if the AVLs are the same if we know that the second vsetvli is x0, x0.
For the backwards pass, we keep a running track of VSETVLIInfo as we iterate up
through the basic block, and swap out canMutatePriorConfig with
VSETVLIInfo::isCompatible.
It's possible now to move areCompatibleVTYPEs into VSETVLIInfo, but I've
deferred that code motion for now to keep the diff small, and can move it
afterwards as an NFC.1 parent 76b53a0 commit 042fad4
File tree
4 files changed
+63
-90
lines changed- llvm
- lib/Target/RISCV
- test/CodeGen/RISCV/rvv
4 files changed
+63
-90
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
419 | 419 | | |
420 | 420 | | |
421 | 421 | | |
| 422 | + | |
| 423 | + | |
| 424 | + | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
422 | 433 | | |
423 | 434 | | |
424 | 435 | | |
| |||
431 | 442 | | |
432 | 443 | | |
433 | 444 | | |
| 445 | + | |
434 | 446 | | |
435 | 447 | | |
436 | 448 | | |
| |||
466 | 478 | | |
467 | 479 | | |
468 | 480 | | |
| 481 | + | |
| 482 | + | |
469 | 483 | | |
470 | 484 | | |
471 | 485 | | |
| |||
486 | 500 | | |
487 | 501 | | |
488 | 502 | | |
489 | | - | |
490 | | - | |
491 | | - | |
492 | | - | |
493 | | - | |
| 503 | + | |
494 | 504 | | |
495 | 505 | | |
496 | 506 | | |
| |||
579 | 589 | | |
580 | 590 | | |
581 | 591 | | |
| 592 | + | |
| 593 | + | |
582 | 594 | | |
583 | | - | |
| 595 | + | |
| 596 | + | |
584 | 597 | | |
585 | 598 | | |
586 | 599 | | |
| |||
593 | 606 | | |
594 | 607 | | |
595 | 608 | | |
596 | | - | |
597 | | - | |
| 609 | + | |
| 610 | + | |
| 611 | + | |
| 612 | + | |
| 613 | + | |
598 | 614 | | |
599 | | - | |
600 | | - | |
| 615 | + | |
| 616 | + | |
| 617 | + | |
601 | 618 | | |
602 | 619 | | |
603 | 620 | | |
| |||
849 | 866 | | |
850 | 867 | | |
851 | 868 | | |
852 | | - | |
853 | | - | |
854 | | - | |
| 869 | + | |
| 870 | + | |
| 871 | + | |
| 872 | + | |
| 873 | + | |
855 | 874 | | |
856 | 875 | | |
857 | 876 | | |
| |||
1426 | 1445 | | |
1427 | 1446 | | |
1428 | 1447 | | |
1429 | | - | |
1430 | | - | |
1431 | | - | |
1432 | | - | |
1433 | | - | |
1434 | | - | |
1435 | | - | |
1436 | | - | |
1437 | | - | |
1438 | | - | |
1439 | | - | |
1440 | | - | |
1441 | | - | |
1442 | | - | |
1443 | | - | |
1444 | | - | |
1445 | | - | |
1446 | | - | |
1447 | | - | |
1448 | | - | |
1449 | | - | |
1450 | | - | |
1451 | | - | |
1452 | | - | |
1453 | | - | |
1454 | | - | |
1455 | | - | |
1456 | | - | |
1457 | | - | |
1458 | | - | |
1459 | | - | |
1460 | | - | |
1461 | | - | |
1462 | | - | |
1463 | | - | |
1464 | | - | |
1465 | | - | |
1466 | | - | |
1467 | | - | |
1468 | | - | |
1469 | | - | |
1470 | | - | |
1471 | | - | |
1472 | | - | |
1473 | 1448 | | |
1474 | 1449 | | |
| 1450 | + | |
1475 | 1451 | | |
1476 | 1452 | | |
1477 | 1453 | | |
| |||
1482 | 1458 | | |
1483 | 1459 | | |
1484 | 1460 | | |
| 1461 | + | |
1485 | 1462 | | |
1486 | 1463 | | |
1487 | 1464 | | |
| |||
1495 | 1472 | | |
1496 | 1473 | | |
1497 | 1474 | | |
1498 | | - | |
| 1475 | + | |
| 1476 | + | |
1499 | 1477 | | |
1500 | 1478 | | |
1501 | 1479 | | |
1502 | 1480 | | |
1503 | 1481 | | |
1504 | | - | |
1505 | | - | |
| 1482 | + | |
| 1483 | + | |
| 1484 | + | |
| 1485 | + | |
| 1486 | + | |
| 1487 | + | |
| 1488 | + | |
| 1489 | + | |
| 1490 | + | |
| 1491 | + | |
| 1492 | + | |
| 1493 | + | |
1506 | 1494 | | |
1507 | 1495 | | |
1508 | 1496 | | |
| |||
1511 | 1499 | | |
1512 | 1500 | | |
1513 | 1501 | | |
| 1502 | + | |
1514 | 1503 | | |
1515 | 1504 | | |
1516 | 1505 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
51 | 51 | | |
52 | 52 | | |
53 | 53 | | |
54 | | - | |
55 | | - | |
56 | | - | |
57 | 54 | | |
| 55 | + | |
58 | 56 | | |
| 57 | + | |
59 | 58 | | |
60 | 59 | | |
61 | 60 | | |
| |||
65 | 64 | | |
66 | 65 | | |
67 | 66 | | |
68 | | - | |
69 | | - | |
70 | 67 | | |
| 68 | + | |
71 | 69 | | |
72 | 70 | | |
73 | 71 | | |
| |||
103 | 101 | | |
104 | 102 | | |
105 | 103 | | |
106 | | - | |
107 | | - | |
108 | 104 | | |
| 105 | + | |
109 | 106 | | |
110 | 107 | | |
111 | 108 | | |
| |||
Lines changed: 8 additions & 21 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
12418 | 12418 | | |
12419 | 12419 | | |
12420 | 12420 | | |
12421 | | - | |
| 12421 | + | |
| 12422 | + | |
12422 | 12423 | | |
12423 | 12424 | | |
12424 | 12425 | | |
12425 | | - | |
12426 | | - | |
12427 | 12426 | | |
12428 | 12427 | | |
12429 | 12428 | | |
| |||
12452 | 12451 | | |
12453 | 12452 | | |
12454 | 12453 | | |
12455 | | - | |
| 12454 | + | |
12456 | 12455 | | |
12457 | 12456 | | |
12458 | 12457 | | |
12459 | 12458 | | |
12460 | | - | |
12461 | 12459 | | |
12462 | | - | |
12463 | 12460 | | |
12464 | 12461 | | |
12465 | 12462 | | |
| |||
12592 | 12589 | | |
12593 | 12590 | | |
12594 | 12591 | | |
12595 | | - | |
| 12592 | + | |
12596 | 12593 | | |
12597 | 12594 | | |
12598 | 12595 | | |
12599 | 12596 | | |
12600 | | - | |
12601 | 12597 | | |
12602 | | - | |
12603 | 12598 | | |
12604 | 12599 | | |
12605 | 12600 | | |
| |||
12742 | 12737 | | |
12743 | 12738 | | |
12744 | 12739 | | |
12745 | | - | |
| 12740 | + | |
12746 | 12741 | | |
12747 | 12742 | | |
12748 | 12743 | | |
12749 | 12744 | | |
12750 | | - | |
12751 | 12745 | | |
12752 | | - | |
12753 | 12746 | | |
12754 | 12747 | | |
12755 | 12748 | | |
| |||
12777 | 12770 | | |
12778 | 12771 | | |
12779 | 12772 | | |
12780 | | - | |
| 12773 | + | |
12781 | 12774 | | |
12782 | 12775 | | |
12783 | 12776 | | |
12784 | 12777 | | |
12785 | | - | |
12786 | 12778 | | |
12787 | | - | |
12788 | 12779 | | |
12789 | 12780 | | |
12790 | 12781 | | |
| |||
12835 | 12826 | | |
12836 | 12827 | | |
12837 | 12828 | | |
12838 | | - | |
| 12829 | + | |
12839 | 12830 | | |
12840 | 12831 | | |
12841 | 12832 | | |
12842 | 12833 | | |
12843 | | - | |
12844 | 12834 | | |
12845 | | - | |
12846 | 12835 | | |
12847 | 12836 | | |
12848 | 12837 | | |
| |||
12870 | 12859 | | |
12871 | 12860 | | |
12872 | 12861 | | |
12873 | | - | |
| 12862 | + | |
12874 | 12863 | | |
12875 | 12864 | | |
12876 | 12865 | | |
12877 | 12866 | | |
12878 | | - | |
12879 | 12867 | | |
12880 | | - | |
12881 | 12868 | | |
12882 | 12869 | | |
12883 | 12870 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
329 | 329 | | |
330 | 330 | | |
331 | 331 | | |
332 | | - | |
333 | | - | |
| 332 | + | |
334 | 333 | | |
| 334 | + | |
335 | 335 | | |
336 | 336 | | |
337 | 337 | | |
| |||
0 commit comments