[X86][AVX] Fold CONCAT(HOP(X,Y),HOP(Z,W)) -> HOP(CONCAT(X,Z),CONCAT(Y,W)) for float...
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Sun, 16 Aug 2020 13:52:07 +0000 (14:52 +0100)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Sun, 16 Aug 2020 14:00:41 +0000 (15:00 +0100)
commitf25d47b7ed3e2e9ddb121471c5d4af76642cd48c
tree45cedc6ac2e320e10af7f0101c4a8e208e02df15
parent29e1d16a3eeba98ef8fb2c250301c7e7eb2554f4
[X86][AVX] Fold CONCAT(HOP(X,Y),HOP(Z,W)) -> HOP(CONCAT(X,Z),CONCAT(Y,W)) for float types

We can now enable this for AVX1 targets can now assist with canonicalizeShuffleMaskWithHorizOp cleanup.

There's still a few missed opportunities for merging subvector insert/extracts into shuffles, but they shouldn't cause any regressions now.
llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/test/CodeGen/X86/haddsub-2.ll
llvm/test/CodeGen/X86/haddsub-shuf.ll
llvm/test/CodeGen/X86/haddsub-undef.ll