Commit 7149518
committed
[RISCV] Use vsetvli instead of vlenb in Prologue/Epilogue
Currently, we use `csrr` with `vlenb` to obtain the `VLEN`, but this is not the
only option. We can also use `vsetvli` with `e8`/`m1` to get `VLENMAX`, which
is equal to the VLEN. This method is preferable on some microarchitectures and
makes it easier to obtain values like `VLEN * 2`, `VLEN * 4`, or `VLEN * 8`,
reducing the number of instructions needed to calculate VLEN multiples.
However, this approach is *NOT* always interchangeable, as it changes the state
of `VTYPE` and `VL`, which can alter the behavior of vector instructions,
potentially causing incorrect code generation if applied after a vsetvli
insertion. Therefore, we limit its use to the prologue/epilogue for now, as
there are no vector operations within the prologue/epilogue sequence.
With further analysis, we may extend this approach beyond the prologue/epilogue
in the future, but starting here should be a good first step.
This feature is gurded by the `+prefer-vsetvli-over-read-vlenb` feature,
which is disabled by default for now.1 parent 369c0a7 commit 7149518
File tree
13 files changed
+2082
-27
lines changed- llvm
- lib/Target/RISCV
- test/CodeGen/RISCV/rvv
13 files changed
+2082
-27
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
56 | 56 | | |
57 | 57 | | |
58 | 58 | | |
| 59 | + | |
| 60 | + | |
59 | 61 | | |
60 | 62 | | |
61 | 63 | | |
| |||
164 | 166 | | |
165 | 167 | | |
166 | 168 | | |
| 169 | + | |
| 170 | + | |
167 | 171 | | |
168 | 172 | | |
169 | 173 | | |
| |||
415 | 419 | | |
416 | 420 | | |
417 | 421 | | |
| 422 | + | |
| 423 | + | |
| 424 | + | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
| 447 | + | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
418 | 455 | | |
419 | 456 | | |
420 | 457 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1534 | 1534 | | |
1535 | 1535 | | |
1536 | 1536 | | |
| 1537 | + | |
| 1538 | + | |
| 1539 | + | |
| 1540 | + | |
| 1541 | + | |
| 1542 | + | |
1537 | 1543 | | |
1538 | 1544 | | |
1539 | 1545 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
669 | 669 | | |
670 | 670 | | |
671 | 671 | | |
672 | | - | |
| 672 | + | |
| 673 | + | |
673 | 674 | | |
674 | 675 | | |
675 | 676 | | |
| |||
698 | 699 | | |
699 | 700 | | |
700 | 701 | | |
701 | | - | |
| 702 | + | |
702 | 703 | | |
703 | 704 | | |
704 | 705 | | |
| |||
721 | 722 | | |
722 | 723 | | |
723 | 724 | | |
724 | | - | |
| 725 | + | |
725 | 726 | | |
726 | 727 | | |
727 | 728 | | |
| |||
752 | 753 | | |
753 | 754 | | |
754 | 755 | | |
755 | | - | |
| 756 | + | |
756 | 757 | | |
757 | 758 | | |
758 | 759 | | |
| |||
781 | 782 | | |
782 | 783 | | |
783 | 784 | | |
784 | | - | |
| 785 | + | |
| 786 | + | |
785 | 787 | | |
786 | 788 | | |
787 | 789 | | |
| |||
1014 | 1016 | | |
1015 | 1017 | | |
1016 | 1018 | | |
1017 | | - | |
| 1019 | + | |
| 1020 | + | |
1018 | 1021 | | |
1019 | 1022 | | |
1020 | 1023 | | |
| |||
1047 | 1050 | | |
1048 | 1051 | | |
1049 | 1052 | | |
1050 | | - | |
| 1053 | + | |
| 1054 | + | |
1051 | 1055 | | |
1052 | 1056 | | |
1053 | 1057 | | |
| |||
1125 | 1129 | | |
1126 | 1130 | | |
1127 | 1131 | | |
1128 | | - | |
| 1132 | + | |
| 1133 | + | |
1129 | 1134 | | |
1130 | 1135 | | |
1131 | 1136 | | |
| |||
1189 | 1194 | | |
1190 | 1195 | | |
1191 | 1196 | | |
1192 | | - | |
| 1197 | + | |
| 1198 | + | |
1193 | 1199 | | |
1194 | 1200 | | |
1195 | 1201 | | |
| |||
1214 | 1220 | | |
1215 | 1221 | | |
1216 | 1222 | | |
1217 | | - | |
| 1223 | + | |
| 1224 | + | |
1218 | 1225 | | |
1219 | 1226 | | |
1220 | 1227 | | |
| |||
1240 | 1247 | | |
1241 | 1248 | | |
1242 | 1249 | | |
1243 | | - | |
| 1250 | + | |
1244 | 1251 | | |
1245 | 1252 | | |
1246 | 1253 | | |
| |||
1771 | 1778 | | |
1772 | 1779 | | |
1773 | 1780 | | |
1774 | | - | |
| 1781 | + | |
| 1782 | + | |
1775 | 1783 | | |
1776 | 1784 | | |
1777 | 1785 | | |
| |||
2195 | 2203 | | |
2196 | 2204 | | |
2197 | 2205 | | |
| 2206 | + | |
| 2207 | + | |
| 2208 | + | |
| 2209 | + | |
| 2210 | + | |
| 2211 | + | |
| 2212 | + | |
| 2213 | + | |
| 2214 | + | |
| 2215 | + | |
| 2216 | + | |
2198 | 2217 | | |
2199 | 2218 | | |
2200 | 2219 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6049 | 6049 | | |
6050 | 6050 | | |
6051 | 6051 | | |
| 6052 | + | |
| 6053 | + | |
| 6054 | + | |
| 6055 | + | |
| 6056 | + | |
6052 | 6057 | | |
6053 | 6058 | | |
6054 | 6059 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
179 | 179 | | |
180 | 180 | | |
181 | 181 | | |
182 | | - | |
| 182 | + | |
| 183 | + | |
183 | 184 | | |
184 | 185 | | |
185 | 186 | | |
| |||
226 | 227 | | |
227 | 228 | | |
228 | 229 | | |
229 | | - | |
230 | | - | |
231 | | - | |
232 | | - | |
233 | | - | |
234 | | - | |
235 | | - | |
236 | | - | |
237 | | - | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
238 | 238 | | |
239 | | - | |
240 | | - | |
241 | 239 | | |
242 | | - | |
| 240 | + | |
| 241 | + | |
243 | 242 | | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
244 | 268 | | |
245 | 269 | | |
246 | 270 | | |
| |||
533 | 557 | | |
534 | 558 | | |
535 | 559 | | |
536 | | - | |
| 560 | + | |
| 561 | + | |
537 | 562 | | |
538 | 563 | | |
539 | 564 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
75 | 75 | | |
76 | 76 | | |
77 | 77 | | |
| 78 | + | |
| 79 | + | |
78 | 80 | | |
79 | 81 | | |
80 | 82 | | |
81 | | - | |
| 83 | + | |
82 | 84 | | |
83 | 85 | | |
84 | 86 | | |
| |||
0 commit comments