brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · 4ade414 Raw
42 lines · cpp
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-exception6//7//===----------------------------------------------------------------------===//8 9#include "mlir/Dialect/Transform/IR/TransformDialect.h"10#include "mlir/Dialect/Transform/Transforms/Passes.h"11#include "mlir/Dialect/Transform/Transforms/TransformInterpreterUtils.h"12 13using namespace mlir;14 15namespace mlir {16namespace transform {17#define GEN_PASS_DEF_PRELOADLIBRARYPASS18#include "mlir/Dialect/Transform/Transforms/Passes.h.inc"19} // namespace transform20} // namespace mlir21 22namespace {23class PreloadLibraryPass24    : public transform::impl::PreloadLibraryPassBase<PreloadLibraryPass> {25public:26  using Base::Base;27 28  void runOnOperation() override {29    OwningOpRef<ModuleOp> mergedParsedLibraries;30    if (failed(transform::detail::assembleTransformLibraryFromPaths(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} // namespace42