From b99334bcd4d2c1945d0390c9fd4e836569b0c933 Mon Sep 17 00:00:00 2001 From: Watermelon Wolverine <29666253+watermelonwolverine@users.noreply.github.com> Date: Thu, 30 Jan 2025 11:35:52 +0100 Subject: [PATCH] dialects: (builtin) Fix documentation for parsing of bools, and add conversion to Python bool (#3689) --- tests/dialects/test_builtin.py | 11 +++++++++++ xdsl/backend/csl/print_csl.py | 4 ++-- xdsl/dialects/builtin.py | 8 ++++++++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/tests/dialects/test_builtin.py b/tests/dialects/test_builtin.py index 0012e71f62..2636c9fab7 100644 --- a/tests/dialects/test_builtin.py +++ b/tests/dialects/test_builtin.py @@ -10,6 +10,7 @@ AnyVectorType, ArrayAttr, BFloat16Type, + BoolAttr, BytesAttr, ComplexType, DenseArrayBase, @@ -183,6 +184,16 @@ def test_IntegerAttr_normalize(): IntegerAttr(256, 8) +def test_IntAttr___bool__(): + assert not IntAttr(0) + assert IntAttr(1) + + +def test_BoolAttr___bool__(): + assert not BoolAttr.from_bool(False) + assert BoolAttr.from_bool(True) + + def test_IntegerType_packing(): # i1 nums_i1 = (0, 1, 0, 1) diff --git a/xdsl/backend/csl/print_csl.py b/xdsl/backend/csl/print_csl.py index 65b154d813..82929ae758 100644 --- a/xdsl/backend/csl/print_csl.py +++ b/xdsl/backend/csl/print_csl.py @@ -800,9 +800,9 @@ def print_block(self, body: Block): f" .{q_type}_queue = @get_{q_type}_queue({queue_id.value.data})," ) self.print(f" .fabric_color = {fabric_color},") - if wavelet_index_offset: + if wavelet_index_offset is not None: self.print(f" .wavelet_index_offset = {wavelet_index_offset},") - if control: + if control is not None: self.print(f" .control = {control},") self.print("}});") case csl.SetDsdBaseAddrOp( diff --git a/xdsl/dialects/builtin.py b/xdsl/dialects/builtin.py index 801910b296..63c889dc13 100644 --- a/xdsl/dialects/builtin.py +++ b/xdsl/dialects/builtin.py @@ -295,6 +295,10 @@ def print_parameter(self, printer: Printer) -> None: with printer.in_angle_brackets(): printer.print_string(f"{self.data}") + def __bool__(self) -> bool: + """Returns True if value is non-zero.""" + return bool(self.data) + class Signedness(Enum): "Signedness semantics for integer" @@ -713,6 +717,10 @@ def constr( ), ) + def __bool__(self) -> bool: + """Returns True if value is non-zero.""" + return bool(self.value) + @staticmethod def iter_unpack( type: _IntegerAttrTypeInvT, buffer: ReadableBuffer, /