[all-commits] [llvm/llvm-project] 46aa3c: [DAG] visitVECTOR_SHUFFLE - MergeInnerShuffle - im...
Simon Pilgrim via All-commits
all-commits at lists.llvm.org
Fri Jan 15 07:09:03 PST 2021
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 46aa3c6c331c20b8a4c358488fefab96f944e814
https://github.com/llvm/llvm-project/commit/46aa3c6c331c20b8a4c358488fefab96f944e814
Author: Simon Pilgrim <llvm-dev at redking.me.uk>
Date: 2021-01-15 (Fri, 15 Jan 2021)
Changed paths:
M llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
M llvm/test/CodeGen/Thumb2/mve-vmull-loop.ll
M llvm/test/CodeGen/Thumb2/mve-vst2.ll
Log Message:
-----------
[DAG] visitVECTOR_SHUFFLE - MergeInnerShuffle - improve shuffle(shuffle(x,y),shuffle(x,y)) merging
MergeInnerShuffle currently attempts to merge shuffle(shuffle(x,y),z) patterns into a single shuffle, using 1 or 2 of the x,y,z ops.
However if we already match 2 ops we might be able to handle the third op if its also a shuffle that references one of the previous ops, allowing us to handle some cases like:
shuffle(shuffle(x,y),shuffle(x,y))
shuffle(shuffle(shuffle(x,z),y),z)
shuffle(shuffle(x,shuffle(x,y)),z)
etc.
This isn't an exhaustive match and is dependent on the order the candidate ops are encountered - if one of the matched ops was a shuffle that was peek-able we don't go back and try to split that, I haven't found much need for that amount of analysis yet.
This is a preliminary patch that will allow us to later improve x86 HADD/HSUB matching - but needs to be reviewed separately as its in generic code and affects existing Thumb2 tests.
Differential Revision: https://reviews.llvm.org/D94671
More information about the All-commits
mailing list