[X86] Use undefined instead of setzero in shufflevector based intrinsics when the second source is unused. Rewrite immediate extractions in shuffle intrinsics to be in ((c >> x) & y) form instead of ((c & z) >> x). This way only x varies between each use instead of having to vary x and z.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@274525 91177308-0d34-0410-b5e6-96231b3b80d8
11 files changed