MLIR  19.0.0git
PreloadLibraryPass.cpp
Go to the documentation of this file.
1 //===- PreloadLibraryPass.cpp - Pass to preload a transform library -------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
12 
13 using namespace mlir;
14 
15 namespace mlir {
16 namespace transform {
17 #define GEN_PASS_DEF_PRELOADLIBRARYPASS
18 #include "mlir/Dialect/Transform/Transforms/Passes.h.inc"
19 } // namespace transform
20 } // namespace mlir
21 
22 namespace {
23 class PreloadLibraryPass
24  : public transform::impl::PreloadLibraryPassBase<PreloadLibraryPass> {
25 public:
26  using Base::Base;
27 
28  void runOnOperation() override {
29  OwningOpRef<ModuleOp> mergedParsedLibraries;
31  &getContext(), transformLibraryPaths, mergedParsedLibraries)))
32  return signalPassFailure();
33  // TODO: investigate using a resource blob if some ownership mode allows it.
34  auto *dialect =
35  getContext().getOrLoadDialect<transform::TransformDialect>();
36  if (failed(
37  dialect->loadIntoLibraryModule(std::move(mergedParsedLibraries))))
38  signalPassFailure();
39  }
40 };
41 } // namespace
static MLIRContext * getContext(OpFoldResult val)
T * getOrLoadDialect()
Get (or create) a dialect for the given derived dialect type.
Definition: MLIRContext.h:97
LogicalResult assembleTransformLibraryFromPaths(MLIRContext *context, ArrayRef< std::string > transformLibraryPaths, OwningOpRef< ModuleOp > &transformModule)
Utility to parse, verify, aggregate and link the content of all mlir files nested under transformLibr...
Include the generated interface declarations.
bool failed(LogicalResult result)
Utility function that returns true if the provided LogicalResult corresponds to a failure value.
Definition: LogicalResult.h:72