Commit e064211
committed
[LV] Vectorize select min/max index.
Add support for vectorizing loops that select the index of the minimum or
maximum element. The patch implements vectorizing those patterns by
combining Min/Max and FindFirstIV reductions.
It extends matching Min/Max reductions to allow in-loop users that are
FindLastIV reductions. It records a flag indicating that the Min/Max
reduction is used by another reduction.
When creating reduction recipes, we process any reduction that has other
reduction users. The reduction using the min/max reduction needs adjusting
to compute the correct result:
1. We need to find the first IV for which the condition based on the
min/max reduction is true,
2. Compare the partial min/max reduction result to its final value and,
3. Select the lanes of the partial FindLastIV reductions which correspond
to the lanes matching the min/max reduction result.1 parent c925a3e commit e064211
File tree
11 files changed
+1435
-242
lines changed- llvm
- lib/Transforms/Vectorize
- test/Transforms/LoopVectorize
- AArch64
11 files changed
+1435
-242
lines changedLines changed: 15 additions & 6 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
798 | 798 | | |
799 | 799 | | |
800 | 800 | | |
| 801 | + | |
801 | 802 | | |
802 | 803 | | |
803 | 804 | | |
| |||
887 | 888 | | |
888 | 889 | | |
889 | 890 | | |
890 | | - | |
891 | | - | |
892 | | - | |
893 | | - | |
894 | | - | |
895 | | - | |
| 891 | + | |
896 | 892 | | |
897 | 893 | | |
898 | 894 | | |
| |||
1043 | 1039 | | |
1044 | 1040 | | |
1045 | 1041 | | |
| 1042 | + | |
| 1043 | + | |
| 1044 | + | |
| 1045 | + | |
| 1046 | + | |
| 1047 | + | |
| 1048 | + | |
| 1049 | + | |
| 1050 | + | |
| 1051 | + | |
| 1052 | + | |
| 1053 | + | |
| 1054 | + | |
1046 | 1055 | | |
1047 | 1056 | | |
1048 | 1057 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7295 | 7295 | | |
7296 | 7296 | | |
7297 | 7297 | | |
| 7298 | + | |
| 7299 | + | |
| 7300 | + | |
7298 | 7301 | | |
7299 | 7302 | | |
7300 | 7303 | | |
| |||
7306 | 7309 | | |
7307 | 7310 | | |
7308 | 7311 | | |
| 7312 | + | |
| 7313 | + | |
| 7314 | + | |
7309 | 7315 | | |
| 7316 | + | |
7310 | 7317 | | |
7311 | 7318 | | |
7312 | 7319 | | |
| |||
8172 | 8179 | | |
8173 | 8180 | | |
8174 | 8181 | | |
8175 | | - | |
| 8182 | + | |
8176 | 8183 | | |
8177 | 8184 | | |
8178 | 8185 | | |
| |||
8266 | 8273 | | |
8267 | 8274 | | |
8268 | 8275 | | |
8269 | | - | |
8270 | | - | |
8271 | | - | |
8272 | 8276 | | |
8273 | 8277 | | |
8274 | 8278 | | |
| |||
8282 | 8286 | | |
8283 | 8287 | | |
8284 | 8288 | | |
8285 | | - | |
| 8289 | + | |
8286 | 8290 | | |
8287 | 8291 | | |
8288 | 8292 | | |
8289 | 8293 | | |
8290 | 8294 | | |
| 8295 | + | |
| 8296 | + | |
| 8297 | + | |
| 8298 | + | |
| 8299 | + | |
8291 | 8300 | | |
8292 | 8301 | | |
8293 | 8302 | | |
| |||
8472 | 8481 | | |
8473 | 8482 | | |
8474 | 8483 | | |
8475 | | - | |
| 8484 | + | |
8476 | 8485 | | |
8477 | 8486 | | |
8478 | 8487 | | |
| |||
8494 | 8503 | | |
8495 | 8504 | | |
8496 | 8505 | | |
8497 | | - | |
| 8506 | + | |
8498 | 8507 | | |
8499 | 8508 | | |
8500 | 8509 | | |
| |||
8503 | 8512 | | |
8504 | 8513 | | |
8505 | 8514 | | |
8506 | | - | |
| 8515 | + | |
8507 | 8516 | | |
8508 | 8517 | | |
8509 | 8518 | | |
| |||
8805 | 8814 | | |
8806 | 8815 | | |
8807 | 8816 | | |
| 8817 | + | |
| 8818 | + | |
8808 | 8819 | | |
8809 | 8820 | | |
8810 | 8821 | | |
| |||
8870 | 8881 | | |
8871 | 8882 | | |
8872 | 8883 | | |
| 8884 | + | |
| 8885 | + | |
| 8886 | + | |
| 8887 | + | |
| 8888 | + | |
8873 | 8889 | | |
8874 | 8890 | | |
8875 | 8891 | | |
| |||
9331 | 9347 | | |
9332 | 9348 | | |
9333 | 9349 | | |
| 9350 | + | |
9334 | 9351 | | |
9335 | 9352 | | |
9336 | 9353 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1832 | 1832 | | |
1833 | 1833 | | |
1834 | 1834 | | |
1835 | | - | |
| 1835 | + | |
| 1836 | + | |
1836 | 1837 | | |
1837 | 1838 | | |
1838 | 1839 | | |
| |||
1841 | 1842 | | |
1842 | 1843 | | |
1843 | 1844 | | |
| 1845 | + | |
| 1846 | + | |
| 1847 | + | |
| 1848 | + | |
1844 | 1849 | | |
1845 | 1850 | | |
1846 | 1851 | | |
| |||
1902 | 1907 | | |
1903 | 1908 | | |
1904 | 1909 | | |
1905 | | - | |
| 1910 | + | |
1906 | 1911 | | |
1907 | 1912 | | |
1908 | 1913 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
589 | 589 | | |
590 | 590 | | |
591 | 591 | | |
| 592 | + | |
| 593 | + | |
| 594 | + | |
| 595 | + | |
| 596 | + | |
| 597 | + | |
| 598 | + | |
| 599 | + | |
| 600 | + | |
| 601 | + | |
| 602 | + | |
| 603 | + | |
| 604 | + | |
| 605 | + | |
| 606 | + | |
| 607 | + | |
| 608 | + | |
| 609 | + | |
| 610 | + | |
| 611 | + | |
| 612 | + | |
| 613 | + | |
| 614 | + | |
| 615 | + | |
| 616 | + | |
| 617 | + | |
| 618 | + | |
| 619 | + | |
| 620 | + | |
| 621 | + | |
| 622 | + | |
| 623 | + | |
| 624 | + | |
| 625 | + | |
| 626 | + | |
| 627 | + | |
| 628 | + | |
| 629 | + | |
| 630 | + | |
| 631 | + | |
| 632 | + | |
| 633 | + | |
| 634 | + | |
| 635 | + | |
| 636 | + | |
| 637 | + | |
| 638 | + | |
| 639 | + | |
| 640 | + | |
| 641 | + | |
| 642 | + | |
| 643 | + | |
| 644 | + | |
| 645 | + | |
| 646 | + | |
| 647 | + | |
| 648 | + | |
| 649 | + | |
| 650 | + | |
| 651 | + | |
| 652 | + | |
| 653 | + | |
| 654 | + | |
| 655 | + | |
| 656 | + | |
| 657 | + | |
| 658 | + | |
| 659 | + | |
| 660 | + | |
| 661 | + | |
| 662 | + | |
| 663 | + | |
| 664 | + | |
| 665 | + | |
| 666 | + | |
| 667 | + | |
| 668 | + | |
| 669 | + | |
| 670 | + | |
| 671 | + | |
| 672 | + | |
| 673 | + | |
| 674 | + | |
| 675 | + | |
| 676 | + | |
| 677 | + | |
| 678 | + | |
| 679 | + | |
| 680 | + | |
| 681 | + | |
| 682 | + | |
| 683 | + | |
| 684 | + | |
| 685 | + | |
| 686 | + | |
| 687 | + | |
| 688 | + | |
| 689 | + | |
| 690 | + | |
| 691 | + | |
| 692 | + | |
| 693 | + | |
| 694 | + | |
| 695 | + | |
| 696 | + | |
| 697 | + | |
| 698 | + | |
| 699 | + | |
| 700 | + | |
| 701 | + | |
| 702 | + | |
| 703 | + | |
| 704 | + | |
| 705 | + | |
| 706 | + | |
| 707 | + | |
| 708 | + | |
| 709 | + | |
| 710 | + | |
| 711 | + | |
| 712 | + | |
| 713 | + | |
| 714 | + | |
| 715 | + | |
| 716 | + | |
| 717 | + | |
| 718 | + | |
| 719 | + | |
| 720 | + | |
| 721 | + | |
| 722 | + | |
| 723 | + | |
| 724 | + | |
| 725 | + | |
| 726 | + | |
| 727 | + | |
| 728 | + | |
| 729 | + | |
| 730 | + | |
| 731 | + | |
| 732 | + | |
| 733 | + | |
| 734 | + | |
| 735 | + | |
| 736 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
83 | 83 | | |
84 | 84 | | |
85 | 85 | | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
86 | 91 | | |
87 | 92 | | |
88 | 93 | | |
| |||
0 commit comments