diff --git a/tests/filecheck/dialects/memref/memref_ops.mlir b/tests/filecheck/dialects/memref/memref_ops.mlir index f5695f1c94..e480f40c15 100644 --- a/tests/filecheck/dialects/memref/memref_ops.mlir +++ b/tests/filecheck/dialects/memref/memref_ops.mlir @@ -44,7 +44,7 @@ builtin.module { %fmemref = "test.op"() : () -> memref<32x32xf32> %e = "test.op"() : () -> f32 %207 = "memref.atomic_rmw"(%e, %fmemref, %1, %1) <{kind = 0 : i64}> : (f32, memref<32x32xf32>, index, index) -> f32 - + %p = "memref.to_ptr"(%0) : (memref<1xindex>) -> !ptr.ptr func.return } } @@ -95,6 +95,7 @@ builtin.module { // CHECK-NEXT: %{{.*}} = "test.op"() : () -> memref<32x32xf32> // CHECK-NEXT: %{{.*}} = "test.op"() : () -> f32 // CHECK-NEXT: %{{.*}} = "memref.atomic_rmw"(%{{.*}}, %{{.*}}, %{{.*}}, %{{.*}}) <{"kind" = 0 : i64}> : (f32, memref<32x32xf32>, index, index) -> f32 +// CHECK-NEXT: %p = memref.to_ptr %0 : memref<1xindex> -> !ptr.ptr // CHECK-NEXT: func.return // CHECK-NEXT: } // CHECK-NEXT: } diff --git a/xdsl/dialects/memref.py b/xdsl/dialects/memref.py index 7a235f5a19..0abaa86175 100644 --- a/xdsl/dialects/memref.py +++ b/xdsl/dialects/memref.py @@ -30,6 +30,7 @@ i32, i64, ) +from xdsl.dialects.ptr import PtrType from xdsl.dialects.utils import ( parse_dynamic_index_list_without_types, print_dynamic_index_list, @@ -1079,6 +1080,16 @@ def verify_(self) -> None: ) +@irdl_op_definition +class ToPtrOp(IRDLOperation): + name = "memref.to_ptr" + + source = operand_def(MemRefType) + res = result_def(PtrType) + + assembly_format = "$source attr-dict `:` type($source) `->` type($res)" + + MemRef = Dialect( "memref", [ @@ -1103,6 +1114,7 @@ def verify_(self) -> None: MemorySpaceCast, DmaStartOp, DmaWaitOp, + ToPtrOp, ], [], )