mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-20 00:20:11 +00:00
Boost the effective chain depth of loads and stores.
By default, boost the chain depth contribution of loads and stores. This will allow a load/store pair to vectorize even when it would not otherwise be long enough to satisfy the chain depth requirement. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149761 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -103,6 +103,11 @@ static cl::opt<bool>
|
||||
AlignedOnly("bb-vectorize-aligned-only", cl::init(false), cl::Hidden,
|
||||
cl::desc("Only generate aligned loads and stores"));
|
||||
|
||||
static cl::opt<bool>
|
||||
NoMemOpBoost("bb-vectorize-no-mem-op-boost",
|
||||
cl::init(false), cl::Hidden,
|
||||
cl::desc("Don't boost the chain-depth contribution of loads and stores"));
|
||||
|
||||
static cl::opt<bool>
|
||||
FastDep("bb-vectorize-fast-dep", cl::init(false), cl::Hidden,
|
||||
cl::desc("Use a fast instruction dependency analysis"));
|
||||
@@ -340,6 +345,11 @@ namespace {
|
||||
if (isa<InsertElementInst>(V) || isa<ExtractElementInst>(V))
|
||||
return 0;
|
||||
|
||||
// Give a load or store half of the required depth so that load/store
|
||||
// pairs will vectorize.
|
||||
if (!NoMemOpBoost && (isa<LoadInst>(V) || isa<StoreInst>(V)))
|
||||
return ReqChainDepth/2;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user