diff options
Diffstat (limited to 'compiler/optimizing/loop_optimization.cc')
-rw-r--r-- | compiler/optimizing/loop_optimization.cc | 9 |
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); |