[X86][SSE] Start shuffle combining from ANY_EXTEND_VECTOR_INREG on SSE targets
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Mon, 3 Aug 2020 11:18:21 +0000 (12:18 +0100)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Mon, 3 Aug 2020 12:41:48 +0000 (13:41 +0100)
commit99a971cadff7832a846394462c39a74aac64325d
treead86f1646c0080b8bcf56fc534c496e6309b3bc7
parentd8ef1d1251e3c0e11894ed82904dbab5e41c5711
[X86][SSE] Start shuffle combining from ANY_EXTEND_VECTOR_INREG on SSE targets

We already do this on AVX (+ for ZERO_EXTEND_VECTOR_INREG), but this enables it for all SSE targets - we attempted something similar back at rL357057 but hit issues with the ZERO_EXTEND_VECTOR_INREG handling (PR41249).

I'm still looking at the vector-mul.ll regression - which is due to 32-bit targets performing the load as a f64, resulting in the shuffle combiner thinking it has to create a shuffle in the float domain.
llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/test/CodeGen/X86/combine-pmuldq.ll
llvm/test/CodeGen/X86/mulvi32.ll
llvm/test/CodeGen/X86/pmul.ll
llvm/test/CodeGen/X86/promote-cmp.ll
llvm/test/CodeGen/X86/vector-idiv-udiv-128.ll
llvm/test/CodeGen/X86/vector-mul.ll
llvm/test/CodeGen/X86/vector-reduce-mul.ll
llvm/test/CodeGen/X86/vector-trunc-math.ll