//===------------------ 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 mlir-spirv-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(); 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 mlir-spirv-cpu-runner.", buildTestSPIRVCPURunnerPipeline); } } // namespace test } // namespace mlir