diff options
| author | Jack Koenig | 2017-06-28 17:52:56 -0700 |
|---|---|---|
| committer | Jack Koenig | 2017-06-28 17:52:56 -0700 |
| commit | 39665e1f74cfe8243067442cccf4e7eab66ade68 (patch) | |
| tree | 8ba403e298c39bc6104f32a93754079dc458752a /src/main | |
| parent | 818cfde4ad42ffa9ee30d0f9ae72533ede80e4ce (diff) | |
Promote ConstProp to a transform
Diffstat (limited to 'src/main')
| -rw-r--r-- | src/main/scala/firrtl/LoweringCompilers.scala | 6 | ||||
| -rw-r--r-- | src/main/scala/firrtl/transforms/ConstantPropagation.scala (renamed from src/main/scala/firrtl/passes/ConstProp.scala) | 12 |
2 files changed, 13 insertions, 5 deletions
diff --git a/src/main/scala/firrtl/LoweringCompilers.scala b/src/main/scala/firrtl/LoweringCompilers.scala index 66ae1673..8dd9b180 100644 --- a/src/main/scala/firrtl/LoweringCompilers.scala +++ b/src/main/scala/firrtl/LoweringCompilers.scala @@ -98,12 +98,12 @@ class LowFirrtlOptimization extends CoreTransform { def outputForm = LowForm def transforms = Seq( passes.RemoveValidIf, - passes.ConstProp, + new firrtl.transforms.ConstantPropagation, passes.PadWidths, - passes.ConstProp, + new firrtl.transforms.ConstantPropagation, passes.Legalize, passes.memlib.VerilogMemDelays, // TODO move to Verilog emitter - passes.ConstProp, + new firrtl.transforms.ConstantPropagation, passes.SplitExpressions, passes.CommonSubexpressionElimination, new firrtl.transforms.DeadCodeElimination) diff --git a/src/main/scala/firrtl/passes/ConstProp.scala b/src/main/scala/firrtl/transforms/ConstantPropagation.scala index f2aa1a03..930fe45a 100644 --- a/src/main/scala/firrtl/passes/ConstProp.scala +++ b/src/main/scala/firrtl/transforms/ConstantPropagation.scala @@ -1,6 +1,7 @@ // See LICENSE for license details. -package firrtl.passes +package firrtl +package transforms import firrtl._ import firrtl.ir._ @@ -10,7 +11,10 @@ import firrtl.PrimOps._ import annotation.tailrec -object ConstProp extends Pass { +class ConstantPropagation extends Transform { + def inputForm = LowForm + def outputForm = LowForm + private def pad(e: Expression, t: Type) = (bitWidth(e.tpe), bitWidth(t)) match { case (we, wt) if we < wt => DoPrim(Pad, Seq(e), Seq(wt), t) case (we, wt) if we == wt => e @@ -292,4 +296,8 @@ object ConstProp extends Pass { } Circuit(c.info, modulesx, c.main) } + + def execute(state: CircuitState): CircuitState = { + state.copy(circuit = run(state.circuit)) + } } |
