aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/MachineSink.cpp
diff options
context:
space:
mode:
authorChandler Carruth <chandlerc@gmail.com>2014-09-25 11:03:55 +0000
committerChandler Carruth <chandlerc@gmail.com>2014-09-25 11:03:55 +0000
commit0a6e961efd7fe909fc136fdcd0602760cab09d58 (patch)
tree2404d2a5ba75c9840f290997451dc2d7e30db1b2 /llvm/lib/CodeGen/MachineSink.cpp
parent1623b463aee292962ea5c4338c65b459ddfab883 (diff)
downloadllvm-0a6e961efd7fe909fc136fdcd0602760cab09d58.zip
llvm-0a6e961efd7fe909fc136fdcd0602760cab09d58.tar.gz
llvm-0a6e961efd7fe909fc136fdcd0602760cab09d58.tar.bz2
[x86] Teach the new vector shuffle lowering to use AVX2 instructions for
v4f64 and v8f32 shuffles when they are lane-crossing. We have fully general lane-crossing permutation functions in AVX2 that make this easy. Part of this also changes exactly when and how these vectors are split up when we don't have AVX2. This isn't always a win but it usually is a win, so on the balance I think its better. The primary regressions are all things that just need to be fixed anyways such as modeling when a blend can be completely accomplished via VINSERTF128, etc. Also, this highlights one of the few remaining big features: we do a really poor job of inserting elements into AVX registers efficiently. This completes almost all of the big tricks I have in mind for AVX2. The only things left that I plan to add: 1) element insertion smarts 2) palignr and other fairly specialized lowerings when they happen to apply llvm-svn: 218449
Diffstat (limited to 'llvm/lib/CodeGen/MachineSink.cpp')
0 files changed, 0 insertions, 0 deletions