This is an archive of the discontinued LLVM Phabricator instance.

[LSV] Improve chain splitting in some corner cases.
ClosedPublic

Authored by tra on Apr 10 2023, 4:00 PM.

Details

Summary

Currently we happen to split a chain of 12xi8 accesses into 6xi8 + 6xi8, which
produces rather suboptimal code.

This change attempts to split-off non-multiples of 4bytes at the end and if that
does not work, splits on the smaller power-of-2 boundary.

Diff Detail

Event Timeline

tra created this revision.Apr 10 2023, 4:00 PM
Herald added a project: Restricted Project. · View Herald TranscriptApr 10 2023, 4:00 PM
tra published this revision for review.Apr 10 2023, 4:02 PM
tra added reviewers: arsenm, jlebar.
tra updated this revision to Diff 512510.Apr 11 2023, 10:33 AM

Minor cleanups.

jlebar accepted this revision.Apr 11 2023, 10:56 AM

Thanks, Art.

llvm/lib/Transforms/Vectorize/LoadStoreVectorizer.cpp
672

nit: add {}?

This revision is now accepted and ready to land.Apr 11 2023, 10:56 AM
tra updated this revision to Diff 512534.Apr 11 2023, 11:43 AM

rearrange comment.

tra updated this revision to Diff 512536.Apr 11 2023, 11:49 AM

Fixed alignment info in a test.

tra updated this revision to Diff 512546.Apr 11 2023, 12:14 PM

Added fully aligned int8x8a8 test.

This revision was automatically updated to reflect the committed changes.