diff --git a/mlir/include/mlir/Conversion/Passes.td b/mlir/include/mlir/Conversion/Passes.td --- a/mlir/include/mlir/Conversion/Passes.td +++ b/mlir/include/mlir/Conversion/Passes.td @@ -361,6 +361,10 @@ }]; 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. " diff --git a/mlir/lib/Conversion/GPUCommon/GPUToLLVMConversion.cpp b/mlir/lib/Conversion/GPUCommon/GPUToLLVMConversion.cpp --- a/mlir/lib/Conversion/GPUCommon/GPUToLLVMConversion.cpp +++ b/mlir/lib/Conversion/GPUCommon/GPUToLLVMConversion.cpp @@ -741,6 +741,8 @@ void GpuToLLVMConversionPass::runOnOperation() { LowerToLLVMOptions options(&getContext()); options.useOpaquePointers = useOpaquePointers; + if (hostBarePtrCallConv) + options.useBarePtrCallConv = true; LLVMTypeConverter converter(&getContext(), options); RewritePatternSet patterns(&getContext());