Skip to content

Commit

Permalink
Integrate llvm-project at 9b32886e7e705bb28aab57682e612375075a0ad7 (#…
Browse files Browse the repository at this point in the history
…8967)

* Reset third_party/llvm-project: 9b32886e7e705bb28aab57682e612375075a0ad7 (2022-04-22 09:20:18 +0000): [mlir][Arithmetic] Use common constant fold function in RemSI and RemUI to cover splat.
* Update mlir-hlo to bbd8077e020d4359ae0bcf8b5a895a5ebe2f020d
* Update TensorFlow to 5abd3d88570e304f3d3f9bb99eb98620e2839a31
* Update FuncOp to func::FuncOp and update parseRegion API usages
  • Loading branch information
antiagainst authored Apr 22, 2022
1 parent 761ba9c commit a7b981d
Show file tree
Hide file tree
Showing 29 changed files with 55 additions and 50 deletions.
2 changes: 1 addition & 1 deletion integrations/tensorflow/WORKSPACE
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")

TENSORFLOW_COMMIT = "d1086f2605bc84ca817223fa8b91c8b9b0ae1949"
TENSORFLOW_COMMIT = "5abd3d88570e304f3d3f9bb99eb98620e2839a31"

git_repository(
name = "org_tensorflow",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

#include "iree_tf_compiler/MHLO/Passes.h"
#include "llvm/Support/JSON.h"
#include "mlir/Dialect/Func/IR/FuncOps.h"
#include "mlir/IR/Attributes.h"
#include "mlir/IR/Builders.h"
#include "mlir/IR/BuiltinTypes.h"
Expand All @@ -20,7 +21,7 @@ namespace iree_integrations {
namespace MHLO {

class EmitDefaultIREEABIPass
: public PassWrapper<EmitDefaultIREEABIPass, OperationPass<FuncOp>> {
: public PassWrapper<EmitDefaultIREEABIPass, OperationPass<func::FuncOp>> {
public:
StringRef getArgument() const override {
return "iree-mhlo-emit-default-iree-abi";
Expand Down Expand Up @@ -130,7 +131,7 @@ class EmitDefaultIREEABIPass
}
};

std::unique_ptr<OperationPass<FuncOp>> createEmitDefaultIREEABIPass() {
std::unique_ptr<OperationPass<func::FuncOp>> createEmitDefaultIREEABIPass() {
return std::make_unique<EmitDefaultIREEABIPass>();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ namespace TF {
// It does not require the same number of options as we can hardcode as the pass
// the IREE requires.
class ConvertToMHLOPass
: public PassWrapper<ConvertToMHLOPass, OperationPass<FuncOp>> {
: public PassWrapper<ConvertToMHLOPass, OperationPass<func::FuncOp>> {
void getDependentDialects(DialectRegistry &registry) const override {
registry.insert<mlir::linalg::LinalgDialect, mlir::TF::TensorFlowDialect,
mlir::tf_executor::TensorFlowExecutorDialect,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ static LogicalResult convertTFGlobalTensorsToFlowVariables(ModuleOp module) {
}

// TODO(silvasean): Make this conversion interprocedural.
for (auto func : module.getOps<FuncOp>()) {
for (auto func : module.getOps<func::FuncOp>()) {
if (!tf_saved_model::IsExported(func)) {
continue;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ class PropagateResourceCastsPass

void runOnOperation() override {
auto operation = getOperation();
for (auto func : operation.getOps<FuncOp>()) {
for (auto func : operation.getOps<func::FuncOp>()) {
for (auto cast : func.getOps<mlir::TF::CastOp>()) {
auto input = cast.x();
auto output = cast.getResult();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -409,7 +409,7 @@ struct StructureLevel {
}
};

LogicalResult materializeABIWrapper(ModuleOp module, FuncOp internalFunc,
LogicalResult materializeABIWrapper(ModuleOp module, func::FuncOp internalFunc,
StringRef exportedName) {
Location loc = internalFunc.getLoc();
OpBuilder builder(internalFunc);
Expand Down Expand Up @@ -492,7 +492,8 @@ LogicalResult materializeABIWrapper(ModuleOp module, FuncOp internalFunc,
// Create the wrapper function.
FunctionType wrapperFuncType =
builder.getFunctionType(wrapperArgTypes, wrapperResultTypes);
auto wrapperFunc = builder.create<FuncOp>(loc, exportedName, wrapperFuncType);
auto wrapperFunc =
builder.create<func::FuncOp>(loc, exportedName, wrapperFuncType);
SymbolTable::setSymbolVisibility(wrapperFunc,
SymbolTable::Visibility::Public);
Block *entryBlock = wrapperFunc.addEntryBlock();
Expand Down Expand Up @@ -595,7 +596,7 @@ class SavedModelToIREEABIPass
(void)savedModelIndexPathIdent;

// Handle saved model exported functions.
for (auto func : getOperation().getOps<FuncOp>()) {
for (auto func : getOperation().getOps<func::FuncOp>()) {
// Transfer exported names to IREE.
auto exportedNames = mlir::tf_saved_model::GetExportedNames(func);
if (exportedNames.empty()) continue;
Expand Down
4 changes: 2 additions & 2 deletions integrations/tensorflow/iree_tf_compiler/TF/StripAsserts.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ namespace iree_integrations {
namespace TF {

class StripAssertsPass
: public PassWrapper<StripAssertsPass, OperationPass<FuncOp>> {
: public PassWrapper<StripAssertsPass, OperationPass<func::FuncOp>> {
public:
StringRef getArgument() const override { return "iree-tf-strip-asserts"; }

Expand All @@ -33,7 +33,7 @@ class StripAssertsPass
}
};

std::unique_ptr<OperationPass<FuncOp>> createStripAssertsPass() {
std::unique_ptr<OperationPass<func::FuncOp>> createStripAssertsPass() {
return std::make_unique<StripAssertsPass>();
}

Expand Down
5 changes: 3 additions & 2 deletions integrations/tensorflow/iree_tf_compiler/TF/StripMetadata.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,8 @@ class StripModuleMetadataPass
};

class StripFunctionMetadataPass
: public PassWrapper<StripFunctionMetadataPass, OperationPass<FuncOp>> {
: public PassWrapper<StripFunctionMetadataPass,
OperationPass<func::FuncOp>> {
public:
StringRef getArgument() const override {
return "iree-tf-strip-function-metadata";
Expand Down Expand Up @@ -97,7 +98,7 @@ std::unique_ptr<OperationPass<ModuleOp>> createStripModuleMetadataPass() {
return std::make_unique<StripModuleMetadataPass>();
}

std::unique_ptr<OperationPass<FuncOp>> createStripFunctionMetadataPass() {
std::unique_ptr<OperationPass<func::FuncOp>> createStripFunctionMetadataPass() {
return std::make_unique<StripFunctionMetadataPass>();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@ namespace iree_integrations {
namespace TF {

class VerifyFullyConvertedPass
: public PassWrapper<VerifyFullyConvertedPass, OperationPass<FuncOp>> {
: public PassWrapper<VerifyFullyConvertedPass,
OperationPass<func::FuncOp>> {
public:
StringRef getArgument() const override {
return "iree-tf-verify-fully-converted";
Expand Down Expand Up @@ -49,7 +50,7 @@ class VerifyFullyConvertedPass

static PassRegistration<VerifyFullyConvertedPass> pass;

std::unique_ptr<OperationPass<FuncOp>> createVerifyFullyConvertedPass() {
std::unique_ptr<OperationPass<func::FuncOp>> createVerifyFullyConvertedPass() {
return std::make_unique<VerifyFullyConvertedPass>();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,8 @@ class ConvertFunctionMetadataPass
// TF/TFL pack their I/O names on an annoying dictionary. We want our shape
// names to match up with those for readability so we extract them here.
// Is this ugly? Yeah - but such is what we have to deal with here.
void setupEntryPointAttrs(FuncOp funcOp, DictionaryAttr entryFunctionAttr) {
void setupEntryPointAttrs(func::FuncOp funcOp,
DictionaryAttr entryFunctionAttr) {
funcOp.setPublic();

auto inputsAttr =
Expand Down Expand Up @@ -98,7 +99,8 @@ std::unique_ptr<OperationPass<ModuleOp>> createConvertModuleMetadataPass() {
return std::make_unique<ConvertModuleMetadataPass>();
}

std::unique_ptr<OperationPass<FuncOp>> createConvertFunctionMetadataPass() {
std::unique_ptr<OperationPass<func::FuncOp>>
createConvertFunctionMetadataPass() {
return std::make_unique<ConvertFunctionMetadataPass>();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@ class LowerGlobalTensorsPass
auto moduleOp = getOperation();
mlir::OpBuilder builder(moduleOp.getBodyRegion());

DenseMap<StringRef, FuncOp> symNameToFunction;
for (auto func : moduleOp.getOps<FuncOp>()) {
DenseMap<StringRef, func::FuncOp> symNameToFunction;
for (auto func : moduleOp.getOps<func::FuncOp>()) {
symNameToFunction[func.getSymName()] = func;
}

Expand All @@ -58,7 +58,7 @@ class LowerGlobalTensorsPass
init.session_init_function());
continue;
}
FuncOp initFunc = std::get<1>(*findInitFunc);
func::FuncOp initFunc = std::get<1>(*findInitFunc);
for (auto assign : initFunc.getOps<mlir::TFL::AssignVariableOp>()) {
auto handle = dyn_cast<mlir::TFL::VarHandleOp>(
assign.resource_id().getDefiningOp());
Expand Down Expand Up @@ -94,7 +94,7 @@ class LowerGlobalTensorsPass
// TF::CallOnceOps are no longer needed as we have already extracted their
// state.
SmallVector<mlir::TFL::CallOnceOp> callOnceOps;
for (auto func : moduleOp.getOps<FuncOp>()) {
for (auto func : moduleOp.getOps<func::FuncOp>()) {
for (auto init : func.getOps<mlir::TFL::CallOnceOp>()) {
callOnceOps.push_back(init);
}
Expand Down
6 changes: 3 additions & 3 deletions integrations/tensorflow/iree_tf_compiler/TFL/Passes.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ void buildTFLImportPassPipeline(OpPassManager &pm) {
//----------------------------------------------------------------------------

pm.addPass(createConvertModuleMetadataPass());
pm.nest<FuncOp>().addPass(createConvertFunctionMetadataPass());
pm.nest<func::FuncOp>().addPass(createConvertFunctionMetadataPass());

//----------------------------------------------------------------------------
// Convert all TFL ops to TOSA ops
Expand All @@ -55,7 +55,7 @@ void buildTFLImportPassPipeline(OpPassManager &pm) {
mlir::tosa::TOSATFTFLLegalizationPipelineOptions tosaOptions;
pm.addPass(createLowerGlobalTensorsPass());
mlir::tosa::createTFTFLtoTOSALegalizationPipeline(pm, tosaOptions);
pm.nest<FuncOp>().addPass(mlir::tosa::createStripQuantTypesPass());
pm.nest<func::FuncOp>().addPass(mlir::tosa::createStripQuantTypesPass());
pm.addPass(createCanonicalizerPass());
pm.addPass(createReconcileUnrealizedCastsPass());

Expand All @@ -73,7 +73,7 @@ void buildTFLImportPassPipeline(OpPassManager &pm) {
// Remove the rest of the TFL goo and verify that all ops converted
//----------------------------------------------------------------------------

pm.nest<FuncOp>().addPass(createStripFunctionMetadataPass());
pm.nest<func::FuncOp>().addPass(createStripFunctionMetadataPass());
pm.addPass(createStripModuleMetadataPass());
pm.addPass(createVerifyFullyConvertedPass());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
#include "iree_tf_compiler/TFL/Passes.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/Support/FormatVariadic.h"
#include "mlir/Dialect/Func/IR/FuncOps.h"
#include "mlir/Pass/Pass.h"
#include "mlir/Support/LLVM.h"
#include "mlir/Transforms/DialectConversion.h"
Expand All @@ -28,7 +29,7 @@ class RetainCallOnceFuncsPass
void runOnOperation() override {
auto moduleOp = getOperation();

llvm::DenseMap<StringRef, FuncOp> funcMap;
llvm::DenseMap<StringRef, func::FuncOp> funcMap;
for (auto func : moduleOp.getOps<mlir::func::FuncOp>()) {
funcMap[func.getSymName()] = func;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ std::unique_ptr<OperationPass<ModuleOp>> createStripModuleMetadataPass() {
return std::make_unique<StripModuleMetadataPass>();
}

std::unique_ptr<OperationPass<FuncOp>> createStripFunctionMetadataPass() {
std::unique_ptr<OperationPass<func::FuncOp>> createStripFunctionMetadataPass() {
return std::make_unique<StripFunctionMetadataPass>();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ class VerifyFullyConvertedPass

} // anonymous namespace

std::unique_ptr<OperationPass<FuncOp>> createVerifyFullyConvertedPass() {
std::unique_ptr<OperationPass<func::FuncOp>> createVerifyFullyConvertedPass() {
return std::make_unique<VerifyFullyConvertedPass>();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,7 @@ int main(int argc, char **argv) {
// function.
std::string entryName = "main";
SymbolTable symbolTable(module.get());
auto mainFunc = symbolTable.lookup<FuncOp>(entryName);
auto mainFunc = symbolTable.lookup<func::FuncOp>(entryName);
if (!mainFunc) {
llvm::errs() << "Unable to find main function '" << entryName
<< "' in converted module.\n";
Expand Down Expand Up @@ -272,7 +272,7 @@ int main(int argc, char **argv) {

// Note that we emit the ABI last since any needed function-level
// transformations (i.e. de-tupling, etc) should have been done.
pm.addNestedPass<FuncOp>(
pm.addNestedPass<func::FuncOp>(
iree_integrations::MHLO::createEmitDefaultIREEABIPass());

if (failed(pm.run(*module))) {
Expand Down
2 changes: 1 addition & 1 deletion iree/compiler/Codegen/Common/WorkGroupSwizzle.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ struct WorkGroupSwizzlePass
void runOnOperation() override {
if (swizzleLogTile == 0) return;
unsigned swizzleTile = pow(2, swizzleLogTile);
FuncOp funcOp = getOperation();
func::FuncOp funcOp = getOperation();
std::array<IREE::HAL::InterfaceWorkgroupIDOp, 2> oldWorkgroupIds;
bool xFound = false, yFound = false;
funcOp.walk([&](IREE::HAL::InterfaceWorkgroupIDOp idOp) {
Expand Down
10 changes: 6 additions & 4 deletions iree/compiler/Codegen/LLVMCPU/Passes.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -253,8 +253,9 @@ void addDoubleTilingExpertPassPipeline(OpPassManager &passManager,
passManager.addPass(createVerifyLinalgTransformLegalityPass());

// Do first level of tiling and distribution.
passManager.addNestedPass<FuncOp>(createInsertDistributionInfoPass());
passManager.addNestedPass<FuncOp>(createTileAndDistributeToWorkgroupsPass());
passManager.addNestedPass<func::FuncOp>(createInsertDistributionInfoPass());
passManager.addNestedPass<func::FuncOp>(
createTileAndDistributeToWorkgroupsPass());
passManager.addPass(createCanonicalizerPass());
passManager.addPass(createCSEPass());
passManager.addNestedPass<func::FuncOp>(
Expand Down Expand Up @@ -320,8 +321,9 @@ void addConvTileAndDecomposeExpertPassPipeline(OpPassManager &passManager) {
passManager.addPass(createVerifyLinalgTransformLegalityPass());

// Do first level of tiling and distribution.
passManager.addNestedPass<FuncOp>(createInsertDistributionInfoPass());
passManager.addNestedPass<FuncOp>(createTileAndDistributeToWorkgroupsPass());
passManager.addNestedPass<func::FuncOp>(createInsertDistributionInfoPass());
passManager.addNestedPass<func::FuncOp>(
createTileAndDistributeToWorkgroupsPass());
passManager.addPass(createCanonicalizerPass());
passManager.addPass(createCSEPass());
passManager.addNestedPass<func::FuncOp>(
Expand Down
1 change: 0 additions & 1 deletion iree/compiler/Dialect/Flow/IR/FlowOps.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -496,7 +496,6 @@ static ParseResult parseDispatchWorkgroupBody(OpAsmParser &parser,
}
}
return parser.parseRegion(body, regionArgs, regionArgTypes,
/*argLocations=*/{},
/*enableNameShadowing=*/true);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ static void appendDispatchBenchmark(
// Create an exported benchmark function that runs the dispatches.
auto funcType =
moduleBuilder.getFunctionType({moduleBuilder.getI32Type()}, {});
auto funcOp = moduleBuilder.create<mlir::FuncOp>(loc, baseName, funcType);
auto funcOp = moduleBuilder.create<func::FuncOp>(loc, baseName, funcType);
funcOp.setVisibility(SymbolTable::Visibility::Public);

// Mark the function as being a dispatch benchmark.
Expand Down
2 changes: 0 additions & 2 deletions iree/compiler/Dialect/Stream/IR/StreamOps.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,6 @@ static ParseResult parseResourceRegion(
}
}
return parser.parseRegion(body, regionArgs, operandTypes,
/*argLocations=*/{},
/*enableNameShadowing=*/false);
}

Expand Down Expand Up @@ -358,7 +357,6 @@ static ParseResult parseExplicitResourceRegion(
}
}
if (failed(parser.parseRegion(body, regionArgs, operandTypes,
/*argLocations=*/{},
/*enableNameShadowing=*/false))) {
return failure();
}
Expand Down
3 changes: 2 additions & 1 deletion iree/compiler/Utils/PassUtils.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@ namespace iree_compiler {
/// Constructs a pipeline of passes across multiple nested op types.
///
/// Usage:
/// using FunctionLikeNest = MultiOpNest<FuncOp, IREE::Util::InitializerOp>;
/// using FunctionLikeNest = MultiOpNest<func::FuncOp,
/// IREE::Util::InitializerOp>;
///
/// FunctionLikeNest(passManager)
/// .addPass(createMyPass)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1440,13 +1440,11 @@ ParseResult TileOp::parse(OpAsmParser &parser, OperationState &result) {
if (succeeded(parser.parseOptionalKeyword("outs"))) {
bool _1;
SmallVector<NamedAttrList> _2;
SmallVector<Location> _3;
outputsOperandsLoc = parser.getCurrentLocation();
if (mlir::function_interface_impl::parseFunctionArgumentList(
parser,
/*allowAttributes=*/false,
/*allowVariadic=*/false, outsOperands, outsTypes, /*argAttrs=*/_2,
/*argLocations=*/_3,
/*isVariadic=*/_1) ||
parser.resolveOperands(outsOperands, outsTypes, outputsOperandsLoc,
result.operands))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ struct LinalgExtToLoopsPass
};
} // namespace

std::unique_ptr<OperationPass<FuncOp>>
std::unique_ptr<OperationPass<func::FuncOp>>
IREE::LinalgExt::createLinalgExtToLoopsPass() {
return std::make_unique<LinalgExtToLoopsPass>();
}
Original file line number Diff line number Diff line change
Expand Up @@ -281,7 +281,7 @@ static Value buildFlowWorkgroupInfoOp(OpBuilder &b, unsigned dim) {
}

void TiledOpInterfaceTilingPass::runOnOperation() {
FuncOp funcOp = getOperation();
func::FuncOp funcOp = getOperation();
MLIRContext *context = funcOp.getContext();

RewritePatternSet patterns(context);
Expand Down Expand Up @@ -360,7 +360,7 @@ void TiledOpInterfaceTilingPass::runOnOperation() {
}
}

std::unique_ptr<OperationPass<FuncOp>>
std::unique_ptr<OperationPass<func::FuncOp>>
IREE::LinalgExt::createTiledOpInterfaceTilingPass() {
return std::make_unique<TiledOpInterfaceTilingPass>();
}
Loading

0 comments on commit a7b981d

Please sign in to comment.