Commit 1fccba5
authored
[AArch64][PAC] Eliminate excessive MOVs when computing blend (llvm#115185)
As function calls do not generally preserve X16 and X17, it is beneficial
to allow AddrDisc operand of BLRA instruction to reside in these
registers and make use of this condition when computing the
discriminator.
This can save up to two MOVs in cases such as loading a (signed) virtual
function pointer via a (signed) pointer to vtable, for example
ldr x9, [x16]
mov x8, x16
mov x17, x8
movk x17, llvm#34646, lsl #48
blraa x9, x17
can be simplified to
ldr x8, [x16]
movk x16, llvm#34646, lsl #48
blraa x8, x161 parent 345b331 commit 1fccba5
File tree
3 files changed
+103
-48
lines changed- llvm
- lib/Target/AArch64
- test/CodeGen/AArch64
3 files changed
+103
-48
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
162 | 162 | | |
163 | 163 | | |
164 | 164 | | |
165 | | - | |
166 | | - | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
167 | 186 | | |
168 | 187 | | |
169 | 188 | | |
| |||
1726 | 1745 | | |
1727 | 1746 | | |
1728 | 1747 | | |
1729 | | - | |
1730 | | - | |
| 1748 | + | |
| 1749 | + | |
| 1750 | + | |
| 1751 | + | |
| 1752 | + | |
1731 | 1753 | | |
1732 | 1754 | | |
1733 | 1755 | | |
| |||
1737 | 1759 | | |
1738 | 1760 | | |
1739 | 1761 | | |
1740 | | - | |
| 1762 | + | |
1741 | 1763 | | |
1742 | | - | |
1743 | | - | |
| 1764 | + | |
| 1765 | + | |
1744 | 1766 | | |
1745 | 1767 | | |
1746 | | - | |
1747 | | - | |
1748 | | - | |
1749 | | - | |
| 1768 | + | |
| 1769 | + | |
| 1770 | + | |
| 1771 | + | |
| 1772 | + | |
| 1773 | + | |
| 1774 | + | |
| 1775 | + | |
| 1776 | + | |
| 1777 | + | |
| 1778 | + | |
| 1779 | + | |
1750 | 1780 | | |
1751 | 1781 | | |
1752 | 1782 | | |
| |||
1963 | 1993 | | |
1964 | 1994 | | |
1965 | 1995 | | |
1966 | | - | |
| 1996 | + | |
| 1997 | + | |
1967 | 1998 | | |
1968 | 1999 | | |
1969 | 2000 | | |
| |||
2004 | 2035 | | |
2005 | 2036 | | |
2006 | 2037 | | |
2007 | | - | |
| 2038 | + | |
| 2039 | + | |
2008 | 2040 | | |
2009 | 2041 | | |
2010 | 2042 | | |
| |||
2036 | 2068 | | |
2037 | 2069 | | |
2038 | 2070 | | |
2039 | | - | |
2040 | | - | |
| 2071 | + | |
| 2072 | + | |
| 2073 | + | |
| 2074 | + | |
| 2075 | + | |
| 2076 | + | |
| 2077 | + | |
| 2078 | + | |
| 2079 | + | |
| 2080 | + | |
| 2081 | + | |
| 2082 | + | |
| 2083 | + | |
| 2084 | + | |
2041 | 2085 | | |
2042 | 2086 | | |
2043 | 2087 | | |
| |||
2331 | 2375 | | |
2332 | 2376 | | |
2333 | 2377 | | |
2334 | | - | |
2335 | | - | |
2336 | | - | |
2337 | | - | |
2338 | | - | |
2339 | | - | |
2340 | | - | |
2341 | | - | |
2342 | | - | |
2343 | | - | |
| 2378 | + | |
2344 | 2379 | | |
2345 | 2380 | | |
2346 | 2381 | | |
| |||
2608 | 2643 | | |
2609 | 2644 | | |
2610 | 2645 | | |
| 2646 | + | |
2611 | 2647 | | |
2612 | 2648 | | |
2613 | 2649 | | |
| |||
2617 | 2653 | | |
2618 | 2654 | | |
2619 | 2655 | | |
2620 | | - | |
2621 | | - | |
2622 | | - | |
| 2656 | + | |
2623 | 2657 | | |
2624 | 2658 | | |
2625 | 2659 | | |
2626 | | - | |
2627 | | - | |
2628 | | - | |
2629 | | - | |
2630 | | - | |
2631 | | - | |
2632 | | - | |
2633 | | - | |
2634 | | - | |
2635 | | - | |
2636 | | - | |
| 2660 | + | |
| 2661 | + | |
| 2662 | + | |
| 2663 | + | |
| 2664 | + | |
2637 | 2665 | | |
2638 | | - | |
| 2666 | + | |
2639 | 2667 | | |
2640 | 2668 | | |
2641 | 2669 | | |
2642 | 2670 | | |
2643 | 2671 | | |
2644 | | - | |
| 2672 | + | |
2645 | 2673 | | |
2646 | 2674 | | |
2647 | 2675 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1841 | 1841 | | |
1842 | 1842 | | |
1843 | 1843 | | |
1844 | | - | |
| 1844 | + | |
1845 | 1845 | | |
1846 | | - | |
| 1846 | + | |
1847 | 1847 | | |
1848 | 1848 | | |
1849 | 1849 | | |
1850 | 1850 | | |
1851 | 1851 | | |
1852 | 1852 | | |
1853 | | - | |
| 1853 | + | |
1854 | 1854 | | |
1855 | 1855 | | |
1856 | 1856 | | |
1857 | 1857 | | |
1858 | 1858 | | |
1859 | | - | |
| 1859 | + | |
1860 | 1860 | | |
1861 | 1861 | | |
1862 | | - | |
| 1862 | + | |
1863 | 1863 | | |
1864 | 1864 | | |
1865 | | - | |
| 1865 | + | |
1866 | 1866 | | |
1867 | 1867 | | |
1868 | 1868 | | |
| |||
1972 | 1972 | | |
1973 | 1973 | | |
1974 | 1974 | | |
1975 | | - | |
| 1975 | + | |
1976 | 1976 | | |
1977 | 1977 | | |
1978 | 1978 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
188 | 188 | | |
189 | 189 | | |
190 | 190 | | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
191 | 218 | | |
192 | 219 | | |
193 | 220 | | |
| |||
0 commit comments