51 lines
1.5 KiB
C++
51 lines
1.5 KiB
C++
//===- PassDetail.h - Async Pass class details ------------------*- C++ -*-===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef DIALECT_ASYNC_TRANSFORMS_PASSDETAIL_H_
|
|
#define DIALECT_ASYNC_TRANSFORMS_PASSDETAIL_H_
|
|
|
|
#include "mlir/IR/BuiltinOps.h"
|
|
#include "mlir/IR/Dialect.h"
|
|
#include "mlir/Pass/Pass.h"
|
|
|
|
namespace mlir {
|
|
|
|
namespace arith {
|
|
class ArithDialect;
|
|
} // namespace arith
|
|
|
|
namespace async {
|
|
class AsyncDialect;
|
|
} // namespace async
|
|
|
|
namespace scf {
|
|
class SCFDialect;
|
|
} // namespace scf
|
|
|
|
// -------------------------------------------------------------------------- //
|
|
// Utility functions shared by Async Transformations.
|
|
// -------------------------------------------------------------------------- //
|
|
|
|
// Forward declarations.
|
|
class OpBuilder;
|
|
|
|
namespace async {
|
|
|
|
/// Clone ConstantLike operations that are defined above the given region and
|
|
/// have users in the region into the region entry block. We do that to reduce
|
|
/// the number of function arguments when we outline `async.execute` and
|
|
/// `scf.parallel` operations body into functions.
|
|
void cloneConstantsIntoTheRegion(Region ®ion);
|
|
void cloneConstantsIntoTheRegion(Region ®ion, OpBuilder &builder);
|
|
|
|
} // namespace async
|
|
|
|
} // namespace mlir
|
|
|
|
#endif // DIALECT_ASYNC_TRANSFORMS_PASSDETAIL_H_
|