Skip to content

[FIRRTL][enumcreate] textual IR prints attributes but can't read back #7389

Open
@dtzSiFive

Description

Consider this input:

firrtl.circuit "MatchTest" {
  firrtl.module @MatchTest(in %i: !firrtl.enum<Some: uint<8>, None: uint<0>>) attributes {convention = #firrtl<convention scalarized>} {
    %c0_ui8 = firrtl.constant 0 : !firrtl.const.uint<8>
    %0 = firrtl.enumcreate Some(%c0_ui8) : (!firrtl.const.uint<8>) -> !firrtl.enum<Some: uint<8>, None: uint<0>>
    %some = firrtl.node interesting_name %0 : !firrtl.enum<Some: uint<8>, None: uint<0>>
    %c0_ui0 = firrtl.constant 0 : !firrtl.const.uint<0>
    %1 = firrtl.enumcreate None(%c0_ui0) : (!firrtl.const.uint<0>) -> !firrtl.enum<Some: uint<8>, None: uint<0>>
    %none = firrtl.node interesting_name %1 : !firrtl.enum<Some: uint<8>, None: uint<0>>
  }
}

Fed through this pipeline:

circt-opt --no-implicit-module -p 'firrtl.circuit(firrtl.module(firrtl-lower-matches,firrtl-expand-whens,firrtl-drop-names,canonicalize))' match-test-name.mlir

Produces:

firrtl.circuit "MatchTest" {
  firrtl.module @MatchTest(in %i: !firrtl.enum<Some: uint<8>, None: uint<0>>) attributes {convention = #firrtl<convention scalarized>} {
    %c0_ui0 = firrtl.constant 0 : !firrtl.const.uint<0>
    %c0_ui8 = firrtl.constant 0 : !firrtl.const.uint<8>
    %0 = firrtl.enumcreate Some(%c0_ui8) attributes {name = "some"} : (!firrtl.const.uint<8>) -> !firrtl.enum<Some: uint<8>, None: uint<0>>
    %1 = firrtl.enumcreate None(%c0_ui0) attributes {name = "none"} : (!firrtl.const.uint<0>) -> !firrtl.enum<Some: uint<8>, None: uint<0>>
  }
}

(names from nodes to go their inputs, cc #7064, I think so that we give nicer names should these becomes name-able things, but regardless)

This IR can't be parsed, failure at attributes:

<stdin>:5:41: error: expected ':'
    %0 = firrtl.enumcreate Some(%c0_ui8) attributes {name = "some"} : (!firrtl.const.uint<8>) -> !firrtl.enum<Some: uint<8>, None: uint<0>>

Metadata

Assignees

No one assigned

    Labels

    FIRRTLInvolving the `firrtl` dialectbugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions