aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Support/MathExtras.cpp
diff options
context:
space:
mode:
authorChandler Carruth <chandlerc@gmail.com>2014-09-27 04:42:44 +0000
committerChandler Carruth <chandlerc@gmail.com>2014-09-27 04:42:44 +0000
commit4d03be17179c8a1a83716514f32b70b79a10e054 (patch)
treef75b68778957e4a1ceaf22cb4f102d64c7c245d9 /llvm/lib/Support/MathExtras.cpp
parent81e6b29f03af3b7b33a6fb01500488c3a8ced811 (diff)
downloadllvm-4d03be17179c8a1a83716514f32b70b79a10e054.zip
llvm-4d03be17179c8a1a83716514f32b70b79a10e054.tar.gz
llvm-4d03be17179c8a1a83716514f32b70b79a10e054.tar.bz2
[x86] Fix terrible bugs everywhere in the new vector shuffle lowering
and in the target shuffle combining when trying to widen vector elements. Previously only one of these was correct, and we didn't correctly propagate zeroing target shuffle masks (which have a different sentinel value from undef in non- target shuffle masks now). This isn't just a missed optimization, this caused us to drop zeroing shuffles on the floor and miscompile code. The added test case is one example of that. There are other fixes to the test suite as a consequence of this as well as restoring the undef elements in some of the masks that were lost when I brought sanity to the actual *value* of the undef and zero sentinels. I've also just cleaned up some of the PSHUFD and PSHUFLW and PSHUFHW combining code, but that code really needs to go. It was a nice initial attempt, but it isn't very principled and the recursive shuffle combiner is much more powerful. llvm-svn: 218562
Diffstat (limited to 'llvm/lib/Support/MathExtras.cpp')
0 files changed, 0 insertions, 0 deletions