diff options
author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2022-06-07 16:42:15 +0100 |
---|---|---|
committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2022-06-07 16:42:24 +0100 |
commit | a083f3caa1356ceaec2c250850928c01008f5f58 (patch) | |
tree | edef5b53e085b15c881257e409627caeface2bb2 /llvm/lib/CodeGen/ModuloSchedule.cpp | |
parent | 7daa9a9b40a22c8ebac529f2fe7772191f2cea5a (diff) | |
download | llvm-a083f3caa1356ceaec2c250850928c01008f5f58.zip llvm-a083f3caa1356ceaec2c250850928c01008f5f58.tar.gz llvm-a083f3caa1356ceaec2c250850928c01008f5f58.tar.bz2 |
[DAG] combineShuffleOfSplatVal - fold shuffle(splat,undef) -> splat, iff the splat contains no UNDEF elements
As noticed on D127115 - we were missing this fold, instead just having the shuffle(shuffle(x,undef,splatmask),undef) fold. We should be able to merge these into one using SelectionDAG::isSplatValue, but we'll need to match the shuffle's undef handling first.
This also exposed an issue in SelectionDAG::isSplatValue which was incorrectly propagating the undef mask across a bitcast (it was trying to just bail with a APInt::isSubsetOf if it found any undefs but that was actually the wrong way around so didn't fire for partial undef cases).
Diffstat (limited to 'llvm/lib/CodeGen/ModuloSchedule.cpp')
0 files changed, 0 insertions, 0 deletions