summaryrefslogtreecommitdiff
path: root/compiler/optimizing/loop_optimization.cc
diff options
context:
space:
mode:
authorShalini Salomi Bodapati <shalini.salomi.bodapati@intel.com>2019-10-15 15:16:22 +0530
committerVladimir Marko <vmarko@google.com>2019-10-23 10:37:54 +0000
commit4b7caeee57767f6bce7bb138a1299c0ae84bebf9 (patch)
tree7d744af39f9b09108e9ba81a85023a79a46f9853 /compiler/optimizing/loop_optimization.cc
parent3981da539bdf249da2be5c4c9dbc4ee59e64d332 (diff)
Implement Dot Product Vectorization for x86
8% improvement in microbench for integral data types Test: ./test.py --host --64 Change-Id: I26b584f29d677283195c69b68650651368c656d1 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;
}