| //===------------------ TestSPIRVCPURunnerPipeline.cpp --------------------===// |
| // |
| // 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 |
| // |
| //===----------------------------------------------------------------------===// |
| // |
| // Implements a pipeline for use by SPIR-V CPU Runner tests. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #include "mlir/Conversion/GPUToSPIRV/GPUToSPIRVPass.h" |
| #include "mlir/Conversion/SPIRVToLLVM/SPIRVToLLVMPass.h" |
| #include "mlir/Dialect/GPU/Transforms/Passes.h" |
| #include "mlir/Dialect/SPIRV/IR/SPIRVOps.h" |
| #include "mlir/Dialect/SPIRV/Transforms/Passes.h" |
| #include "mlir/Pass/PassManager.h" |
| |
| using namespace mlir; |
| |
| namespace { |
| |
| void buildTestSPIRVCPURunnerPipeline(OpPassManager &passManager) { |
| passManager.addPass(createGpuKernelOutliningPass()); |
| passManager.addPass(createConvertGPUToSPIRVPass(/*mapMemorySpace=*/true)); |
| |
| OpPassManager &nestedPM = passManager.nest<spirv::ModuleOp>(); |
| nestedPM.addPass(spirv::createSPIRVLowerABIAttributesPass()); |
| nestedPM.addPass(spirv::createSPIRVUpdateVCEPass()); |
| passManager.addPass(createLowerHostCodeToLLVMPass()); |
| passManager.addPass(createConvertSPIRVToLLVMPass()); |
| } |
| |
| } // namespace |
| |
| namespace mlir { |
| namespace test { |
| void registerTestSPIRVCPURunnerPipeline() { |
| PassPipelineRegistration<>( |
| "test-spirv-cpu-runner-pipeline", |
| "Runs a series of passes for lowering SPIR-V-dialect MLIR to " |
| "LLVM-dialect MLIR intended for SPIR-V CPU Runner tests.", |
| buildTestSPIRVCPURunnerPipeline); |
| } |
| } // namespace test |
| } // namespace mlir |