This is an archive of the discontinued LLVM Phabricator instance.

[WIP][DAGCombiner] createBuildVecShuffle(): more vector concatenation
AbandonedPublic

Authored by lebedev.ri on Jun 14 2021, 8:20 AM.

Details

Reviewers
RKSimon
mkuper
Summary

While i'm quite sure this is correct and optimal,
i'm having trouble coming up with a test case to demonstrate this.

llvm-stress provided a few snippets that showcase codegen differences
(https://godbolt.org/z/7G3T45cxq), but i can't quite turn them into something reasonable that i feel ok using as a codegen test :)

Diff Detail

Event Timeline

lebedev.ri created this revision.Jun 14 2021, 8:20 AM
lebedev.ri requested review of this revision.Jun 14 2021, 8:20 AM

@RKSimon there are two changes here:

  1. InVT2Size * 2 == VTSize && InVT1Size == VTSize -> (VTSize % InVT2Size == 0) && InVT1Size == VTSize
  2. merging two blocks together.

Could you please specify if you'd like to have them separately, or bundled is fine?
Theoretically, both are testable separately, but coming up with test[s] will be comutational-expensive,
so i'd like to know how to proceed.

lebedev.ri planned changes to this revision.Nov 3 2021, 12:32 AM

Wuld be good to have this, but this still needs test.

lebedev.ri abandoned this revision.Jan 17 2022, 2:36 PM