We have a pass for MVE to perform lane interleaving to make use of top/bottom instructions, that adds shuffles before extends and after truncates. This extends it to also start from add reductions, where the order of lanes does not matter so the shuffle is not needed. We need to be careful about not breaking the form of existing reductions, but otherwise can save some instructions and awkward extends.
Details
Details
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
Comment Actions
Looks great, thank you.
llvm/lib/Target/ARM/MVELaneInterleavingPass.cpp | ||
---|---|---|
294–302 | nit: add reductions to the assertion message. | |
396 | It might be good to add a comment or change the function name to explain that it's checking if the instruction is a reduction for which the lane ordering doesn't matter, just to make the purpose more clear. |
nit: add reductions to the assertion message.