[Mlir-commits] [mlir] [mlir][sparse] support sparsification to coiterate operations. (PR #102546)
Aart Bik
llvmlistbot at llvm.org
Fri Aug 9 11:21:32 PDT 2024
================
@@ -615,33 +615,104 @@ bool LoopEmitter::shouldIteratedByForLoop(ArrayRef<SparseIterator *> spIters) {
return true;
}
+Region *LoopEmitter::enterCurCoIterationCase(OpBuilder &builder, Location loc,
+ I64BitSet caseBit,
+ unsigned caseIdx,
+ MutableArrayRef<Value> reduc) {
+ auto coIterOp = cast<CoIterateOp>(loopStack.back().loop);
+ SmallVector<Attribute> cases(coIterOp.getCases().getAsRange<Attribute>());
+ cases[caseIdx] = builder.getI64IntegerAttr(caseBit);
+
+ coIterOp.setCasesAttr(builder.getArrayAttr(cases));
+ Region &caseRegion = coIterOp.getRegion(caseIdx);
+ assert(caseRegion.getBlocks().empty() &&
+ "re-initialize the same coiteration case region.");
+
+ // Each block starts with a list of used coordinates of index type.
+ SmallVector<Type> blockArgTps(coIterOp.getCrdUsedLvls().count(),
+ builder.getIndexType());
+ // Follows by a list of user-provided iteration arguments.
----------------
aartbik wrote:
Followed by
https://github.com/llvm/llvm-project/pull/102546
More information about the Mlir-commits
mailing list