diff options
author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2018-12-12 18:32:29 +0000 |
---|---|---|
committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2018-12-12 18:32:29 +0000 |
commit | eb508f8ccb21caa7c9d0f6c2479d73ac79d6b25c (patch) | |
tree | 47d22a7fa4d66032d095b2aade44f59a883044e7 /llvm/lib/DebugInfo | |
parent | f802b9324a64fe5f3c823342b87c3690f2f0ba01 (diff) | |
download | bcm5719-llvm-eb508f8ccb21caa7c9d0f6c2479d73ac79d6b25c.tar.gz bcm5719-llvm-eb508f8ccb21caa7c9d0f6c2479d73ac79d6b25c.zip |
[SelectionDAG] Add a generic isSplatValue function
This patch introduces a generic function to determine whether a given vector type is known to be a splat value for the specified demanded elements, recursing up the DAG looking for BUILD_VECTOR or VECTOR_SHUFFLE splat patterns.
It also keeps track of the elements that are known to be UNDEF - it returns true if all the demanded elements are UNDEF (as this may be useful under some circumstances), so this needs to be handled by the caller.
A wrapper variant is also provided that doesn't take the DemandedElts or UndefElts arguments for cases where we just want to know if the SDValue is a splat or not (with/without UNDEFS).
I had hoped to completely remove the X86 local version of this function, but I'm seeing some regressions in shift/rotate codegen that will take a little longer to fix and I hope to get this in sooner so I can continue work on PR38243 which needs more capable splat detection.
Differential Revision: https://reviews.llvm.org/D55426
llvm-svn: 348953
Diffstat (limited to 'llvm/lib/DebugInfo')
0 files changed, 0 insertions, 0 deletions