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:
Hal Finkel
2012-02-04 04:14:04 +00:00
parent fd4b8e2bac
commit edc8db87dc
2 changed files with 32 additions and 0 deletions
+10
View File
@@ -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;
}