summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/Hexagon/HexagonVectorLoopCarriedReuse.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/llvm/lib/Target/Hexagon/HexagonVectorLoopCarriedReuse.cpp b/llvm/lib/Target/Hexagon/HexagonVectorLoopCarriedReuse.cpp
index 77dc5f5eee7..7052503186e 100644
--- a/llvm/lib/Target/Hexagon/HexagonVectorLoopCarriedReuse.cpp
+++ b/llvm/lib/Target/Hexagon/HexagonVectorLoopCarriedReuse.cpp
@@ -302,6 +302,21 @@ bool HexagonVectorLoopCarriedReuse::isEquivalentOperation(Instruction *I1,
return false;
}
}
+
+ // If both the Instructions are of Vector Type and any of the element
+ // is integer constant, check their values too for equivalence.
+ if (I1->getType()->isVectorTy() && I2->getType()->isVectorTy()) {
+ unsigned NumOperands = I1->getNumOperands();
+ for (unsigned i = 0; i < NumOperands; ++i) {
+ ConstantInt *C1 = dyn_cast<ConstantInt>(I1->getOperand(i));
+ ConstantInt *C2 = dyn_cast<ConstantInt>(I2->getOperand(i));
+ if(!C1) continue;
+ assert(C2);
+ if (C1->getSExtValue() != C2->getSExtValue())
+ return false;
+ }
+ }
+
return true;
}
OpenPOWER on IntegriCloud