diff --git a/mlir/include/mlir/Conversion/AffineToStandard/AffineToStandard.h b/mlir/include/mlir/Conversion/AffineToStandard/AffineToStandard.h --- a/mlir/include/mlir/Conversion/AffineToStandard/AffineToStandard.h +++ b/mlir/include/mlir/Conversion/AffineToStandard/AffineToStandard.h @@ -14,6 +14,7 @@ namespace mlir { class AffineExpr; class AffineForOp; +class AffineMap; class Location; struct LogicalResult; class MLIRContext; @@ -30,6 +31,13 @@ Value expandAffineExpr(OpBuilder &builder, Location loc, AffineExpr expr, ValueRange dimValues, ValueRange symbolValues); +/// Create a sequence of operations that implement the `affineMap` applied to +/// the given `operands` (as it it were an AffineApplyOp). +Optional> expandAffineMap(OpBuilder &builder, + Location loc, + AffineMap affineMap, + ValueRange operands); + /// Collect a set of patterns to convert from the Affine dialect to the Standard /// dialect, in particular convert structured affine control flow into CFG /// branch-based control flow. diff --git a/mlir/lib/Conversion/AffineToStandard/AffineToStandard.cpp b/mlir/lib/Conversion/AffineToStandard/AffineToStandard.cpp --- a/mlir/lib/Conversion/AffineToStandard/AffineToStandard.cpp +++ b/mlir/lib/Conversion/AffineToStandard/AffineToStandard.cpp @@ -42,7 +42,8 @@ : builder(builder), dimValues(dimValues), symbolValues(symbolValues), loc(loc) {} - template Value buildBinaryExpr(AffineBinaryOpExpr expr) { + template + Value buildBinaryExpr(AffineBinaryOpExpr expr) { auto lhs = visit(expr.getLHS()); auto rhs = visit(expr.getRHS()); if (!lhs || !rhs) @@ -216,10 +217,10 @@ /// Create a sequence of operations that implement the `affineMap` applied to /// the given `operands` (as it it were an AffineApplyOp). -Optional> static expandAffineMap(OpBuilder &builder, - Location loc, - AffineMap affineMap, - ValueRange operands) { +Optional> mlir::expandAffineMap(OpBuilder &builder, + Location loc, + AffineMap affineMap, + ValueRange operands) { auto numDims = affineMap.getNumDims(); auto expanded = functional::map( [numDims, &builder, loc, operands](AffineExpr expr) {