| // Copyright 2024 The IREE Authors | |
| // | |
| // Licensed 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 | |
| #include "iree/compiler/Codegen/Dialect/Codegen/IR/IREECodegenDialect.h" | |
| #include "iree/compiler/Codegen/Dialect/GPU/IR/IREEGPUDialect.h" | |
| #include "iree/compiler/Codegen/LLVMGPU/ROCDLKernelConfig.h" | |
| #include "iree/compiler/Codegen/LLVMGPU/ROCDLPasses.h" | |
| #include "mlir/Dialect/Bufferization/IR/Bufferization.h" | |
| #include "mlir/Pass/Pass.h" | |
| namespace mlir::iree_compiler { | |
| #define GEN_PASS_DEF_ROCDLSELECTLOWERINGSTRATEGYPASS | |
| #include "iree/compiler/Codegen/LLVMGPU/ROCDLPasses.h.inc" | |
| namespace { | |
| /// Selects a strategy for lowering an IREE hal.executable.variant to ROCDL. | |
| class ROCDLSelectLoweringStrategyPass final | |
| : public impl::ROCDLSelectLoweringStrategyPassBase< | |
| ROCDLSelectLoweringStrategyPass> { | |
| public: | |
| void getDependentDialects(DialectRegistry ®istry) const override { | |
| registry | |
| .insert<IREE::Codegen::IREECodegenDialect, IREE::GPU::IREEGPUDialect, | |
| bufferization::BufferizationDialect>(); | |
| } | |
| void runOnOperation() override { | |
| auto moduleOp = getOperation(); | |
| for (auto funcOp : moduleOp.getOps<FunctionOpInterface>()) { | |
| if (failed(initROCDLLaunchConfig(funcOp))) { | |
| funcOp.emitOpError("failed to set configuration"); | |
| return signalPassFailure(); | |
| } | |
| } | |
| } | |
| }; | |
| } // namespace | |
| } // namespace mlir::iree_compiler |