[llvm] [WIP][X86] lowerBuildVectorAsBroadcast - don't convert constant vectors to broadcasts on AVX512VL targets (PR #73509)
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Fri Dec 8 03:45:50 PST 2023
RKSimon wrote:
> Can't memory ops microfuse on all targets? Why is this avx512vl only?
I don't understand what you're asking - we already load-fold for all targets. This patch is about improving broadcast-load-fold. By prematurely converting to constant broadcasts in DAG we're hindering later optimizations - MachineLICM is a good example (we end up hoisting the broadcast which then often spills the full width broadcasted vector......). By keeping to full vector width until X86FixupVectorConstants we avoid a lot of this.
I will eventually be disabling constant broadcasting in lowerBuildVectorAsBroadcast for all AVX targets later but theres a lot of regressions to still deal with - AVX512VL (and AVX512F for 512-bit vectors) is the first step.
https://github.com/llvm/llvm-project/pull/73509
More information about the llvm-commits
mailing list