diff options
| author | Wei Mi <wmi@google.com> | 2015-05-06 17:12:25 +0000 |
|---|---|---|
| committer | Wei Mi <wmi@google.com> | 2015-05-06 17:12:25 +0000 |
| commit | 062c74484d4788728a50db025a237db03f0cabe6 (patch) | |
| tree | 5eeac222e8b5db4826578ae00f2f424ef71b1eea /llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp | |
| parent | 633dba4f412fd7cfe0e1b5d7bdc60338e81beaf3 (diff) | |
| download | bcm5719-llvm-062c74484d4788728a50db025a237db03f0cabe6.tar.gz bcm5719-llvm-062c74484d4788728a50db025a237db03f0cabe6.zip | |
[X86] Disable loop unrolling in loop vectorization pass when VF is 1.
The patch disabled unrolling in loop vectorization pass when VF==1 on x86 architecture,
by setting MaxInterleaveFactor to 1. Unrolling in loop vectorization pass may introduce
the cost of overflow check, memory boundary check and extra prologue/epilogue code when
regular unroller will unroll the loop another time. Disable it when VF==1 remove the
unnecessary cost on x86. The same can be done for other platforms after verifying
interleaving/memory bound checking to be not perf critical on those platforms.
Differential Revision: http://reviews.llvm.org/D9515
llvm-svn: 236613
Diffstat (limited to 'llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp')
| -rw-r--r-- | llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp b/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp index 0533355b01d..ed27cf84bbb 100644 --- a/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp +++ b/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp @@ -419,7 +419,7 @@ unsigned AArch64TTIImpl::getCostOfKeepingLiveOverCall(ArrayRef<Type *> Tys) { return Cost; } -unsigned AArch64TTIImpl::getMaxInterleaveFactor() { +unsigned AArch64TTIImpl::getMaxInterleaveFactor(unsigned VF) { if (ST->isCortexA57()) return 4; return 2; |

