It's less clear with scalable vectors than fixed length vectors that
interleaving exposes more ILP, as scalable vectors can be thought of a
sort of hardware form of interleaving, especially with larger LMULs.
This also addresses the unexpected additional unrolling that occurs when
using larger LMULs in the loop vectorizer.
Details
Details
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo
Unit Tests
Unit Tests
Event Timeline
Comment Actions
LGTM
I'm not sure we should leave this on for fixed vectors either once we go to LMUL=2.
Comment Actions
I think I agree with this point. In a follow on patch, we should probably revisit this part of the heuristic as well.
A more general framing here is that interleave and LMUL both increase register pressure and tail effects, and that as we increase one we probably need to decrease the other by a roughly equal ratio.