aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcr-kai.ma <kai.ma@corerain.com>2021-03-24 12:55:24 +0000
committercr-kai.ma <kai.ma@corerain.com>2021-03-24 12:55:24 +0000
commite8b5927cdcde7304e40eb4e61fb17bed88df77a4 (patch)
tree8ba0d3a62ccc65b2339de57f368225aec12edadf
parent[mlir][OpAsmFormat] Add support for an "else" group on optional elements (diff)
downloadllvm-project-e8b5927cdcde7304e40eb4e61fb17bed88df77a4.tar.gz
llvm-project-e8b5927cdcde7304e40eb4e61fb17bed88df77a4.tar.bz2
llvm-project-e8b5927cdcde7304e40eb4e61fb17bed88df77a4.zip
不知道为啥在最新的master分支上删掉了一个必要的函数,先加上然后等两周后同步看看改动再说
-rw-r--r--mlir/include/mlir/Conversion/GPUCommon/GPUCommonPass.h3
-rw-r--r--mlir/lib/Conversion/GPUCommon/GPUToLLVMConversion.cpp19
2 files changed, 22 insertions, 0 deletions
diff --git a/mlir/include/mlir/Conversion/GPUCommon/GPUCommonPass.h b/mlir/include/mlir/Conversion/GPUCommon/GPUCommonPass.h
index 708a3fe0b23e..42d06f301ad5 100644
--- a/mlir/include/mlir/Conversion/GPUCommon/GPUCommonPass.h
+++ b/mlir/include/mlir/Conversion/GPUCommon/GPUCommonPass.h
@@ -52,6 +52,9 @@ using LoweringCallback = std::function<std::unique_ptr<llvm::Module>(
/// typed ABI on top of GPU runtimes such as CUDA or ROCm (HIP).
std::unique_ptr<OperationPass<ModuleOp>> createGpuToLLVMConversionPass();
+void populateGpuToLLVMConversionPatterns(LLVMTypeConverter &converter,
+ OwningRewritePatternList &patterns);
+
} // namespace mlir
#endif // MLIR_CONVERSION_GPUCOMMON_GPUCOMMONPASS_H_
diff --git a/mlir/lib/Conversion/GPUCommon/GPUToLLVMConversion.cpp b/mlir/lib/Conversion/GPUCommon/GPUToLLVMConversion.cpp
index 81c939875953..e5adf778e098 100644
--- a/mlir/lib/Conversion/GPUCommon/GPUToLLVMConversion.cpp
+++ b/mlir/lib/Conversion/GPUCommon/GPUToLLVMConversion.cpp
@@ -798,3 +798,22 @@ std::unique_ptr<mlir::OperationPass<mlir::ModuleOp>>
mlir::createGpuToLLVMConversionPass() {
return std::make_unique<GpuToLLVMConversionPass>();
}
+
+void mlir::populateGpuToLLVMConversionPatterns(
+ LLVMTypeConverter &converter, OwningRewritePatternList &patterns) {
+ auto gpuBinaryAnnotation = gpu::getDefaultGpuBinaryAnnotation();
+ converter.addConversion(
+ [context = &converter.getContext()](gpu::AsyncTokenType type) -> Type {
+ return LLVM::LLVMPointerType::get(IntegerType::get(context, 8));
+ });
+ patterns.add<ConvertAllocOpToGpuRuntimeCallPattern,
+ ConvertDeallocOpToGpuRuntimeCallPattern,
+ ConvertHostRegisterOpToGpuRuntimeCallPattern,
+ ConvertMemcpyOpToGpuRuntimeCallPattern,
+ ConvertWaitAsyncOpToGpuRuntimeCallPattern,
+ ConvertWaitOpToGpuRuntimeCallPattern,
+ ConvertAsyncYieldToGpuRuntimeCallPattern>(converter);
+ patterns.add<ConvertLaunchFuncOpToGpuRuntimeCallPattern>(converter,
+ gpuBinaryAnnotation);
+ patterns.add<EraseGpuModuleOpPattern>(&converter.getContext());
+}