From 24d87b4ac70bdbac7dc41ad2546908932d3ff39c Mon Sep 17 00:00:00 2001 From: PragmaTwice Date: Wed, 25 Jun 2025 17:34:07 +0800 Subject: [PATCH] [MLIR] Replace get(Void/Int)PtrType with getPtrType in ConvertToLLVMPattern --- mlir/include/mlir/Conversion/LLVMCommon/Pattern.h | 4 ++++ mlir/lib/Conversion/LLVMCommon/Pattern.cpp | 9 ++++++--- mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp | 11 ++++------- .../lib/Conversion/FuncToLLVM/TestConvertCallOp.cpp | 2 +- 4 files changed, 15 insertions(+), 11 deletions(-) diff --git a/mlir/include/mlir/Conversion/LLVMCommon/Pattern.h b/mlir/include/mlir/Conversion/LLVMCommon/Pattern.h index 503a2a7e6f0cd..969154abe8830 100644 --- a/mlir/include/mlir/Conversion/LLVMCommon/Pattern.h +++ b/mlir/include/mlir/Conversion/LLVMCommon/Pattern.h @@ -113,8 +113,12 @@ class ConvertToLLVMPattern : public ConversionPattern { Type getVoidType() const; /// Get the MLIR type wrapping the LLVM i8* type. + [[deprecated("Use getPtrType() instead!")]] Type getVoidPtrType() const; + /// Get the MLIR type wrapping the LLVM ptr type. + Type getPtrType(unsigned addressSpace = 0) const; + /// Create a constant Op producing a value of `resultType` from an index-typed /// integer attribute. static Value createIndexAttrConstant(OpBuilder &builder, Location loc, diff --git a/mlir/lib/Conversion/LLVMCommon/Pattern.cpp b/mlir/lib/Conversion/LLVMCommon/Pattern.cpp index 86fb9166b7223..c5f72f7e10b8c 100644 --- a/mlir/lib/Conversion/LLVMCommon/Pattern.cpp +++ b/mlir/lib/Conversion/LLVMCommon/Pattern.cpp @@ -46,10 +46,13 @@ Type ConvertToLLVMPattern::getVoidType() const { return LLVM::LLVMVoidType::get(&getTypeConverter()->getContext()); } -Type ConvertToLLVMPattern::getVoidPtrType() const { - return LLVM::LLVMPointerType::get(&getTypeConverter()->getContext()); +Type ConvertToLLVMPattern::getPtrType(unsigned addressSpace) const { + return LLVM::LLVMPointerType::get(&getTypeConverter()->getContext(), + addressSpace); } +Type ConvertToLLVMPattern::getVoidPtrType() const { return getPtrType(); } + Value ConvertToLLVMPattern::createIndexAttrConstant(OpBuilder &builder, Location loc, Type resultType, @@ -273,7 +276,7 @@ LogicalResult ConvertToLLVMPattern::copyUnrankedDescriptors( ? builder .create(loc, mallocFunc.value(), allocationSize) .getResult() - : builder.create(loc, getVoidPtrType(), + : builder.create(loc, getPtrType(), IntegerType::get(getContext(), 8), allocationSize, /*alignment=*/0); diff --git a/mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp b/mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp index 4b7b2cc224ce2..7484e4b07390e 100644 --- a/mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp +++ b/mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp @@ -408,8 +408,7 @@ struct AllocaScopeOpLowering // Save stack and then branch into the body of the region. rewriter.setInsertionPointToEnd(currentBlock); - auto stackSaveOp = - rewriter.create(loc, getVoidPtrType()); + auto stackSaveOp = rewriter.create(loc, getPtrType()); rewriter.create(loc, ValueRange(), beforeBody); // Replace the alloca_scope return with a branch that jumps out of the body. @@ -1122,8 +1121,7 @@ class MemRefCopyOpLowering : public ConvertOpToLLVMPattern { }; // Save stack position before promoting descriptors - auto stackSaveOp = - rewriter.create(loc, getVoidPtrType()); + auto stackSaveOp = rewriter.create(loc, getPtrType()); auto srcMemRefType = dyn_cast(srcType); Value unrankedSource = @@ -1249,7 +1247,7 @@ struct MemorySpaceCastOpLowering result, resultAddrSpace, sizes); Value resultUnderlyingSize = sizes.front(); Value resultUnderlyingDesc = rewriter.create( - loc, getVoidPtrType(), rewriter.getI8Type(), resultUnderlyingSize); + loc, getPtrType(), rewriter.getI8Type(), resultUnderlyingSize); result.setMemRefDescPtr(rewriter, loc, resultUnderlyingDesc); // Copy pointers, performing address space casts. @@ -1530,8 +1528,7 @@ struct MemRefReshapeOpLowering UnrankedMemRefDescriptor::computeSizes(rewriter, loc, *getTypeConverter(), targetDesc, addressSpace, sizes); Value underlyingDescPtr = rewriter.create( - loc, getVoidPtrType(), IntegerType::get(getContext(), 8), - sizes.front()); + loc, getPtrType(), IntegerType::get(getContext(), 8), sizes.front()); targetDesc.setMemRefDescPtr(rewriter, loc, underlyingDescPtr); // Extract pointers and offset from the source memref. diff --git a/mlir/test/lib/Conversion/FuncToLLVM/TestConvertCallOp.cpp b/mlir/test/lib/Conversion/FuncToLLVM/TestConvertCallOp.cpp index f878a262512ee..3b29867cc3263 100644 --- a/mlir/test/lib/Conversion/FuncToLLVM/TestConvertCallOp.cpp +++ b/mlir/test/lib/Conversion/FuncToLLVM/TestConvertCallOp.cpp @@ -28,7 +28,7 @@ class TestTypeProducerOpConverter LogicalResult matchAndRewrite(test::TestTypeProducerOp op, OpAdaptor adaptor, ConversionPatternRewriter &rewriter) const override { - rewriter.replaceOpWithNewOp(op, getVoidPtrType()); + rewriter.replaceOpWithNewOp(op, getPtrType()); return success(); } };