diff options
Diffstat (limited to 'compiler/optimizing')
-rw-r--r-- | compiler/optimizing/nodes_vector.h | 4 | ||||
-rw-r--r-- | compiler/optimizing/ssa_liveness_analysis.cc | 4 |
2 files changed, 5 insertions, 3 deletions
diff --git a/compiler/optimizing/nodes_vector.h b/compiler/optimizing/nodes_vector.h index 886d75e5c7..c5e75a7ca4 100644 --- a/compiler/optimizing/nodes_vector.h +++ b/compiler/optimizing/nodes_vector.h @@ -815,7 +815,7 @@ class HVecUShr FINAL : public HVecBinaryOperation { class HVecSetScalars FINAL : public HVecOperation { public: HVecSetScalars(ArenaAllocator* arena, - HInstruction** scalars, // array + HInstruction* scalars[], Primitive::Type packed_type, size_t vector_length, size_t number_of_scalars, @@ -827,7 +827,7 @@ class HVecSetScalars FINAL : public HVecOperation { vector_length, dex_pc) { for (size_t i = 0; i < number_of_scalars; i++) { - DCHECK(!scalars[i]->IsVecOperation()); + DCHECK(!scalars[i]->IsVecOperation() || scalars[i]->IsVecExtractScalar()); SetRawInputAt(0, scalars[i]); } } diff --git a/compiler/optimizing/ssa_liveness_analysis.cc b/compiler/optimizing/ssa_liveness_analysis.cc index 185303bc8c..754a762214 100644 --- a/compiler/optimizing/ssa_liveness_analysis.cc +++ b/compiler/optimizing/ssa_liveness_analysis.cc @@ -474,7 +474,9 @@ size_t LiveInterval::NumberOfSpillSlotsNeeded() const { // For a SIMD operation, compute the number of needed spill slots. // TODO: do through vector type? HInstruction* definition = GetParent()->GetDefinedBy(); - if (definition != nullptr && definition->IsVecOperation()) { + if (definition != nullptr && + definition->IsVecOperation() && + !definition->IsVecExtractScalar()) { return definition->AsVecOperation()->GetVectorNumberOfBytes() / kVRegSize; } // Return number of needed spill slots based on type. |