1//===- Passes.h - Pass Entrypoints ------------------------------*- C++ -*-===//
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//
9// This header file defines utility functions exposed by the GPU dialect
10//
11//===----------------------------------------------------------------------===//
12
13#ifndef MLIR_DIALECT_GPU_TRANSFORMS_UTILS_H_
14#define MLIR_DIALECT_GPU_TRANSFORMS_UTILS_H_
15
16#include "mlir/Dialect/GPU/IR/GPUDialect.h"
17#include "mlir/Dialect/Vector/IR/VectorOps.h"
18#include "mlir/Support/LLVM.h"
19
20#include <string>
21
22namespace mlir {
23class Operation;
24class Value;
25
26namespace gpu {
27class GPUFuncOp;
28class LaunchOp;
29
30/// Returns the matching vector combining kind.
31vector::CombiningKind convertReductionKind(gpu::AllReduceOperation mode);
32} // namespace gpu
33
34/// Get a gpu.func created from outlining the region of a gpu.launch op with the
35/// given `kernelFnName`. The region of the `launchOp` can use values from
36/// above. These need to be captured and passed as arguments to the generated
37/// gpu.func. The generated function has arguments
38/// - corresponding to the values passed in as `operands`, in that order.
39/// - any additional values that might be used within the region of the
40/// `launchOp` and defined above it. These captured values are appended to the
41/// `operands` list.
42gpu::GPUFuncOp outlineKernelFunc(gpu::LaunchOp launchOp, StringRef kernelFnName,
43 SmallVectorImpl<Value> &operands);
44
45/// Sink operations into the `launchOp` to reduce the number of values that are
46/// used within the region of the operation, but defined outside of the
47/// region.
48LogicalResult sinkOperationsIntoLaunchOp(
49 gpu::LaunchOp launchOp,
50 llvm::function_ref<bool(Operation *)> isSinkingBeneficiary);
51
52} // namespace mlir
53#endif // MLIR_DIALECT_GPU_TRANSFORMS_UTILS_H_
54

Provided by KDAB

Privacy Policy
Learn to use CMake with our Intro Training
Find out more

source code of mlir/include/mlir/Dialect/GPU/Utils/GPUUtils.h