diff options
author | Treehugger Robot <treehugger-gerrit@google.com> | 2017-06-30 18:18:06 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2017-06-30 18:18:06 +0000 |
commit | e128af51eb0d1a882b9bc37cd213639d0c3a63e7 (patch) | |
tree | cce9394c1892680e9d731df24475fca35decaf59 /compiler/optimizing/loop_optimization.cc | |
parent | dfcf10b92330164f8af6c82c8232e85cfff1ae3c (diff) | |
parent | 8f7c41044bdb7a36913444a3437bf2b946f7efe9 (diff) |
Merge "ARM: ART Vectorizer (64-bit vectors)."
Diffstat (limited to 'compiler/optimizing/loop_optimization.cc')
-rw-r--r-- | compiler/optimizing/loop_optimization.cc | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/compiler/optimizing/loop_optimization.cc b/compiler/optimizing/loop_optimization.cc index b61d7b80d1..83f31c77d3 100644 --- a/compiler/optimizing/loop_optimization.cc +++ b/compiler/optimizing/loop_optimization.cc @@ -1097,6 +1097,23 @@ bool HLoopOptimization::TrySetVectorType(Primitive::Type type, uint64_t* restric switch (compiler_driver_->GetInstructionSet()) { case kArm: case kThumb2: + // Allow vectorization for all ARM devices, because Android assumes that + // ARM 32-bit always supports advanced SIMD. + switch (type) { + case Primitive::kPrimBoolean: + case Primitive::kPrimByte: + *restrictions |= kNoDiv; + return TrySetVectorLength(8); + case Primitive::kPrimChar: + case Primitive::kPrimShort: + *restrictions |= kNoDiv | kNoStringCharAt; + return TrySetVectorLength(4); + case Primitive::kPrimInt: + *restrictions |= kNoDiv; + return TrySetVectorLength(2); + default: + break; + } return false; case kArm64: // Allow vectorization for all ARM devices, because Android assumes that |