aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp
diff options
context:
space:
mode:
authorSimon Pilgrim <llvm-dev@redking.me.uk>2016-01-21 22:07:41 +0000
committerSimon Pilgrim <llvm-dev@redking.me.uk>2016-01-21 22:07:41 +0000
commit5ba1c127fcbd6f42dd2f85423763c348eedfdf8e (patch)
tree57ff6cf318030a2ebcad86e4acc5e6e6d88b42ab /llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp
parentca0516014cf425e24599d4dabaf7b9a75966251c (diff)
downloadllvm-5ba1c127fcbd6f42dd2f85423763c348eedfdf8e.zip
llvm-5ba1c127fcbd6f42dd2f85423763c348eedfdf8e.tar.gz
llvm-5ba1c127fcbd6f42dd2f85423763c348eedfdf8e.tar.bz2
[X86][SSE] Improve i16 splatting shuffles
Better handling of the annoying pshuflw/pshufhw ops which only shuffle lower/upper halves of a vector. Added vXi16 unary shuffle support for cases where i16 elements (from the same half of the source) are being splatted to the whole of one of the halves. This avoids the general lowering case which must shuffle the 32-bit elements first - meaning that we used to end up with unnecessary duplicate pshuflw/pshufhw shuffles. Note this has the side effect of a lot of SSSE3 test cases no longer needing to use PSHUFB, as it falls below the 3 op combine threshold for when PSHUFB is typically worth it. I've raised PR26183 to discuss if the threshold should be changed and whether we need to make it more specific to the target CPU. Differential Revision: http://reviews.llvm.org/D14901 llvm-svn: 258440
Diffstat (limited to 'llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp')
0 files changed, 0 insertions, 0 deletions