aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorAndrew Waterman2016-04-07 14:59:49 -0700
committerjackkoenig2016-04-21 20:48:47 -0700
commit584cd8313dbeb47e2a23b50169e02424b78ff784 (patch)
tree9d187101e779dfc819ef40f96641b72d1303154e /src/main
parentec32c852b57a42c7741f8ae27d59c21fcdb86a82 (diff)
Add Expression.tpe accessor
Almost all of the code was already there. This is cleaner (and faster) than calling tpe(Expression).
Diffstat (limited to 'src/main')
-rw-r--r--src/main/scala/firrtl/IR.scala12
-rw-r--r--src/main/scala/firrtl/WIR.scala4
2 files changed, 11 insertions, 5 deletions
diff --git a/src/main/scala/firrtl/IR.scala b/src/main/scala/firrtl/IR.scala
index 48b17549..4a941b85 100644
--- a/src/main/scala/firrtl/IR.scala
+++ b/src/main/scala/firrtl/IR.scala
@@ -89,15 +89,21 @@ case object BITS_SELECT_OP extends PrimOp
case object HEAD_OP extends PrimOp
case object TAIL_OP extends PrimOp
-trait Expression extends AST
+trait Expression extends AST {
+ def tpe: Type
+}
case class Ref(name: String, tpe: Type) extends Expression with HasName
case class SubField(exp: Expression, name: String, tpe: Type) extends Expression with HasName
case class SubIndex(exp: Expression, value: Int, tpe: Type) extends Expression
case class SubAccess(exp: Expression, index: Expression, tpe: Type) extends Expression
case class Mux(cond: Expression, tval: Expression, fval: Expression, tpe: Type) extends Expression
case class ValidIf(cond: Expression, value: Expression, tpe: Type) extends Expression
-case class UIntValue(value: BigInt, width: Width) extends Expression
-case class SIntValue(value: BigInt, width: Width) extends Expression
+case class UIntValue(value: BigInt, width: Width) extends Expression {
+ def tpe = UIntType(width)
+}
+case class SIntValue(value: BigInt, width: Width) extends Expression {
+ def tpe = SIntType(width)
+}
case class DoPrim(op: PrimOp, args: Seq[Expression], consts: Seq[BigInt], tpe: Type) extends Expression
trait Stmt extends AST
diff --git a/src/main/scala/firrtl/WIR.scala b/src/main/scala/firrtl/WIR.scala
index 05173f56..74ccabf4 100644
--- a/src/main/scala/firrtl/WIR.scala
+++ b/src/main/scala/firrtl/WIR.scala
@@ -53,8 +53,8 @@ case class WRef(name:String,tpe:Type,kind:Kind,gender:Gender) extends Expression
case class WSubField(exp:Expression,name:String,tpe:Type,gender:Gender) extends Expression
case class WSubIndex(exp:Expression,value:Int,tpe:Type,gender:Gender) extends Expression
case class WSubAccess(exp:Expression,index:Expression,tpe:Type,gender:Gender) extends Expression
-case class WVoid() extends Expression
-case class WInvalid() extends Expression
+case class WVoid() extends Expression { def tpe = UnknownType() }
+case class WInvalid() extends Expression { def tpe = UnknownType() }
case class WDefInstance(info:Info,name:String,module:String,tpe:Type) extends Stmt
case object ADDW_OP extends PrimOp