[x86] Restore the bitcasts I removed when refactoring this to avoid
authorChandler Carruth <chandlerc@gmail.com>
Sat, 30 May 2015 04:05:11 +0000 (04:05 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Sat, 30 May 2015 04:05:11 +0000 (04:05 +0000)
commit2599da3cfd519ed59a574d446cd7b25bf543be74
tree7b023a8615792cbd45647e4e5eacd802c9c96278
parent6ba9730a4ef3515653d1813fb716988398ca2c5d
[x86] Restore the bitcasts I removed when refactoring this to avoid
shifting vectors of bytes as x86 doesn't have direct support for that.

This removes a bunch of redundant masking in the generated code for SSE2
and SSE3.

In order to avoid the really significant code size growth this would
have triggered, I also factored the completely repeatative logic for
shifting and masking into two lambdas which in turn makes all of this
much easier to read IMO.

llvm-svn: 238637
llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/test/CodeGen/X86/vector-popcnt-128.ll