Changeset View
Changeset View
Standalone View
Standalone View
mlir/tools/mlir-vulkan-runner/mlir-vulkan-runner.cpp
Show All 13 Lines | |||||
#include "mlir/Conversion/GPUToSPIRV/ConvertGPUToSPIRVPass.h" | #include "mlir/Conversion/GPUToSPIRV/ConvertGPUToSPIRVPass.h" | ||||
#include "mlir/Conversion/GPUToVulkan/ConvertGPUToVulkanPass.h" | #include "mlir/Conversion/GPUToVulkan/ConvertGPUToVulkanPass.h" | ||||
#include "mlir/Conversion/StandardToLLVM/ConvertStandardToLLVMPass.h" | #include "mlir/Conversion/StandardToLLVM/ConvertStandardToLLVMPass.h" | ||||
#include "mlir/Conversion/StandardToSPIRV/ConvertStandardToSPIRVPass.h" | #include "mlir/Conversion/StandardToSPIRV/ConvertStandardToSPIRVPass.h" | ||||
#include "mlir/Dialect/GPU/Passes.h" | #include "mlir/Dialect/GPU/Passes.h" | ||||
#include "mlir/Dialect/SPIRV/Passes.h" | #include "mlir/Dialect/SPIRV/Passes.h" | ||||
#include "mlir/Dialect/SPIRV/SPIRVOps.h" | #include "mlir/Dialect/SPIRV/SPIRVOps.h" | ||||
#include "mlir/ExecutionEngine/OptUtils.h" | |||||
#include "mlir/InitAllDialects.h" | |||||
#include "mlir/Pass/Pass.h" | #include "mlir/Pass/Pass.h" | ||||
#include "mlir/Pass/PassManager.h" | #include "mlir/Pass/PassManager.h" | ||||
#include "mlir/Support/JitRunner.h" | #include "mlir/Support/JitRunner.h" | ||||
#include "llvm/Support/InitLLVM.h" | |||||
#include "llvm/Support/TargetSelect.h" | |||||
using namespace mlir; | using namespace mlir; | ||||
static LogicalResult runMLIRPasses(ModuleOp module) { | static LogicalResult runMLIRPasses(ModuleOp module) { | ||||
PassManager passManager(module.getContext()); | PassManager passManager(module.getContext()); | ||||
applyPassManagerCLOptions(passManager); | applyPassManagerCLOptions(passManager); | ||||
passManager.addPass(createGpuKernelOutliningPass()); | passManager.addPass(createGpuKernelOutliningPass()); | ||||
passManager.addPass(createLegalizeStdOpsForSPIRVLoweringPass()); | passManager.addPass(createLegalizeStdOpsForSPIRVLoweringPass()); | ||||
passManager.addPass(createConvertGPUToSPIRVPass()); | passManager.addPass(createConvertGPUToSPIRVPass()); | ||||
OpPassManager &modulePM = passManager.nest<spirv::ModuleOp>(); | OpPassManager &modulePM = passManager.nest<spirv::ModuleOp>(); | ||||
modulePM.addPass(spirv::createLowerABIAttributesPass()); | modulePM.addPass(spirv::createLowerABIAttributesPass()); | ||||
passManager.addPass(createConvertGpuLaunchFuncToVulkanCallsPass()); | passManager.addPass(createConvertGpuLaunchFuncToVulkanCallsPass()); | ||||
passManager.addPass(createLowerToLLVMPass()); | passManager.addPass(createLowerToLLVMPass()); | ||||
return passManager.run(module); | return passManager.run(module); | ||||
} | } | ||||
int main(int argc, char **argv) { | int main(int argc, char **argv) { | ||||
llvm::llvm_shutdown_obj x; | llvm::llvm_shutdown_obj x; | ||||
registerPassManagerCLOptions(); | registerPassManagerCLOptions(); | ||||
mlir::registerAllDialects(); | |||||
llvm::InitLLVM y(argc, argv); | |||||
llvm::InitializeNativeTarget(); | |||||
llvm::InitializeNativeTargetAsmPrinter(); | |||||
mlir::initializeLLVMPasses(); | |||||
return mlir::JitRunnerMain(argc, argv, &runMLIRPasses); | return mlir::JitRunnerMain(argc, argv, &runMLIRPasses); | ||||
} | } |