[PATCH] D117235: [SelectionDAG][VP] Add splitting/widening for VP_LOAD and VP_STORE

Fraser Cormack via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Jan 14 07:16:18 PST 2022


frasercrmck added a comment.

In D117235#3242096 <https://reviews.llvm.org/D117235#3242096>, @craig.topper wrote:

> Is it worth testing a case that needs widening followed by splitting. Basically any non-power of 2 that rounds up to something that needs splitting. Bonus points if it needs enough splitting to trigger the `HiIsEmpty` is empty case.

It's definitely worth it in that it showed a few things we've yet to solve!

For starters, I couldn't test `ret <vscale x 33 x double>` which, since it uses all vector return registers, is lowered as a regular `store <vscale x 33 x double>` and we can't widen that. I did add scalable `STORE` widening via `VP_STORE` but that's only if the type is legal. Maybe we can loosen that restriction, I dunno (that kinda goes against what you're recommending later about legalization via widening, though).

Another issue I found was in lowering a `<33 x double>` `vp.store` function, where we run out of registers during register allocation. The argument lowering looks terrible but I haven't investigated what's going on.

Anyways, I did manage to add some testing, at least.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D117235/new/

https://reviews.llvm.org/D117235



More information about the llvm-commits mailing list