[Mlir-commits] [mlir] [mlir][core|ptr] Add `PtrLikeTypeInterface` and casting ops to the `ptr` dialect (PR #137469)
Fabian Mora
llvmlistbot at llvm.org
Sun Apr 27 06:37:34 PDT 2025
================
@@ -41,6 +41,54 @@ void PtrDialect::initialize() {
>();
}
+//===----------------------------------------------------------------------===//
+// FromPtrOp
+//===----------------------------------------------------------------------===//
+
+OpFoldResult FromPtrOp::fold(FoldAdaptor adaptor) {
+ // Fold the pattern:
+ // %ptr = ptr.to_ptr %v : type -> ptr
+ // (%mda = ptr.get_metadata %v : type)?
+ // %val = ptr.from_ptr %ptr (metadata %mda)? : ptr -> type
+ // To:
+ // %val -> %v
+ auto toPtr = dyn_cast_or_null<ToPtrOp>(getPtr().getDefiningOp());
+ // Cannot fold if it's not a `to_ptr` op or the initial and final types are
+ // different.
----------------
fabianmcg wrote:
I added a couple of tests for testing the folding of chains, including the above one.
It's true that the folder has a local action. But when the whole IR gets canonicalized then everything gets folded out and the folding result is non-local.
I favored a shorter implementation, but I can switch it to traverse the whole chain at once.
https://github.com/llvm/llvm-project/pull/137469
More information about the Mlir-commits
mailing list