Commit c7308d4
authored
[LSR][AArch64] Optimize chain generation based on legal addressing modes (llvm#94453)
LSR will generate chains of related instructions with a known increment
between them. With SVE, in the case of the test case, this can include
increments like 'vscale * 16 + 8'. The idea of this patch is if we have
a '+8' increment already calculated in the chain, we can generate a
(legal) '+ vscale*16' addressing mode from it, allowing us to use the
'[x16, #1, mul vl]' addressing mode instructions.
In order to do this we keep track of the known 'bases' when generating
chains in GenerateIVChain, checking for each if the accumulated
increment expression from the base neatly folds into a legal addressing
mode. If they do not we fall back to the existing LeftOverExpr, whether
it is legal or not.
This is mostly orthogonal to llvm#88124, dealing with the generation of
chains as opposed to rest of LSR. The existing vscale addressing mode
work has greatly helped compared to the last time I looked at this,
allowing us to check that the addressing modes are indeed legal.1 parent a9e5f42 commit c7308d4
File tree
2 files changed
+98
-60
lines changed- llvm
- lib/Transforms/Scalar
- test/CodeGen/AArch64
2 files changed
+98
-60
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1256 | 1256 | | |
1257 | 1257 | | |
1258 | 1258 | | |
1259 | | - | |
| 1259 | + | |
| 1260 | + | |
1260 | 1261 | | |
1261 | 1262 | | |
1262 | 1263 | | |
| |||
1675 | 1676 | | |
1676 | 1677 | | |
1677 | 1678 | | |
1678 | | - | |
| 1679 | + | |
| 1680 | + | |
1679 | 1681 | | |
1680 | 1682 | | |
1681 | 1683 | | |
1682 | | - | |
| 1684 | + | |
| 1685 | + | |
1683 | 1686 | | |
1684 | 1687 | | |
1685 | 1688 | | |
1686 | 1689 | | |
1687 | | - | |
| 1690 | + | |
1688 | 1691 | | |
1689 | 1692 | | |
1690 | 1693 | | |
| |||
1715 | 1718 | | |
1716 | 1719 | | |
1717 | 1720 | | |
1718 | | - | |
| 1721 | + | |
1719 | 1722 | | |
1720 | 1723 | | |
1721 | 1724 | | |
1722 | | - | |
| 1725 | + | |
| 1726 | + | |
1723 | 1727 | | |
1724 | 1728 | | |
1725 | 1729 | | |
| |||
1843 | 1847 | | |
1844 | 1848 | | |
1845 | 1849 | | |
1846 | | - | |
| 1850 | + | |
1847 | 1851 | | |
1848 | 1852 | | |
1849 | 1853 | | |
| |||
1859 | 1863 | | |
1860 | 1864 | | |
1861 | 1865 | | |
1862 | | - | |
| 1866 | + | |
1863 | 1867 | | |
1864 | 1868 | | |
1865 | 1869 | | |
| |||
3165 | 3169 | | |
3166 | 3170 | | |
3167 | 3171 | | |
3168 | | - | |
3169 | | - | |
| 3172 | + | |
| 3173 | + | |
| 3174 | + | |
| 3175 | + | |
| 3176 | + | |
| 3177 | + | |
| 3178 | + | |
| 3179 | + | |
| 3180 | + | |
| 3181 | + | |
| 3182 | + | |
| 3183 | + | |
| 3184 | + | |
| 3185 | + | |
| 3186 | + | |
| 3187 | + | |
| 3188 | + | |
3170 | 3189 | | |
3171 | | - | |
| 3190 | + | |
3172 | 3191 | | |
3173 | 3192 | | |
3174 | 3193 | | |
3175 | | - | |
3176 | 3194 | | |
3177 | | - | |
| 3195 | + | |
3178 | 3196 | | |
3179 | 3197 | | |
3180 | 3198 | | |
| |||
3220 | 3238 | | |
3221 | 3239 | | |
3222 | 3240 | | |
| 3241 | + | |
| 3242 | + | |
| 3243 | + | |
| 3244 | + | |
3223 | 3245 | | |
3224 | 3246 | | |
3225 | 3247 | | |
| |||
3232 | 3254 | | |
3233 | 3255 | | |
3234 | 3256 | | |
| 3257 | + | |
3235 | 3258 | | |
3236 | 3259 | | |
3237 | 3260 | | |
3238 | | - | |
| 3261 | + | |
| 3262 | + | |
| 3263 | + | |
| 3264 | + | |
| 3265 | + | |
| 3266 | + | |
| 3267 | + | |
| 3268 | + | |
| 3269 | + | |
| 3270 | + | |
| 3271 | + | |
| 3272 | + | |
| 3273 | + | |
| 3274 | + | |
| 3275 | + | |
| 3276 | + | |
| 3277 | + | |
| 3278 | + | |
| 3279 | + | |
| 3280 | + | |
| 3281 | + | |
3239 | 3282 | | |
3240 | 3283 | | |
3241 | 3284 | | |
| |||
3246 | 3289 | | |
3247 | 3290 | | |
3248 | 3291 | | |
| 3292 | + | |
3249 | 3293 | | |
3250 | 3294 | | |
3251 | 3295 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
17 | | - | |
18 | | - | |
19 | 17 | | |
| 18 | + | |
20 | 19 | | |
21 | 20 | | |
22 | | - | |
23 | | - | |
24 | | - | |
| 21 | + | |
| 22 | + | |
25 | 23 | | |
26 | 24 | | |
27 | 25 | | |
28 | | - | |
29 | | - | |
30 | | - | |
31 | | - | |
32 | | - | |
33 | | - | |
34 | | - | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
35 | 33 | | |
36 | 34 | | |
37 | 35 | | |
| |||
43 | 41 | | |
44 | 42 | | |
45 | 43 | | |
46 | | - | |
47 | | - | |
48 | | - | |
49 | | - | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
50 | 50 | | |
51 | | - | |
| 51 | + | |
52 | 52 | | |
53 | | - | |
| 53 | + | |
54 | 54 | | |
55 | | - | |
56 | | - | |
| 55 | + | |
57 | 56 | | |
58 | | - | |
59 | | - | |
60 | | - | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
61 | 60 | | |
62 | | - | |
63 | | - | |
| 61 | + | |
64 | 62 | | |
65 | | - | |
| 63 | + | |
66 | 64 | | |
67 | | - | |
68 | | - | |
| 65 | + | |
69 | 66 | | |
70 | | - | |
71 | | - | |
72 | | - | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
73 | 70 | | |
74 | | - | |
75 | | - | |
| 71 | + | |
76 | 72 | | |
77 | | - | |
| 73 | + | |
78 | 74 | | |
79 | | - | |
80 | | - | |
| 75 | + | |
81 | 76 | | |
82 | | - | |
83 | | - | |
84 | | - | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
85 | 80 | | |
86 | | - | |
87 | | - | |
| 81 | + | |
88 | 82 | | |
89 | | - | |
| 83 | + | |
90 | 84 | | |
91 | | - | |
| 85 | + | |
92 | 86 | | |
93 | | - | |
94 | | - | |
95 | | - | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
96 | 90 | | |
97 | 91 | | |
98 | 92 | | |
| |||
0 commit comments