diff options
author | David Green <david.green@arm.com> | 2020-03-03 09:26:00 +0000 |
---|---|---|
committer | David Green <david.green@arm.com> | 2020-03-03 10:54:00 +0000 |
commit | ec7e4a9a80155887b6f3c9f15f28253fa6c58859 (patch) | |
tree | 12118e59c1ec52db43fcfccebb33fde836246afb /llvm/lib/Transforms/Utils/LoopUtils.cpp | |
parent | 6304368818a1e9883b694b9d8c21ef568176168d (diff) | |
download | llvm-ec7e4a9a80155887b6f3c9f15f28253fa6c58859.zip llvm-ec7e4a9a80155887b6f3c9f15f28253fa6c58859.tar.gz llvm-ec7e4a9a80155887b6f3c9f15f28253fa6c58859.tar.bz2 |
[LoopVectorizer] Add reduction tests for inloop reductions. NFC
Also adds a force-reduction-intrinsics option for testing, for forcing
the generation of reduction intrinsics even when the backend is not
requesting them.
Diffstat (limited to 'llvm/lib/Transforms/Utils/LoopUtils.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/LoopUtils.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Utils/LoopUtils.cpp b/llvm/lib/Transforms/Utils/LoopUtils.cpp index 6a8770c..b86a67f 100644 --- a/llvm/lib/Transforms/Utils/LoopUtils.cpp +++ b/llvm/lib/Transforms/Utils/LoopUtils.cpp @@ -46,6 +46,11 @@ using namespace llvm; using namespace llvm::PatternMatch; +static cl::opt<bool> ForceReductionIntrinsic( + "force-reduction-intrinsics", cl::Hidden, + cl::desc("Force creating reduction intrinsics for testing."), + cl::init(false)); + #define DEBUG_TYPE "loop-utils" static const char *LLVMLoopDisableNonforced = "llvm.loop.disable_nonforced"; @@ -1015,7 +1020,8 @@ Value *llvm::createSimpleTargetReduction( llvm_unreachable("Unhandled opcode"); break; } - if (TTI->useReductionIntrinsic(Opcode, Src->getType(), Flags)) + if (ForceReductionIntrinsic || + TTI->useReductionIntrinsic(Opcode, Src->getType(), Flags)) return BuildFunc(); return getShuffleReduction(Builder, Src, Opcode, MinMaxKind, RedOps); } |