]> granicus.if.org Git - llvm/commit
[X86][SSE] Lower shuffle as ANY_EXTEND_VECTOR_INREG
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Sat, 10 Aug 2019 16:46:07 +0000 (16:46 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Sat, 10 Aug 2019 16:46:07 +0000 (16:46 +0000)
commita1a82731da3b7b02566a9a751f06c06a4930bdd9
tree1f8e6e16d66f8e913554aae2b828005184a62abf
parent5b155a1ed200c8e65c114d9332e07e2fff133b08
[X86][SSE] Lower shuffle as ANY_EXTEND_VECTOR_INREG

On SSE41+ targets we always lower vector shuffles to ZERO_EXTEND_VECTOR_INREG, even if we don't need the extended bits.

This patch relaxes this so that we lower to ANY_EXTEND_VECTOR_INREG if we can, meaning that shuffle combines have a better idea of what elements need to be kept zero. This helps the multiple reduction code as we can now combine away a lot more of the pack+extend codes.

Differential Revision: https://reviews.llvm.org/D65741

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@368515 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86ISelLowering.cpp
test/CodeGen/X86/vector-idiv-udiv-128.ll
test/CodeGen/X86/vector-reduce-mul.ll
test/CodeGen/X86/vector-shuffle-256-v8.ll