diff --git a/mlir/include/mlir/Dialect/Linalg/Utils/Utils.h b/mlir/include/mlir/Dialect/Linalg/Utils/Utils.h --- a/mlir/include/mlir/Dialect/Linalg/Utils/Utils.h +++ b/mlir/include/mlir/Dialect/Linalg/Utils/Utils.h @@ -193,6 +193,8 @@ OpFoldResult opFoldResult); Value materializeOpFoldResult(OpBuilder &b, Location loc, OpFoldResult opFoldResult); +Value materializeOpFoldResult(OpBuilder &b, Location loc, + ArrayRef opFoldResults); /// A struct containg offsets-sizes-strides arguments of the tiled shape. struct SliceParameters { diff --git a/mlir/lib/Dialect/Linalg/Utils/Utils.cpp b/mlir/lib/Dialect/Linalg/Utils/Utils.cpp --- a/mlir/lib/Dialect/Linalg/Utils/Utils.cpp +++ b/mlir/lib/Dialect/Linalg/Utils/Utils.cpp @@ -946,6 +946,16 @@ return materializeOpFoldResult(b, opFoldResult); } +SmallVector +materializeOpFoldResults(OpBuilder &builder, Location loc, + ArrayRef opFoldResults) { + ImplicitLocOpBuilder b(loc, builder); + SmallVector values; + for (const auto &opFoldResult : opFoldResults) + values.push_back(materializeOpFoldResult(b, opFoldResult)); + return values; +} + SmallVector> computeAllSliceParameters(OpBuilder &builder, Location loc, LinalgOp linalgOp, ValueRange valuesToTile, ArrayRef ivs,