summaryrefslogtreecommitdiff
path: root/compiler/optimizing/loop_optimization.cc
diff options
context:
space:
mode:
authorVladimir Marko <vmarko@google.com>2019-10-29 10:17:53 +0000
committerVladimir Marko <vmarko@google.com>2019-10-31 09:19:22 +0000
commit7cf5607f472020711e36eedbbfebb25b40d3f90e (patch)
tree71f30133f4650656911f2fb72e3b8d203b355635 /compiler/optimizing/loop_optimization.cc
parentd55b844e39c4d5eb1a56de6cb95c891659f8a27f (diff)
Revert^2 "Implement Dot Product Vectorization for x86"
This reverts commit b8c884e5f22390386b202459ab55ef3046631e42. And fixes a codegen bug (the reason why the original CL was reverted). Test: 684-checker-simd-dotprod Test: DEX2OAT_HOST_INSTRUCTION_SET_FEATURES="sse4.1" test.py --host Test: test.py --host --jit --gcstress Change-Id: Ibef925d1037abc9cb5f3d4dbd79f1d1eceae2f71 Signed-off-by: Shalini Salomi Bodapati <shalini.salomi.bodapati@intel.com>
Diffstat (limited to 'compiler/optimizing/loop_optimization.cc')
-rw-r--r--compiler/optimizing/loop_optimization.cc12
1 files changed, 9 insertions, 3 deletions
diff --git a/compiler/optimizing/loop_optimization.cc b/compiler/optimizing/loop_optimization.cc
index 9c4e9d25f7..567a41e2fd 100644
--- a/compiler/optimizing/loop_optimization.cc
+++ b/compiler/optimizing/loop_optimization.cc
@@ -1623,14 +1623,20 @@ bool HLoopOptimization::TrySetVectorType(DataType::Type type, uint64_t* restrict
kNoDotProd;
return TrySetVectorLength(16);
case DataType::Type::kUint16:
- case DataType::Type::kInt16:
*restrictions |= kNoDiv |
kNoAbs |
kNoSignedHAdd |
kNoUnroundedHAdd |
- kNoSAD|
+ kNoSAD |
kNoDotProd;
return TrySetVectorLength(8);
+ case DataType::Type::kInt16:
+ *restrictions |= kNoDiv |
+ kNoAbs |
+ kNoSignedHAdd |
+ kNoUnroundedHAdd |
+ kNoSAD;
+ return TrySetVectorLength(8);
case DataType::Type::kInt32:
*restrictions |= kNoDiv | kNoSAD;
return TrySetVectorLength(4);
@@ -2166,7 +2172,7 @@ bool HLoopOptimization::VectorizeDotProdIdiom(LoopNode* node,
bool generate_code,
DataType::Type reduction_type,
uint64_t restrictions) {
- if (!instruction->IsAdd() || (reduction_type != DataType::Type::kInt32)) {
+ if (!instruction->IsAdd() || reduction_type != DataType::Type::kInt32) {
return false;
}