OSDN Git Service

[X86][SSE] Keep 4i32 vector insertions in integer domain on SSE4.1 targets
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Tue, 2 Dec 2014 22:31:23 +0000 (22:31 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Tue, 2 Dec 2014 22:31:23 +0000 (22:31 +0000)
commitec49b722fd17d2113151af88df21aa4f7e698b28
tree1f5e953419a3e59b1445cf892b788e213216cfdd
parentdcedd15f58e7b76c2ee61c8030799c209104229b
[X86][SSE] Keep 4i32 vector insertions in integer domain on SSE4.1 targets

4i32 shuffles for single insertions into zero vectors lowers to X86vzmovl which was using (v)blendps - causing domain switch stalls. This patch fixes this by using (v)pblendw instead.

The updated tests on test/CodeGen/X86/sse41.ll still contain a domain stall due to the use of insertps - I'm looking at fixing this in a future patch.

Differential Revision: http://reviews.llvm.org/D6458

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@223165 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86InstrSSE.td
test/CodeGen/X86/combine-and.ll
test/CodeGen/X86/combine-or.ll
test/CodeGen/X86/sse41.ll
test/CodeGen/X86/vector-shuffle-128-v4.ll