[all-commits] [llvm/llvm-project] 77a0da: [LV] Remove `LoopVectorizationCostModel::useEmulat...
Roman Lebedev via All-commits
all-commits at lists.llvm.org
Mon Feb 7 05:09:23 PST 2022
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 77a0da926c9ea86afa9baf28158d79c7678fc6b9
https://github.com/llvm/llvm-project/commit/77a0da926c9ea86afa9baf28158d79c7678fc6b9
Author: Roman Lebedev <lebedev.ri at gmail.com>
Date: 2022-02-07 (Mon, 07 Feb 2022)
Changed paths:
M llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
M llvm/test/Analysis/CostModel/X86/masked-gather-i32-with-i8-index.ll
M llvm/test/Analysis/CostModel/X86/masked-gather-i64-with-i8-index.ll
M llvm/test/Analysis/CostModel/X86/masked-interleaved-load-i16.ll
M llvm/test/Analysis/CostModel/X86/masked-interleaved-store-i16.ll
M llvm/test/Analysis/CostModel/X86/masked-load-i16.ll
M llvm/test/Analysis/CostModel/X86/masked-load-i32.ll
M llvm/test/Analysis/CostModel/X86/masked-load-i64.ll
M llvm/test/Analysis/CostModel/X86/masked-load-i8.ll
M llvm/test/Transforms/LoopVectorize/AArch64/tail-fold-uniform-memops.ll
M llvm/test/Transforms/LoopVectorize/X86/gather_scatter.ll
M llvm/test/Transforms/LoopVectorize/X86/x86-interleaved-accesses-masked-group.ll
M llvm/test/Transforms/LoopVectorize/if-pred-stores.ll
M llvm/test/Transforms/LoopVectorize/memdep-fold-tail.ll
M llvm/test/Transforms/LoopVectorize/optsize.ll
M llvm/test/Transforms/LoopVectorize/tripcount.ll
M llvm/test/Transforms/LoopVectorize/vplan-sink-scalars-and-merge.ll
Log Message:
-----------
[LV] Remove `LoopVectorizationCostModel::useEmulatedMaskMemRefHack()`
D43208 extracted `useEmulatedMaskMemRefHack()` from legality into cost model.
What it essentially does is prevents scalarized vectorization of masked memory operations:
```
// TODO: Cost model for emulated masked load/store is completely
// broken. This hack guides the cost model to use an artificially
// high enough value to practically disable vectorization with such
// operations, except where previously deployed legality hack allowed
// using very low cost values. This is to avoid regressions coming simply
// from moving "masked load/store" check from legality to cost model.
// Masked Load/Gather emulation was previously never allowed.
// Limited number of Masked Store/Scatter emulation was allowed.
```
While i don't really understand about what specifically `is completely broken`
was talking about, i believe that at least on X86 with AVX2-or-later,
this is no longer true. (or at least, i would like to know what is still broken).
So i would like to follow suit after D111460, and like wise disable that hack for AVX2+.
But since this was added for X86 specifically, let's just instead completely remove this hack.
Reviewed By: RKSimon
Differential Revision: https://reviews.llvm.org/D114779
More information about the All-commits
mailing list