From b4b57d66ee00c81e922146e0c0b9ba1019e24353 Mon Sep 17 00:00:00 2001 From: Alex Cameron Date: Sat, 21 Feb 2026 01:22:31 +0900 Subject: [PATCH] fix(conversion): lower shared S@/S! to NVVM shared address space --- lib/Conversion/ForthToMemRef/ForthToMemRef.cpp | 4 +++- test/Conversion/ForthToMemRef/memory-ops.mlir | 8 ++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/Conversion/ForthToMemRef/ForthToMemRef.cpp b/lib/Conversion/ForthToMemRef/ForthToMemRef.cpp index 7932c87..c53fc07 100644 --- a/lib/Conversion/ForthToMemRef/ForthToMemRef.cpp +++ b/lib/Conversion/ForthToMemRef/ForthToMemRef.cpp @@ -11,6 +11,7 @@ #include "mlir/Dialect/Func/Transforms/FuncConversions.h" #include "mlir/Dialect/GPU/IR/GPUDialect.h" #include "mlir/Dialect/LLVMIR/LLVMDialect.h" +#include "mlir/Dialect/LLVMIR/NVVMDialect.h" #include "mlir/Dialect/MemRef/IR/MemRef.h" #include "mlir/IR/BuiltinTypes.h" #include "mlir/IR/PatternMatch.h" @@ -28,8 +29,9 @@ namespace { // Stack configuration constants constexpr int64_t kStackSize = 256; +// NVPTX shared memory address space for LLVM ptr types. constexpr unsigned kWorkgroupAddressSpace = - static_cast(gpu::AddressSpace::Workgroup); + static_cast(NVVM::kSharedMemorySpace); /// Type converter for forth.stack -> memref + index class ForthToMemRefTypeConverter : public TypeConverter { diff --git a/test/Conversion/ForthToMemRef/memory-ops.mlir b/test/Conversion/ForthToMemRef/memory-ops.mlir index d4965ef..aa7e1d2 100644 --- a/test/Conversion/ForthToMemRef/memory-ops.mlir +++ b/test/Conversion/ForthToMemRef/memory-ops.mlir @@ -16,12 +16,12 @@ // CHECK: llvm.store %{{.*}}, %{{.*}} : i64, !llvm.ptr // shared load (S@): pop address, inttoptr shared addrspace, llvm.load -// CHECK: llvm.inttoptr %{{.*}} : i64 to !llvm.ptr<{{[1-9][0-9]*}}> -// CHECK: llvm.load %{{.*}} : !llvm.ptr<{{[1-9][0-9]*}}> -> i64 +// CHECK: llvm.inttoptr %{{.*}} : i64 to !llvm.ptr<3> +// CHECK: llvm.load %{{.*}} : !llvm.ptr<3> -> i64 // shared store (S!): pop address + value, inttoptr shared addrspace, llvm.store -// CHECK: llvm.inttoptr %{{.*}} : i64 to !llvm.ptr<{{[1-9][0-9]*}}> -// CHECK: llvm.store %{{.*}}, %{{.*}} : i64, !llvm.ptr<{{[1-9][0-9]*}}> +// CHECK: llvm.inttoptr %{{.*}} : i64 to !llvm.ptr<3> +// CHECK: llvm.store %{{.*}}, %{{.*}} : i64, !llvm.ptr<3> module { func.func private @main() {