diff options
| author | Jack | 2016-05-09 23:55:47 -0700 |
|---|---|---|
| committer | Jack Koenig | 2016-06-10 16:33:01 -0700 |
| commit | c1504e2179e509632fa8d9ab44d87191b46cf851 (patch) | |
| tree | 80e520a1b193590c3ae84e5b6bf81728c840ab85 /src/main/scala/firrtl/IR.scala | |
| parent | 26e33c343332c2f65bb45bc17b40a9cb7d22e2fd (diff) | |
API Cleanup - Expression
trait Expression -> abstract class Expression
Ref -> Reference
abbrev. exp -> expr
Add abstract class Literal
UIntValue -> UIntLiteral extends Literal
SIntValue -> SIntLiteral extends Literal
Diffstat (limited to 'src/main/scala/firrtl/IR.scala')
| -rw-r--r-- | src/main/scala/firrtl/IR.scala | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/src/main/scala/firrtl/IR.scala b/src/main/scala/firrtl/IR.scala index 8bd8192b..840fef03 100644 --- a/src/main/scala/firrtl/IR.scala +++ b/src/main/scala/firrtl/IR.scala @@ -92,19 +92,23 @@ case object BITS_SELECT_OP extends PrimOp case object HEAD_OP extends PrimOp case object TAIL_OP extends PrimOp -trait Expression extends AST { +abstract class 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 Reference(name: String, tpe: Type) extends Expression with HasName +case class SubField(expr: Expression, name: String, tpe: Type) extends Expression with HasName +case class SubIndex(expr: Expression, value: Int, tpe: Type) extends Expression +case class SubAccess(expr: 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 { +abstract class Literal extends Expression { + val value: BigInt + val width: Width +} +case class UIntLiteral(value: BigInt, width: Width) extends Literal { def tpe = UIntType(width) } -case class SIntValue(value: BigInt, width: Width) extends Expression { +case class SIntLiteral(value: BigInt, width: Width) extends Literal { def tpe = SIntType(width) } case class DoPrim(op: PrimOp, args: Seq[Expression], consts: Seq[BigInt], tpe: Type) extends Expression |
