]> granicus.if.org Git - llvm/commit
[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)
commit2484336221c99232362a4efb9fd9fe709678f286
treec332d9c709d3cb7caca9110fe518086891f201f4
parentff59b5d0fd6acadfe1e09c0331e3ed6fb76429fc
[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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@370620 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86InstrFoldTables.cpp
lib/Target/X86/X86InstrFoldTables.h
lib/Target/X86/X86InstrInfo.cpp
test/CodeGen/X86/avx512-broadcast-unfold.ll