From 9725f01cfe80eddb73b1b39e9f4c9ce87c9dbacf Mon Sep 17 00:00:00 2001 From: "Shahneous Bari, Md Abdullah" Date: Thu, 28 Aug 2025 18:28:02 +0000 Subject: [PATCH] [GPUToSPIRV] Add all SPIR-V patterns to `convert-gpu-to-spirv` pass. This allows for one-shot SPIR-V conversion like `convert-to-llvm`. --- .../lib/Conversion/GPUToSPIRV/GPUToSPIRVPass.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/mlir/lib/Conversion/GPUToSPIRV/GPUToSPIRVPass.cpp b/mlir/lib/Conversion/GPUToSPIRV/GPUToSPIRVPass.cpp index 5eab05742d401..a96a01cf51ead 100644 --- a/mlir/lib/Conversion/GPUToSPIRV/GPUToSPIRVPass.cpp +++ b/mlir/lib/Conversion/GPUToSPIRV/GPUToSPIRVPass.cpp @@ -12,12 +12,17 @@ //===----------------------------------------------------------------------===// #include "mlir/Conversion/GPUToSPIRV/GPUToSPIRVPass.h" - #include "mlir/Conversion/ArithToSPIRV/ArithToSPIRV.h" +#include "mlir/Conversion/ComplexToSPIRV/ComplexToSPIRV.h" +#include "mlir/Conversion/ControlFlowToSPIRV/ControlFlowToSPIRV.h" #include "mlir/Conversion/FuncToSPIRV/FuncToSPIRV.h" #include "mlir/Conversion/GPUToSPIRV/GPUToSPIRV.h" +#include "mlir/Conversion/IndexToSPIRV/IndexToSPIRV.h" +#include "mlir/Conversion/MathToSPIRV/MathToSPIRV.h" #include "mlir/Conversion/MemRefToSPIRV/MemRefToSPIRV.h" #include "mlir/Conversion/SCFToSPIRV/SCFToSPIRV.h" +#include "mlir/Conversion/TensorToSPIRV/TensorToSPIRV.h" +#include "mlir/Conversion/UBToSPIRV/UBToSPIRV.h" #include "mlir/Conversion/VectorToSPIRV/VectorToSPIRV.h" #include "mlir/Dialect/Func/IR/FuncOps.h" #include "mlir/Dialect/GPU/IR/GPUDialect.h" @@ -159,6 +164,15 @@ void GPUToSPIRVPass::runOnOperation() { populateFuncToSPIRVPatterns(typeConverter, patterns); populateVectorToSPIRVPatterns(typeConverter, patterns); + mlir::populateBuiltinFuncToSPIRVPatterns(typeConverter, patterns); + mlir::populateComplexToSPIRVPatterns(typeConverter, patterns); + mlir::cf::populateControlFlowToSPIRVPatterns(typeConverter, patterns); + mlir::index::populateIndexToSPIRVPatterns(typeConverter, patterns); + mlir::populateMathToSPIRVPatterns(typeConverter, patterns); + mlir::populateTensorToSPIRVPatterns(typeConverter, + /*byteCountThreshold=*/64, patterns); + mlir::ub::populateUBToSPIRVConversionPatterns(typeConverter, patterns); + if (failed(applyFullConversion(gpuModule, *target, std::move(patterns)))) return signalPassFailure(); }