[X86][AVX] matchShuffleAsBlend - use isElementEquivalent to help match broadcast...
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Sun, 22 Aug 2021 14:26:17 +0000 (15:26 +0100)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Sun, 22 Aug 2021 14:26:17 +0000 (15:26 +0100)
commit352df10a238f7a2abbfa55a2acd5a43fcff80410
treec63a6285839c81592db5ac7cff0ed3421fac6fa8
parent96fb3eef660ffaf940c6e78d984cf2e985e76961
[X86][AVX] matchShuffleAsBlend - use isElementEquivalent to help match broadcast/repeated elements

Extend matchShuffleAsBlend to not only match against known in-place elements for BLEND shuffles, but use isElementEquivalent to determine if the shuffle mask's referenced element is the same as the in-place element.

This allows us to replace a number of insertps instructions with more general blendps instructions (better opportunities for commutation, concatenation etc.).
llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/test/CodeGen/X86/avx.ll
llvm/test/CodeGen/X86/horizontal-sum.ll
llvm/test/CodeGen/X86/sse41.ll