X86: Custom lower zext v16i8 to v16i16.
authorBenjamin Kramer <benny.kra@googlemail.com>
Wed, 23 Oct 2013 19:19:04 +0000 (19:19 +0000)
committerBenjamin Kramer <benny.kra@googlemail.com>
Wed, 23 Oct 2013 19:19:04 +0000 (19:19 +0000)
commit7377cff9e7641c75678fd5c80472942fd7ef869a
tree8ff95078dc08a96effbc21e3cb59dc2630005b96
parent531f025361555e7a695eb559ec02645c054ee146
X86: Custom lower zext v16i8 to v16i16.

On sandy bridge (PR17654) we now get
vpxor %xmm1, %xmm1, %xmm1
vpunpckhbw %xmm1, %xmm0, %xmm2
vpunpcklbw %xmm1, %xmm0, %xmm0
vinsertf128 $1, %xmm2, %ymm0, %ymm0

On haswell it's a simple
vpmovzxbw %xmm0, %ymm0

There is a maze of duplicated and dead transforms and patterns in this
area. Remove the dead custom lowering of zext v8i16 to v8i32, that's
already handled by LowerAVXExtend.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193262 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86ISelLowering.cpp
lib/Target/X86/X86InstrSSE.td
test/CodeGen/X86/avx-zext.ll
test/CodeGen/X86/avx2-conversions.ll