[mlir][sparse] move all COO related methods into SparseTensorType (#73881)
This centralizes all COO methods, and provides a cleaner API. Note that the "enc" only constructor is a temporary workaround the need for COO methods inside the "enc" only storage specifier.
This commit is contained in:
@@ -194,7 +194,7 @@ static void createAllocFields(OpBuilder &builder, Location loc,
|
||||
valHeuristic =
|
||||
builder.create<arith::MulIOp>(loc, valHeuristic, lvlSizesValues[lvl]);
|
||||
} else if (sizeHint) {
|
||||
if (getCOOStart(stt.getEncoding()) == 0) {
|
||||
if (stt.getCOOStart() == 0) {
|
||||
posHeuristic = constantIndex(builder, loc, 2);
|
||||
crdHeuristic = builder.create<arith::MulIOp>(
|
||||
loc, constantIndex(builder, loc, lvlRank), sizeHint); // AOS
|
||||
@@ -657,8 +657,7 @@ struct SparseReorderCOOConverter : public OpConversionPattern<ReorderCOOOp> {
|
||||
|
||||
// Should have been verified.
|
||||
assert(dstStt.isAllOrdered() && !srcStt.isAllOrdered() &&
|
||||
isUniqueCOOType(srcStt.getRankedTensorType()) &&
|
||||
isUniqueCOOType(dstStt.getRankedTensorType()));
|
||||
dstStt.isCOOType() && srcStt.isCOOType());
|
||||
assert(dstStt.hasSameDimToLvl(srcStt));
|
||||
|
||||
// We don't need a mutable descriptor here as we perform sorting in-place.
|
||||
@@ -1317,7 +1316,7 @@ struct SparseAssembleOpConverter : public OpConversionPattern<AssembleOp> {
|
||||
Value posBack = c0; // index to the last value in the position array
|
||||
Value memSize = c1; // memory size for current array
|
||||
|
||||
Level trailCOOStart = getCOOStart(stt.getEncoding());
|
||||
Level trailCOOStart = stt.getCOOStart();
|
||||
Level trailCOORank = stt.getLvlRank() - trailCOOStart;
|
||||
// Sets up SparseTensorSpecifier.
|
||||
for (Level lvl = 0, lvlRank = stt.getLvlRank(); lvl < lvlRank; lvl++) {
|
||||
@@ -1454,7 +1453,7 @@ struct SparseNewConverter : public OpConversionPattern<NewOp> {
|
||||
const auto dstTp = getSparseTensorType(op.getResult());
|
||||
// Creating COO with NewOp is handled by direct IR codegen. All other cases
|
||||
// are handled by rewriting.
|
||||
if (!dstTp.hasEncoding() || getCOOStart(dstTp.getEncoding()) != 0)
|
||||
if (!dstTp.hasEncoding() || dstTp.getCOOStart() != 0)
|
||||
return failure();
|
||||
|
||||
// Implement as follows:
|
||||
|
||||
Reference in New Issue
Block a user