[X86] Add initial support for unfolding broadcast loads from arithmetic instructions...
authorCraig Topper <craig.topper@intel.com>
Sun, 1 Sep 2019 22:14:36 +0000 (22:14 +0000)
committerCraig Topper <craig.topper@intel.com>
Sun, 1 Sep 2019 22:14:36 +0000 (22:14 +0000)
commit3ab210862a030196799918b2ea53d176bc714b7f
treeb0b62181b762a8c703dedd2bdee7eabdf21b1666
parent434b81d0a26a69df5b6862d09c0feca8f99ae391
[X86] Add initial support for unfolding broadcast loads from arithmetic instructions to enable LICM hoisting of the load

MachineLICM can hoist an invariant load, but if that load is folded it needs to be unfolded. On AVX512 sometimes this load is an broadcast load which we were previously unable to unfold. This patch adds initial support for that with a very basic list of supported instructions as a starting point.

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

llvm-svn: 370620
llvm/lib/Target/X86/X86InstrFoldTables.cpp
llvm/lib/Target/X86/X86InstrFoldTables.h
llvm/lib/Target/X86/X86InstrInfo.cpp
llvm/test/CodeGen/X86/avx512-broadcast-unfold.ll