aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Transforms/Utils/LoopUtils.cpp
diff options
context:
space:
mode:
authorDavid Green <david.green@arm.com>2020-03-03 09:26:00 +0000
committerDavid Green <david.green@arm.com>2020-03-03 10:54:00 +0000
commitec7e4a9a80155887b6f3c9f15f28253fa6c58859 (patch)
tree12118e59c1ec52db43fcfccebb33fde836246afb /llvm/lib/Transforms/Utils/LoopUtils.cpp
parent6304368818a1e9883b694b9d8c21ef568176168d (diff)
downloadllvm-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.cpp8
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);
}