summaryrefslogtreecommitdiff
path: root/compiler/optimizing/loop_optimization.cc
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/optimizing/loop_optimization.cc')
-rw-r--r--compiler/optimizing/loop_optimization.cc9
1 files changed, 8 insertions, 1 deletions
diff --git a/compiler/optimizing/loop_optimization.cc b/compiler/optimizing/loop_optimization.cc
index ed66d65373..14e6683cf8 100644
--- a/compiler/optimizing/loop_optimization.cc
+++ b/compiler/optimizing/loop_optimization.cc
@@ -875,6 +875,13 @@ static HBasicBlock* GetInnerLoopFiniteSingleExit(HLoopInformation* loop_info) {
return exit;
}
+// Determines whether predicated loop vectorization should be tried for ALL loops.
+#ifdef ART_FORCE_TRY_PREDICATED_SIMD
+ static constexpr bool kForceTryPredicatedSIMD = true;
+#else
+ static constexpr bool kForceTryPredicatedSIMD = false;
+#endif
+
bool HLoopOptimization::TryOptimizeInnerLoopFinite(LoopNode* node) {
HBasicBlock* header = node->loop_info->GetHeader();
HBasicBlock* preheader = node->loop_info->GetPreHeader();
@@ -931,7 +938,7 @@ bool HLoopOptimization::TryOptimizeInnerLoopFinite(LoopNode* node) {
return false;
}
- if (IsInPredicatedVectorizationMode()) {
+ if (kForceTryPredicatedSIMD && IsInPredicatedVectorizationMode()) {
return TryVectorizePredicated(node, body, exit, main_phi, trip_count);
} else {
return TryVectorizedTraditional(node, body, exit, main_phi, trip_count);