Skip to content

Dimension list

dimension_list

DimensionList dataclass

Bases: CustomDirective

Custom directive for parsing/printing dimension list.

These look like (e.g.) 3x?x5x2, or [] to denote empty

Source code in xdsl/dialects/utils/dimension_list.py
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
@irdl_custom_directive
class DimensionList(CustomDirective):
    """
    Custom directive for parsing/printing dimension list.

    These look like (e.g.) 3x?x5x2, or [] to denote empty
    """

    dimensions: AttributeVariable

    def parse(self, parser: Parser, state: ParsingState) -> bool:
        dims = []

        if not parse_empty_dimension_list_directive(parser):
            dims = parser.parse_dimension_list()

        self.dimensions.set(state, DenseArrayBase[I64].from_list(i64, dims))

        return True

    def print(self, printer: Printer, state: PrintingState, op: IRDLOperation) -> None:
        state.print_whitespace(printer)

        dims = self.dimensions.get(op)
        assert isa(dims, DenseArrayBase[IntegerType])
        values = dims.get_values()

        if not values:
            print_empty_dimension_list_directive(printer)
            return

        printer.print_dimension_list(values)

dimensions: AttributeVariable instance-attribute

parse(parser: Parser, state: ParsingState) -> bool

Source code in xdsl/dialects/utils/dimension_list.py
37
38
39
40
41
42
43
44
45
def parse(self, parser: Parser, state: ParsingState) -> bool:
    dims = []

    if not parse_empty_dimension_list_directive(parser):
        dims = parser.parse_dimension_list()

    self.dimensions.set(state, DenseArrayBase[I64].from_list(i64, dims))

    return True

print(printer: Printer, state: PrintingState, op: IRDLOperation) -> None

Source code in xdsl/dialects/utils/dimension_list.py
47
48
49
50
51
52
53
54
55
56
57
58
def print(self, printer: Printer, state: PrintingState, op: IRDLOperation) -> None:
    state.print_whitespace(printer)

    dims = self.dimensions.get(op)
    assert isa(dims, DenseArrayBase[IntegerType])
    values = dims.get_values()

    if not values:
        print_empty_dimension_list_directive(printer)
        return

    printer.print_dimension_list(values)

parse_empty_dimension_list_directive(parser: Parser) -> bool

Source code in xdsl/dialects/utils/dimension_list.py
15
16
17
18
19
20
def parse_empty_dimension_list_directive(parser: Parser) -> bool:
    if parser.parse_optional_characters("["):
        parser.parse_characters("]")
        return True

    return False

print_empty_dimension_list_directive(printer: Printer) -> None

Source code in xdsl/dialects/utils/dimension_list.py
23
24
def print_empty_dimension_list_directive(printer: Printer) -> None:
    printer.print_string("[]")