This is an archive of the discontinued LLVM Phabricator instance.

[SVE] Lower fixed length vector integer shifts.
ClosedPublic

Authored by paulwalker-arm on Aug 11 2020, 5:47 AM.

Diff Detail

Event Timeline

paulwalker-arm created this revision.Aug 11 2020, 5:47 AM
paulwalker-arm requested review of this revision.Aug 11 2020, 5:47 AM

Minor change to EQ_256 check lines to ensure "ret" is last.

efriedma accepted this revision.Aug 12 2020, 3:56 PM

We probably want a couple tests where the shift amount is constant, to show we can generate the shift-by-immediate forms.

LGTM assuming those tests do the right thing.

This revision is now accepted and ready to land.Aug 12 2020, 3:56 PM

I can confirm the shift-by-immediate cases don't result in optimal code generation. This is because the current AArch64lsl_p patterns are linked to the unpredicated instructions which explicitly check for an all 1s predicate. I'll fix this up under a separate patch because it might affect the scalable side, which is probably where it's best tested given the fixed length lowering doesn't care about immediates. This is why I'm keen for the fixed-length and scalable lowering to target the same nodes so that fixed-length does not introduce any new isel requirements.

This revision was automatically updated to reflect the committed changes.