aboutsummaryrefslogtreecommitdiff
path: root/llvm/tools/llvm-diff/lib
diff options
context:
space:
mode:
authorSimon Pilgrim <llvm-dev@redking.me.uk>2021-08-05 15:04:06 +0100
committerSimon Pilgrim <llvm-dev@redking.me.uk>2021-08-05 15:40:48 +0100
commit2cbf9fd402afe8c33272bf60997cfb7e1f7c5f69 (patch)
treefb3b6da45f69b6095c14eef209e2eb433e045594 /llvm/tools/llvm-diff/lib
parent38b098be6605494cc7308ea9b08f920c4c3fe4ce (diff)
downloadllvm-2cbf9fd402afe8c33272bf60997cfb7e1f7c5f69.zip
llvm-2cbf9fd402afe8c33272bf60997cfb7e1f7c5f69.tar.gz
llvm-2cbf9fd402afe8c33272bf60997cfb7e1f7c5f69.tar.bz2
[DAG] DAGCombiner::visitVECTOR_SHUFFLE - recognise INSERT_SUBVECTOR patterns
IR typically creates INSERT_SUBVECTOR patterns as a widening of the subvector with undefs to pad to the destination size, followed by a shuffle for the actual insertion - SelectionDAGBuilder has to do something similar for shuffles when source/destination vectors are different sizes. This combine attempts to recognize these patterns by looking for a shuffle of a subvector (from a CONCAT_VECTORS) that starts at a modulo of its size into an otherwise identity shuffle of the base vector. This uncovered a couple of target-specific issues as we haven't often created INSERT_SUBVECTOR nodes in generic code - aarch64 could only handle insertions into the bottom of undefs (i.e. a vector widening), and x86-avx512 vXi1 insertion wasn't keeping track of undef elements in the base vector. Fixes PR50053 Differential Revision: https://reviews.llvm.org/D107068
Diffstat (limited to 'llvm/tools/llvm-diff/lib')
0 files changed, 0 insertions, 0 deletions