[llvm] [WIP][RFC] Implementation for SVE2 long operations (PR #89310)

David Green via llvm-commits llvm-commits at lists.llvm.org
Sun Apr 21 12:42:13 PDT 2024


davemgreen wrote:

I have looked at top/bottom instructions in the context of MVE in the past, and ended up writing the MVELaneInterleavingPass. MVE has some features that make lane interleaving more important, where it doesn't have a standard sext/zext instruction (or doesn't have a concat, depending on how you look at it) and can fall back to storing+reloading from the stack to do an extend at times.

The MVELaneInterleavingPass operates at the IR level so that it can work across basic blocks, and only makes the transform if the whole code can profitably be transformed. That might be different to SVE if there enough instructions to make local transforms profitable on their own. I think in the long run it would be nice if the vectorizer could properly reason about them, so that it could do a better job costing them.

https://github.com/llvm/llvm-project/pull/89310


More information about the llvm-commits mailing list