[X86] Disable loop unrolling in loop vectorization pass when VF is 1.
authorWei Mi <wmi@google.com>
Wed, 6 May 2015 17:12:25 +0000 (17:12 +0000)
committerWei Mi <wmi@google.com>
Wed, 6 May 2015 17:12:25 +0000 (17:12 +0000)
commit062c74484d4788728a50db025a237db03f0cabe6
tree5eeac222e8b5db4826578ae00f2f424ef71b1eea
parent633dba4f412fd7cfe0e1b5d7bdc60338e81beaf3
[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
16 files changed:
llvm/include/llvm/Analysis/TargetTransformInfo.h
llvm/include/llvm/Analysis/TargetTransformInfoImpl.h
llvm/include/llvm/CodeGen/BasicTTIImpl.h
llvm/lib/Analysis/TargetTransformInfo.cpp
llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
llvm/lib/Target/AArch64/AArch64TargetTransformInfo.h
llvm/lib/Target/ARM/ARMTargetTransformInfo.h
llvm/lib/Target/PowerPC/PPCTargetTransformInfo.cpp
llvm/lib/Target/PowerPC/PPCTargetTransformInfo.h
llvm/lib/Target/R600/AMDGPUTargetTransformInfo.cpp
llvm/lib/Target/R600/AMDGPUTargetTransformInfo.h
llvm/lib/Target/X86/X86TargetTransformInfo.cpp
llvm/lib/Target/X86/X86TargetTransformInfo.h
llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
llvm/test/Transforms/LoopVectorize/X86/unroll-small-loops.ll
llvm/test/Transforms/LoopVectorize/unroll.ll [new file with mode: 0644]