From be3908864706a90abbad388cd6cc90d42939d542 Mon Sep 17 00:00:00 2001 From: n-io Date: Fri, 11 Oct 2024 17:44:37 +0200 Subject: [PATCH 1/7] backend: (csl) Support array literals --- tests/filecheck/backend/csl/print_csl.mlir | 2 ++ xdsl/backend/csl/print_csl.py | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/tests/filecheck/backend/csl/print_csl.mlir b/tests/filecheck/backend/csl/print_csl.mlir index 88997b59bb..9bbfcdea4b 100644 --- a/tests/filecheck/backend/csl/print_csl.mlir +++ b/tests/filecheck/backend/csl/print_csl.mlir @@ -212,6 +212,8 @@ %global_array = memref.get_global @global_array : memref<10xf32> %const_array = memref.get_global @const_array : memref<10xi32> + %literal_array = arith.constant dense<[1.200000e+00, 2.300000e+00, 3.400000e+00]> : memref<3xf32> + %uninit_ptr = "csl.addressof"(%uninit_array) : (memref<10xf32>) -> !csl.ptr, #csl> %global_ptr = "csl.addressof"(%global_array) : (memref<10xf32>) -> !csl.ptr, #csl> %const_ptr = "csl.addressof"(%const_array) : (memref<10xi32>) -> !csl.ptr, #csl> diff --git a/xdsl/backend/csl/print_csl.py b/xdsl/backend/csl/print_csl.py index 0a0bfd92e2..943576f85a 100644 --- a/xdsl/backend/csl/print_csl.py +++ b/xdsl/backend/csl/print_csl.py @@ -447,6 +447,8 @@ def attribute_value_to_str(self, attr: Attribute) -> str: return str(val.data) case StringAttr() as s: return f'"{s.data}"' + case DenseIntOrFPElementsAttr(data=ArrayAttr(data=data), type=typ): + return f"{self.mlir_type_to_csl_type(typ)}{{{", ".join(str(d.value.data) for d in data)}}}" case _: return f"" @@ -514,6 +516,8 @@ def print_block(self, body: Block): op.results[0], self._binop_value_expr(op), brackets=True ) case arith.Constant(value=v, result=r): + if isinstance(v, DenseIntOrFPElementsAttr): + pass self._print_or_promote_to_inline_expr( r, self.attribute_value_to_str(v) ) From 93ea581a8d8a2f3afd92e0de6bd7d8ba0f34a256 Mon Sep 17 00:00:00 2001 From: n-io Date: Fri, 11 Oct 2024 17:46:50 +0200 Subject: [PATCH 2/7] remove debug code --- xdsl/backend/csl/print_csl.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/xdsl/backend/csl/print_csl.py b/xdsl/backend/csl/print_csl.py index 943576f85a..22b00b5177 100644 --- a/xdsl/backend/csl/print_csl.py +++ b/xdsl/backend/csl/print_csl.py @@ -516,8 +516,6 @@ def print_block(self, body: Block): op.results[0], self._binop_value_expr(op), brackets=True ) case arith.Constant(value=v, result=r): - if isinstance(v, DenseIntOrFPElementsAttr): - pass self._print_or_promote_to_inline_expr( r, self.attribute_value_to_str(v) ) From 6279a158941a85e1a947970c2ab2826214d9d964 Mon Sep 17 00:00:00 2001 From: n-io Date: Fri, 11 Oct 2024 17:47:51 +0200 Subject: [PATCH 3/7] fix filecheck --- tests/filecheck/backend/csl/print_csl.mlir | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/filecheck/backend/csl/print_csl.mlir b/tests/filecheck/backend/csl/print_csl.mlir index 9bbfcdea4b..29a07231f2 100644 --- a/tests/filecheck/backend/csl/print_csl.mlir +++ b/tests/filecheck/backend/csl/print_csl.mlir @@ -654,6 +654,7 @@ csl.func @builtins() { // CHECK-NEXT: var uninit_array : [10]f32; // CHECK-NEXT: var global_array : [10]f32 = @constants([10]f32, 4.2); // CHECK-NEXT: const const_array : [10]i32 = @constants([10]i32, 10); +// CHECK-NEXT: const literal_array : [3]f32 = [3]f32{1.2, 2.3, 3.4}; // CHECK-NEXT: var uninit_ptr : [*]f32 = &uninit_array; // CHECK-NEXT: var global_ptr : [*]f32 = &global_array; // CHECK-NEXT: const const_ptr : [*]const i32 = &const_array; From 73f00c9cbcb83a75f8c01ec8d9bb880b203844e8 Mon Sep 17 00:00:00 2001 From: n-io Date: Fri, 11 Oct 2024 17:57:03 +0200 Subject: [PATCH 4/7] fix --- xdsl/backend/csl/print_csl.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xdsl/backend/csl/print_csl.py b/xdsl/backend/csl/print_csl.py index 22b00b5177..0ce61ca141 100644 --- a/xdsl/backend/csl/print_csl.py +++ b/xdsl/backend/csl/print_csl.py @@ -448,7 +448,7 @@ def attribute_value_to_str(self, attr: Attribute) -> str: case StringAttr() as s: return f'"{s.data}"' case DenseIntOrFPElementsAttr(data=ArrayAttr(data=data), type=typ): - return f"{self.mlir_type_to_csl_type(typ)}{{{", ".join(str(d.value.data) for d in data)}}}" + return f"{self.mlir_type_to_csl_type(typ)}{{{", ".join(self.attribute_value_to_str(d) for d in data)}}}" case _: return f"" From eb52970d65f127aea9542d5f5207e5466896c515 Mon Sep 17 00:00:00 2001 From: n-io Date: Fri, 11 Oct 2024 18:03:49 +0200 Subject: [PATCH 5/7] filecheck fix? --- xdsl/backend/csl/print_csl.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xdsl/backend/csl/print_csl.py b/xdsl/backend/csl/print_csl.py index 0ce61ca141..ab6ab8b08a 100644 --- a/xdsl/backend/csl/print_csl.py +++ b/xdsl/backend/csl/print_csl.py @@ -448,7 +448,7 @@ def attribute_value_to_str(self, attr: Attribute) -> str: case StringAttr() as s: return f'"{s.data}"' case DenseIntOrFPElementsAttr(data=ArrayAttr(data=data), type=typ): - return f"{self.mlir_type_to_csl_type(typ)}{{{", ".join(self.attribute_value_to_str(d) for d in data)}}}" + return f"{self.mlir_type_to_csl_type(typ)}{{ {", ".join(self.attribute_value_to_str(d) for d in data)} }}" case _: return f"" From 30e268c85b5a058001a89d2e7d671c5c7df4ed11 Mon Sep 17 00:00:00 2001 From: n-io Date: Fri, 11 Oct 2024 18:04:56 +0200 Subject: [PATCH 6/7] filecheck fix? --- tests/filecheck/backend/csl/print_csl.mlir | 2 +- xdsl/backend/csl/print_csl.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/filecheck/backend/csl/print_csl.mlir b/tests/filecheck/backend/csl/print_csl.mlir index 29a07231f2..36af5b0b3a 100644 --- a/tests/filecheck/backend/csl/print_csl.mlir +++ b/tests/filecheck/backend/csl/print_csl.mlir @@ -654,7 +654,7 @@ csl.func @builtins() { // CHECK-NEXT: var uninit_array : [10]f32; // CHECK-NEXT: var global_array : [10]f32 = @constants([10]f32, 4.2); // CHECK-NEXT: const const_array : [10]i32 = @constants([10]i32, 10); -// CHECK-NEXT: const literal_array : [3]f32 = [3]f32{1.2, 2.3, 3.4}; +// CHECK-NEXT: const literal_array : [3]f32 = [3]f32 { 1.2, 2.3, 3.4 }; // CHECK-NEXT: var uninit_ptr : [*]f32 = &uninit_array; // CHECK-NEXT: var global_ptr : [*]f32 = &global_array; // CHECK-NEXT: const const_ptr : [*]const i32 = &const_array; diff --git a/xdsl/backend/csl/print_csl.py b/xdsl/backend/csl/print_csl.py index ab6ab8b08a..ed5661d0a9 100644 --- a/xdsl/backend/csl/print_csl.py +++ b/xdsl/backend/csl/print_csl.py @@ -448,7 +448,7 @@ def attribute_value_to_str(self, attr: Attribute) -> str: case StringAttr() as s: return f'"{s.data}"' case DenseIntOrFPElementsAttr(data=ArrayAttr(data=data), type=typ): - return f"{self.mlir_type_to_csl_type(typ)}{{ {", ".join(self.attribute_value_to_str(d) for d in data)} }}" + return f"{self.mlir_type_to_csl_type(typ)} {{ {", ".join(self.attribute_value_to_str(d) for d in data)} }}" case _: return f"" From 9bb814d9a43a6f84d06bcaac45b3d227dbd6f680 Mon Sep 17 00:00:00 2001 From: n-io Date: Fri, 11 Oct 2024 18:07:04 +0200 Subject: [PATCH 7/7] filecheck fix --- xdsl/backend/csl/print_csl.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xdsl/backend/csl/print_csl.py b/xdsl/backend/csl/print_csl.py index ed5661d0a9..4fcb58e9ca 100644 --- a/xdsl/backend/csl/print_csl.py +++ b/xdsl/backend/csl/print_csl.py @@ -448,7 +448,7 @@ def attribute_value_to_str(self, attr: Attribute) -> str: case StringAttr() as s: return f'"{s.data}"' case DenseIntOrFPElementsAttr(data=ArrayAttr(data=data), type=typ): - return f"{self.mlir_type_to_csl_type(typ)} {{ {", ".join(self.attribute_value_to_str(d) for d in data)} }}" + return f"{self.mlir_type_to_csl_type(typ)} {{ {', '.join(self.attribute_value_to_str(d) for d in data)} }}" case _: return f""