defpackage firrtl.ir2 : import core import verse public definterface Direction public val INPUT = new Direction public val OUTPUT = new Direction definterface Gender public val MALE = new Gender public val FEMALE = new Gender public definterface Width public defstruct UnknownWidth <: Width public defstruct IntWidth <: Width : width: Int public defstruct PrimOp public val ADD-OP = PrimOp() public val ADD-UU-OP = PrimOp() public val ADD-US-OP = PrimOp() public val ADD-SU-OP = PrimOp() public val ADD-SS-OP = PrimOp() public val SUB-OP = PrimOp() public val SUB-UU-OP = PrimOp() public val SUB-US-OP = PrimOp() public val SUB-SU-OP = PrimOp() public val SUB-SS-OP = PrimOp() public val MUL-OP = PrimOp() public val MUL-UU-OP = PrimOp() public val MUL-US-OP = PrimOp() public val MUL-SU-OP = PrimOp() public val MUL-SS-OP = PrimOp() public val DIV-OP = PrimOp() public val DIV-UU-OP = PrimOp() public val DIV-US-OP = PrimOp() public val DIV-SU-OP = PrimOp() public val DIV-SS-OP = PrimOp() public val MOD-OP = PrimOp() public val MOD-UU-OP = PrimOp() public val MOD-US-OP = PrimOp() public val MOD-SU-OP = PrimOp() public val MOD-SS-OP = PrimOp() public val QUO-OP = PrimOp() public val QUO-UU-OP = PrimOp() public val QUO-US-OP = PrimOp() public val QUO-SU-OP = PrimOp() public val QUO-SS-OP = PrimOp() public val REM-OP = PrimOp() public val REM-UU-OP = PrimOp() public val REM-US-OP = PrimOp() public val REM-SU-OP = PrimOp() public val REM-SS-OP = PrimOp() public val ADD-WRAP-OP = PrimOp() public val ADD-WRAP-UU-OP = PrimOp() public val ADD-WRAP-US-OP = PrimOp() public val ADD-WRAP-SU-OP = PrimOp() public val ADD-WRAP-SS-OP = PrimOp() public val SUB-WRAP-OP = PrimOp() public val SUB-WRAP-UU-OP = PrimOp() public val SUB-WRAP-US-OP = PrimOp() public val SUB-WRAP-SU-OP = PrimOp() public val SUB-WRAP-SS-OP = PrimOp() public val LESS-OP = PrimOp() public val LESS-UU-OP = PrimOp() public val LESS-US-OP = PrimOp() public val LESS-SU-OP = PrimOp() public val LESS-SS-OP = PrimOp() public val LESS-EQ-OP = PrimOp() public val LESS-EQ-UU-OP = PrimOp() public val LESS-EQ-US-OP = PrimOp() public val LESS-EQ-SU-OP = PrimOp() public val LESS-EQ-SS-OP = PrimOp() public val GREATER-OP = PrimOp() public val GREATER-UU-OP = PrimOp() public val GREATER-US-OP = PrimOp() public val GREATER-SU-OP = PrimOp() public val GREATER-SS-OP = PrimOp() public val GREATER-EQ-OP = PrimOp() public val GREATER-EQ-UU-OP = PrimOp() public val GREATER-EQ-US-OP = PrimOp() public val GREATER-EQ-SU-OP = PrimOp() public val GREATER-EQ-SS-OP = PrimOp() public val EQUAL-OP = PrimOp() public val EQUAL-UU-OP = PrimOp() public val EQUAL-SS-OP = PrimOp() public val MUX-OP = PrimOp() public val MUX-UU-OP = PrimOp() public val MUX-SS-OP = PrimOp() public val PAD-OP = PrimOp() public val PAD-U-OP = PrimOp() public val PAD-S-OP = PrimOp() public val AS-UINT-OP = PrimOp() public val AS-UINT-U-OP = PrimOp() public val AS-UINT-S-OP = PrimOp() public val AS-SINT-OP = PrimOp() public val AS-SINT-U-OP = PrimOp() public val AS-SINT-S-OP = PrimOp() public val SHIFT-LEFT-OP = PrimOp() public val SHIFT-LEFT-U-OP = PrimOp() public val SHIFT-LEFT-S-OP = PrimOp() public val SHIFT-RIGHT-OP = PrimOp() public val SHIFT-RIGHT-U-OP = PrimOp() public val SHIFT-RIGHT-S-OP = PrimOp() public val CONVERT-OP = PrimOp() public val CONVERT-U-OP = PrimOp() public val CONVERT-S-OP = PrimOp() public val BIT-AND-OP = PrimOp() public val BIT-OR-OP = PrimOp() public val BIT-XOR-OP = PrimOp() public val CONCAT-OP = PrimOp() public val BIT-SELECT-OP = PrimOp() public val BITS-SELECT-OP = PrimOp() public definterface Expression public defmulti type (e:Expression) -> Type public defstruct Ref <: Expression : name: Symbol type: Type [multi => false] public defstruct Subfield <: Expression : exp: Expression name: Symbol type: Type [multi => false] public defstruct Index <: Expression : exp: Expression value: Int type: Type [multi => false] public defstruct UIntValue <: Expression : value: Int width: Width public defstruct SIntValue <: Expression : value: Int width: Width public defstruct DoPrim <: Expression : op: PrimOp args: List consts: List type: Type [multi => false] public defstruct ReadPort <: Expression : mem: Expression index: Expression type: Type [multi => false] public defstruct Null <: Expression public definterface Stmt public defstruct LetRec <: Stmt : entries: List> body: Stmt public defstruct DefWire <: Stmt : name: Symbol type: Type public defstruct DefRegister <: Stmt : name: Symbol type: Type public defstruct DefInstance <: Stmt : name: Symbol module: Expression public defstruct DefMemory <: Stmt : name: Symbol type: VectorType public defstruct DefNode <: Stmt : name: Symbol value: Expression public defstruct DefAccessor <: Stmt : name: Symbol source: Expression index: Expression public defstruct Conditionally <: Stmt : pred: Expression conseq: Stmt alt: Stmt public defstruct Begin <: Stmt : body: List public defstruct Connect <: Stmt : loc: Expression exp: Expression public defstruct EmptyStmt <: Stmt public definterface Element public defmulti type (e:Element) -> Type public defstruct Register <: Element : type: Type [multi => false] value: Expression enable: Expression public defstruct Memory <: Element : type: Type [multi => false] writers: List public defstruct WritePort : index: Expression value: Expression enable: Expression public defstruct Node <: Element : type: Type [multi => false] value: Expression public defstruct Instance <: Element : type: Type [multi => false] module: Expression ports: List> public definterface Type public defstruct UIntType <: Type : width: Width public defstruct SIntType <: Type : width: Width public defstruct BundleType <: Type : ports: List public defstruct VectorType <: Type : type: Type size: Int public defstruct UnknownType <: Type public defstruct Field : name: Symbol gender: Gender type: Type public defstruct Port : name: Symbol direction: Direction type: Type public defstruct Module : name: Symbol ports: List body: Stmt public defstruct Circuit : modules: List main: Symbol