[Mlir-commits] [mlir] [MLIR][XeVM] Rewrite llvm.alloca if addr_space is not 0 (PR #183417)

Artem Kroviakov llvmlistbot at llvm.org
Thu Feb 26 04:12:37 PST 2026


================
@@ -836,6 +838,46 @@ class SubgroupOpWorkitemOpToOCLPattern : public OpConversionPattern<OpType> {
   }
 };
 
+static unsigned getNextGlobalIdx() {
+  static unsigned globalIdx = 0;
+  return globalIdx++;
+}
+
+class AllocaToGlobalPattern : public OpConversionPattern<LLVM::AllocaOp> {
+  using OpConversionPattern::OpConversionPattern;
+  LogicalResult
+  matchAndRewrite(LLVM::AllocaOp op, LLVM::AllocaOp::Adaptor adaptor,
+                  ConversionPatternRewriter &rewriter) const override {
+    auto moduleOp = op->getParentOfType<ModuleOp>();
+    if (!moduleOp)
+      return failure();
+    auto ptrType = cast<LLVM::LLVMPointerType>(op.getType());
+    auto addrSpace = ptrType.getAddressSpace();
+    if (addrSpace != 3)
+      return failure();
+    auto val = op.getArraySize();
+    APInt cst;
+    if (!matchPattern(val, m_ConstantInt(&cst)))
+      return failure();
+    auto loc = op.getLoc();
+    auto globalType = LLVM::LLVMArrayType::get(
+        rewriter.getContext(), op.getElemType(), cst.getZExtValue());
+    auto saveIP = rewriter.saveInsertionPoint();
----------------
akroviakov wrote:

What about `PatternRewriter::InsertionGuard` instead of manual tracking?

https://github.com/llvm/llvm-project/pull/183417


More information about the Mlir-commits mailing list