[mlir][linalg] Change the FillOp library call signature.

Adapt the FillOp library call signature to the updated operand order introduced in https://reviews.llvm.org/D10412. The patch reverts the special treatment of FillOp in LinalgToStandard.

Differential Revision: https://reviews.llvm.org/D104360
This commit is contained in:
Tobias Gysi 2021-06-23 09:06:04 +00:00
parent aa58fdb396
commit f1844f15c1
2 changed files with 4 additions and 16 deletions

View File

@ -73,18 +73,18 @@ getReassociationIndicesForReshape(ShapedType sourceType, ShapedType targetType);
/// Examples: /// Examples:
/// ///
/// 1. linalg.fill(%f, %A) : f32, memref<f32> /// 1. linalg.fill(%f, %A) : f32, memref<f32>
/// name mangles into `linalg_fill_viewf32_f32_impl` /// name mangles into `linalg_fill_f32_viewf32`
/// ///
/// 2. linalg.dot %A, %B, %C : /// 2. linalg.dot %A, %B, %C :
/// (memref<?xf32, stride_specification>, /// (memref<?xf32, stride_specification>,
/// memref<?xf32, stride_specification>, memref<f32>) /// memref<?xf32, stride_specification>, memref<f32>)
/// name mangles into `linalg_dot_viewxf32_viewxf32_viewf32_impl` /// name mangles into `linalg_dot_viewxf32_viewxf32_viewf32`
/// ///
/// 3. linalg.matmul(...) : /// 3. linalg.matmul(...) :
/// memref<?x?xf32, stride_specification>, /// memref<?x?xf32, stride_specification>,
/// memref<?x?xf32, stride_specification>, /// memref<?x?xf32, stride_specification>,
/// memref<?x?xf32, stride_specification> /// memref<?x?xf32, stride_specification>
/// name mangles into `linalg_matmul_viewxxf32_viewxxf32_viewxxf32_impl` /// name mangles into `linalg_matmul_viewxxf32_viewxxf32_viewxxf32`
std::string generateLibraryCallName(Operation *op); std::string generateLibraryCallName(Operation *op);
/// Returns `num` AffineDimExpr dimensions at positions /// Returns `num` AffineDimExpr dimensions at positions

View File

@ -100,21 +100,9 @@ LogicalResult mlir::linalg::LinalgOpToLibraryCallRewrite::matchAndRewrite(
if (isa<CopyOp>(op)) if (isa<CopyOp>(op))
return failure(); return failure();
// Swap the operand order of the FillOp to maintain the pretty printed
// signature that takes an output buffer followed by the fill value.
SmallVector<Value> originalOperandOrder = op->getOperands();
if (auto fillOp = dyn_cast<FillOp>(op.getOperation())) {
Value value = fillOp.value();
Value output = fillOp.output();
op->setOperands(ValueRange{output, value});
}
auto libraryCallName = getLibraryCallSymbolRef(op, rewriter); auto libraryCallName = getLibraryCallSymbolRef(op, rewriter);
if (!libraryCallName) { if (!libraryCallName)
// Restore the operand order in case it has been modified.
op->setOperands(originalOperandOrder);
return failure(); return failure();
}
// TODO: Add support for more complex library call signatures that include // TODO: Add support for more complex library call signatures that include
// indices or captured values. // indices or captured values.