[PATCH] D43932: [Polly][GEMM] Include parameter constraints in isMatMulOperandAcc
Theodoros Theodoridis via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Mar 1 02:03:26 PST 2018
ttheodor created this revision.
ttheodor added a reviewer: Meinersbur.
Herald added a reviewer: bollu.
Herald added a subscriber: llvm-commits.
Repository:
rPLO Polly
https://reviews.llvm.org/D43932
Files:
lib/Transform/ScheduleOptimizer.cpp
Index: lib/Transform/ScheduleOptimizer.cpp
===================================================================
--- lib/Transform/ScheduleOptimizer.cpp
+++ lib/Transform/ScheduleOptimizer.cpp
@@ -596,8 +596,8 @@
/// second output dimension.
/// @return True in case @p AccMap has the expected form and false,
/// otherwise.
-static bool isMatMulOperandAcc(isl::set Domain, isl::map AccMap, int &FirstPos,
- int &SecondPos) {
+static bool isMatMulOperandAcc(isl::set Domain, isl::set Context,
+ isl::map AccMap, int &FirstPos, int &SecondPos) {
isl::space Space = AccMap.get_space();
isl::map Universe = isl::map::universe(Space);
@@ -618,8 +618,9 @@
Universe.equate(isl::dim::in, FirstDims[i], isl::dim::out, 0)
.equate(isl::dim::in, SecondDims[i], isl::dim::out, 1);
- AccMap = AccMap.intersect_domain(Domain);
- PossibleMatMul = PossibleMatMul.intersect_domain(Domain);
+ AccMap = AccMap.intersect_domain(Domain).intersect_params(Context);
+ PossibleMatMul = PossibleMatMul.intersect_domain(Domain).intersect_params(Context);
+
// If AccMap spans entire domain (Non-partial write),
// compute FirstPos and SecondPos.
@@ -657,15 +658,17 @@
return false;
auto AccMap = MemAccess->getLatestAccessRelation();
isl::set StmtDomain = MemAccess->getStatement()->getDomain();
- if (isMatMulOperandAcc(StmtDomain, AccMap, MMI.i, MMI.j) && !MMI.ReadFromC) {
+ isl::set Context = MemAccess->getStatement()->getParent()->getContext();
+ if (isMatMulOperandAcc(StmtDomain, Context, AccMap, MMI.i, MMI.j) &&
+ !MMI.ReadFromC) {
MMI.ReadFromC = MemAccess;
return true;
}
- if (isMatMulOperandAcc(StmtDomain, AccMap, MMI.i, MMI.k) && !MMI.A) {
+ if (isMatMulOperandAcc(StmtDomain, Context, AccMap, MMI.i, MMI.k) && !MMI.A) {
MMI.A = MemAccess;
return true;
}
- if (isMatMulOperandAcc(StmtDomain, AccMap, MMI.k, MMI.j) && !MMI.B) {
+ if (isMatMulOperandAcc(StmtDomain, Context, AccMap, MMI.k, MMI.j) && !MMI.B) {
MMI.B = MemAccess;
return true;
}
@@ -785,7 +788,8 @@
if (!MemAccessPtr->isWrite())
return false;
auto AccMap = MemAccessPtr->getLatestAccessRelation();
- if (!isMatMulOperandAcc(Stmt->getDomain(), AccMap, MMI.i, MMI.j))
+ if (!isMatMulOperandAcc(Stmt->getDomain(), Stmt->getParent()->getContext(),
+ AccMap, MMI.i, MMI.j))
return false;
MMI.WriteToC = MemAccessPtr;
break;
@@ -1152,6 +1156,7 @@
ExtMap = ExtMap.intersect_range(Domain);
ExtMap = ExtMap.set_tuple_id(isl::dim::out, NewStmt->getDomainId());
Node = createExtensionNode(Node, ExtMap);
+
return Node.child(0).child(0).child(0).child(0).child(0);
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D43932.136478.patch
Type: text/x-patch
Size: 2812 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180301/ee5429b6/attachment.bin>
More information about the llvm-commits
mailing list