Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Hexagon] Further improve code generation for shuffles
* Concatenate partial shuffles into longer ones whenever possible: In selection DAG, shuffle's operands and return type must all agree. This is not the case in LLVM IR, and non-conforming IR-level shuffles will be rewritten to match DAG's requirements. This can also make a shuffle that can be matched to a single HVX instruction become shuffles that require more complex handling. Example: anything that takes two single vectors and returns a pair (e.g. V6_vshuffvdd). This is avoided by concatenating such shuffles into ones that take a vector pair, and an undef pair, and produce a vector pair. * Recognize perfect shuffles when masks contain `undef` values. * Use funnel shifts for contracting shuffles. * Recognize rotations as a separate step. These changes go into a single commit, because each one on their own introduced some regressions.
- Loading branch information
Krzysztof Parzyszek
committed
Nov 29, 2022
1 parent
d4cb392
commit 073d5e5
Showing
10 changed files
with
830 additions
and
556 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.