This is an archive of the discontinued LLVM Phabricator instance.

[AArch64][GlobalISel] Make vector G_SEXT_INREG legal and allow combining.
ClosedPublic

Authored by aemerson on Oct 4 2022, 7:17 AM.

Details

Reviewers
paquette
arsenm
Summary

As a result of making these legal, and tweaking the combine to allow vectors,
we generate vector G_SEXT_INREG during legalization.

The reason we want to make these legal in the first place is to allow for
more combine opportunities. Once those have been done, we can just lower them
back to shifts in the post-legalizer lowering.

This needs to be one commit otherwise we start causing tests to fail due to
incomplete support for selection etc.

Diff Detail

Event Timeline

aemerson created this revision.Oct 4 2022, 7:17 AM
Herald added a project: Restricted Project. · View Herald TranscriptOct 4 2022, 7:17 AM
aemerson requested review of this revision.Oct 4 2022, 7:17 AM
This revision is now accepted and ready to land.Oct 4 2022, 10:29 AM

I'd expect this to work just as well without making this synthetically legal

I'd expect this to work just as well without making this synthetically legal

The combine only creates a G_SEXT_INREG if it's legal for the target?

Also, for AArch64 we consider the lowering pass to be part of "selection", so it's not really synthetically legal for us.