Skip to content

Commit 2f17c9f

Browse files
authored
[MLIR][NVGPUToNVVM] Remove typed pointer support (llvm#70867)
This commit removes the support for lowering NVGPU to NVVM dialect with typed pointers. Typed pointers have been deprecated for a while now and it's planned to soon remove them from the LLVM dialect. Related PSA: https://discourse.llvm.org/t/psa-removal-of-typed-pointers-from-the-llvm-dialect/74502
1 parent 749083b commit 2f17c9f

File tree

4 files changed

+5
-80
lines changed

4 files changed

+5
-80
lines changed

mlir/include/mlir/Conversion/Passes.td

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -809,11 +809,6 @@ def ConvertNVGPUToNVVMPass : Pass<"convert-nvgpu-to-nvvm"> {
809809
let dependentDialects = [
810810
"NVVM::NVVMDialect",
811811
];
812-
let options = [
813-
Option<"useOpaquePointers", "use-opaque-pointers", "bool",
814-
/*default=*/"true", "Generate LLVM IR using opaque pointers "
815-
"instead of typed pointers">
816-
];
817812
}
818813

819814

mlir/lib/Conversion/NVGPUToNVVM/NVGPUToNVVM.cpp

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -402,7 +402,6 @@ struct ConvertNVGPUToNVVMPass
402402

403403
void runOnOperation() override {
404404
LowerToLLVMOptions options(&getContext());
405-
options.useOpaquePointers = useOpaquePointers;
406405
RewritePatternSet patterns(&getContext());
407406
LLVMTypeConverter converter(&getContext(), options);
408407
IRRewriter rewriter(&getContext());
@@ -451,7 +450,7 @@ struct ConvertNVGPUToNVVMPass
451450
nvgpu::getMBarrierMemrefType(rewriter.getContext(), type));
452451
});
453452
converter.addConversion([&](nvgpu::TensorMapDescriptorType type) -> Type {
454-
return converter.getPointerType(type.getTensor().getElementType());
453+
return LLVM::LLVMPointerType::get(type.getContext());
455454
});
456455
populateNVGPUToNVVMConversionPatterns(converter, patterns);
457456
LLVMConversionTarget target(getContext());
@@ -651,16 +650,11 @@ struct NVGPUAsyncCopyLowering
651650
Value dstPtr =
652651
getStridedElementPtr(b.getLoc(), dstMemrefType, adaptor.getDst(),
653652
adaptor.getDstIndices(), rewriter);
654-
auto i8Ty = IntegerType::get(op.getContext(), 8);
655653
FailureOr<unsigned> dstAddressSpace =
656654
getTypeConverter()->getMemRefAddressSpace(dstMemrefType);
657655
if (failed(dstAddressSpace))
658656
return rewriter.notifyMatchFailure(
659657
loc, "destination memref address space not convertible to integer");
660-
auto dstPointerType =
661-
getTypeConverter()->getPointerType(i8Ty, *dstAddressSpace);
662-
if (!getTypeConverter()->useOpaquePointers())
663-
dstPtr = b.create<LLVM::BitcastOp>(dstPointerType, dstPtr);
664658

665659
auto srcMemrefType = cast<MemRefType>(op.getSrc().getType());
666660
FailureOr<unsigned> srcAddressSpace =
@@ -671,13 +665,9 @@ struct NVGPUAsyncCopyLowering
671665

672666
Value scrPtr = getStridedElementPtr(loc, srcMemrefType, adaptor.getSrc(),
673667
adaptor.getSrcIndices(), rewriter);
674-
auto srcPointerType =
675-
getTypeConverter()->getPointerType(i8Ty, *srcAddressSpace);
676-
if (!getTypeConverter()->useOpaquePointers())
677-
scrPtr = b.create<LLVM::BitcastOp>(srcPointerType, scrPtr);
678668
// Intrinsics takes a global pointer so we need an address space cast.
679-
auto srcPointerGlobalType = getTypeConverter()->getPointerType(
680-
i8Ty, NVVM::NVVMMemorySpace::kGlobalMemorySpace);
669+
auto srcPointerGlobalType = LLVM::LLVMPointerType::get(
670+
op->getContext(), NVVM::NVVMMemorySpace::kGlobalMemorySpace);
681671
scrPtr = b.create<LLVM::AddrSpaceCastOp>(srcPointerGlobalType, scrPtr);
682672
int64_t dstElements = adaptor.getDstElements().getZExtValue();
683673
int64_t sizeInBytes =
@@ -1128,8 +1118,7 @@ struct NVGPUTmaCreateDescriptorOpLowering
11281118
matchAndRewrite(nvgpu::TmaCreateDescriptorOp op, OpAdaptor adaptor,
11291119
ConversionPatternRewriter &rewriter) const override {
11301120
ImplicitLocOpBuilder b(op->getLoc(), rewriter);
1131-
LLVM::LLVMPointerType llvmPointerType = getTypeConverter()->getPointerType(
1132-
IntegerType::get(op->getContext(), 8));
1121+
auto llvmPointerType = LLVM::LLVMPointerType::get(op->getContext());
11331122
Type llvmInt64Type = IntegerType::get(op->getContext(), 64);
11341123

11351124
Value tensorElementType =

mlir/test/Conversion/NVGPUToNVVM/nvgpu-to-nvvm.mlir

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: mlir-opt %s -convert-nvgpu-to-nvvm='use-opaque-pointers=1' | FileCheck %s
1+
// RUN: mlir-opt %s -convert-nvgpu-to-nvvm | FileCheck %s
22
// RUN: mlir-opt %s -transform-interpreter | FileCheck %s
33

44
// CHECK-LABEL: @m16n8k16_fp16

mlir/test/Conversion/NVGPUToNVVM/typed-pointers.mlir

Lines changed: 0 additions & 59 deletions
This file was deleted.

0 commit comments

Comments
 (0)