summaryrefslogtreecommitdiff
path: root/compiler/optimizing/dead_code_elimination.cc
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/optimizing/dead_code_elimination.cc')
-rw-r--r--compiler/optimizing/dead_code_elimination.cc14
1 files changed, 11 insertions, 3 deletions
diff --git a/compiler/optimizing/dead_code_elimination.cc b/compiler/optimizing/dead_code_elimination.cc
index cf49e39849..8e6b6db236 100644
--- a/compiler/optimizing/dead_code_elimination.cc
+++ b/compiler/optimizing/dead_code_elimination.cc
@@ -24,6 +24,7 @@
#include "base/scoped_arena_containers.h"
#include "base/stl_util.h"
#include "optimizing/nodes.h"
+#include "optimizing/nodes_vector.h"
#include "ssa_phi_elimination.h"
namespace art HIDDEN {
@@ -842,7 +843,8 @@ void HDeadCodeElimination::RemoveDeadInstructions() {
void HDeadCodeElimination::UpdateGraphFlags() {
bool has_monitor_operations = false;
- bool has_simd = false;
+ bool has_traditional_simd = false;
+ bool has_predicated_simd = false;
bool has_bounds_checks = false;
bool has_always_throwing_invokes = false;
@@ -852,7 +854,12 @@ void HDeadCodeElimination::UpdateGraphFlags() {
if (instruction->IsMonitorOperation()) {
has_monitor_operations = true;
} else if (instruction->IsVecOperation()) {
- has_simd = true;
+ HVecOperation* vec_instruction = instruction->AsVecOperation();
+ if (vec_instruction->IsPredicated()) {
+ has_predicated_simd = true;
+ } else {
+ has_traditional_simd = true;
+ }
} else if (instruction->IsBoundsCheck()) {
has_bounds_checks = true;
} else if (instruction->IsInvoke() && instruction->AsInvoke()->AlwaysThrows()) {
@@ -862,7 +869,8 @@ void HDeadCodeElimination::UpdateGraphFlags() {
}
graph_->SetHasMonitorOperations(has_monitor_operations);
- graph_->SetHasSIMD(has_simd);
+ graph_->SetHasTraditionalSIMD(has_traditional_simd);
+ graph_->SetHasPredicatedSIMD(has_predicated_simd);
graph_->SetHasBoundsChecks(has_bounds_checks);
graph_->SetHasAlwaysThrowingInvokes(has_always_throwing_invokes);
}