[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