aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/firrtl/passes/CommonSubexpressionElimination.scala
diff options
context:
space:
mode:
authorchick2020-08-14 19:47:53 -0700
committerJack Koenig2020-08-14 19:47:53 -0700
commit6fc742bfaf5ee508a34189400a1a7dbffe3f1cac (patch)
tree2ed103ee80b0fba613c88a66af854ae9952610ce /src/main/scala/firrtl/passes/CommonSubexpressionElimination.scala
parentb516293f703c4de86397862fee1897aded2ae140 (diff)
All of src/ formatted with scalafmt
Diffstat (limited to 'src/main/scala/firrtl/passes/CommonSubexpressionElimination.scala')
-rw-r--r--src/main/scala/firrtl/passes/CommonSubexpressionElimination.scala37
1 files changed, 20 insertions, 17 deletions
diff --git a/src/main/scala/firrtl/passes/CommonSubexpressionElimination.scala b/src/main/scala/firrtl/passes/CommonSubexpressionElimination.scala
index 544f90a6..55a9c53a 100644
--- a/src/main/scala/firrtl/passes/CommonSubexpressionElimination.scala
+++ b/src/main/scala/firrtl/passes/CommonSubexpressionElimination.scala
@@ -10,15 +10,16 @@ import firrtl.options.Dependency
object CommonSubexpressionElimination extends Pass {
override def prerequisites = firrtl.stage.Forms.LowForm ++
- Seq( Dependency(firrtl.passes.RemoveValidIf),
- Dependency[firrtl.transforms.ConstantPropagation],
- Dependency(firrtl.passes.memlib.VerilogMemDelays),
- Dependency(firrtl.passes.SplitExpressions),
- Dependency[firrtl.transforms.CombineCats] )
+ Seq(
+ Dependency(firrtl.passes.RemoveValidIf),
+ Dependency[firrtl.transforms.ConstantPropagation],
+ Dependency(firrtl.passes.memlib.VerilogMemDelays),
+ Dependency(firrtl.passes.SplitExpressions),
+ Dependency[firrtl.transforms.CombineCats]
+ )
override def optionalPrerequisiteOf =
- Seq( Dependency[SystemVerilogEmitter],
- Dependency[VerilogEmitter] )
+ Seq(Dependency[SystemVerilogEmitter], Dependency[VerilogEmitter])
override def invalidates(a: Transform) = false
@@ -27,24 +28,26 @@ object CommonSubexpressionElimination extends Pass {
val nodes = collection.mutable.HashMap[String, Expression]()
def eliminateNodeRef(e: Expression): Expression = e match {
- case WRef(name, tpe, kind, flow) => nodes get name match {
- case Some(expression) => expressions get expression match {
- case Some(cseName) if cseName != name =>
- WRef(cseName, tpe, kind, flow)
+ case WRef(name, tpe, kind, flow) =>
+ nodes.get(name) match {
+ case Some(expression) =>
+ expressions.get(expression) match {
+ case Some(cseName) if cseName != name =>
+ WRef(cseName, tpe, kind, flow)
+ case _ => e
+ }
case _ => e
}
- case _ => e
- }
- case _ => e map eliminateNodeRef
+ case _ => e.map(eliminateNodeRef)
}
def eliminateNodeRefs(s: Statement): Statement = {
- s map eliminateNodeRef match {
+ s.map(eliminateNodeRef) match {
case x: DefNode =>
nodes(x.name) = x.value
expressions.getOrElseUpdate(x.value, x.name)
x
- case other => other map eliminateNodeRefs
+ case other => other.map(eliminateNodeRefs)
}
}
@@ -54,7 +57,7 @@ object CommonSubexpressionElimination extends Pass {
def run(c: Circuit): Circuit = {
val modulesx = c.modules.map {
case m: ExtModule => m
- case m: Module => Module(m.info, m.name, m.ports, cse(m.body))
+ case m: Module => Module(m.info, m.name, m.ports, cse(m.body))
}
Circuit(c.info, modulesx, c.main)
}