[MLIR] Add support for bare pointer calling convention in gpu-to-llvm
authorUday Bondhugula <uday@polymagelabs.com>
Sat, 17 Jun 2023 17:13:43 +0000 (22:43 +0530)
committerUday Bondhugula <uday@polymagelabs.com>
Sat, 17 Jun 2023 17:57:13 +0000 (23:27 +0530)
Add support for the bare pointer calling convention in the gpu-to-llvm
pass. This wasn't being exposed and is needed when GPU-compiled MLIR is
to be called with this convention.

Reviewed By: krzysz00

Differential Revision: https://reviews.llvm.org/D152477

mlir/include/mlir/Conversion/Passes.td
mlir/lib/Conversion/GPUCommon/GPUToLLVMConversion.cpp

index 7a6c6c7..a76aad8 100644 (file)
@@ -361,6 +361,10 @@ def GpuToLLVMConversionPass : Pass<"gpu-to-llvm", "ModuleOp"> {
   }];
 
   let options = [
+    Option<"hostBarePtrCallConv", "use-bare-pointers-for-host", "bool",
+           /*default=*/"false",
+           "Use bare pointers to pass memref arguments to host functions. "
+           "All memrefs must have static shape.">,
     Option<"kernelBarePtrCallConv", "use-bare-pointers-for-kernels", "bool",
            /*default=*/"false",
              "Use bare pointers to pass memref arguments to kernels. "
index 8e922f5..05800ab 100644 (file)
@@ -716,6 +716,7 @@ private:
 void GpuToLLVMConversionPass::runOnOperation() {
   LowerToLLVMOptions options(&getContext());
   options.useOpaquePointers = useOpaquePointers;
+  options.useBarePtrCallConv = hostBarePtrCallConv;
 
   LLVMTypeConverter converter(&getContext(), options);
   RewritePatternSet patterns(&getContext());