diff options
| author | Andrew Waterman | 2016-04-07 14:59:49 -0700 |
|---|---|---|
| committer | jackkoenig | 2016-04-21 20:48:47 -0700 |
| commit | 584cd8313dbeb47e2a23b50169e02424b78ff784 (patch) | |
| tree | 9d187101e779dfc819ef40f96641b72d1303154e | |
| parent | ec32c852b57a42c7741f8ae27d59c21fcdb86a82 (diff) | |
Add Expression.tpe accessor
Almost all of the code was already there. This is cleaner (and faster)
than calling tpe(Expression).
| -rw-r--r-- | src/main/scala/firrtl/IR.scala | 12 | ||||
| -rw-r--r-- | src/main/scala/firrtl/WIR.scala | 4 |
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 |
