aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorDonggyu2017-03-09 17:29:45 -0800
committerAdam Izraelevitz2017-03-09 17:29:45 -0800
commite571ef88f7f69b2374fa9ba86e219523645213c6 (patch)
treec47192c502e5d7a39143f8244a9d6423ef16abd5 /src/main
parent664d5b33094b7158bb6f8a583a89d83ac69be83e (diff)
make sure infer-rw works for exclusive when statements (#481)
Diffstat (limited to 'src/main')
-rw-r--r--src/main/scala/firrtl/passes/memlib/InferReadWrite.scala3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/main/scala/firrtl/passes/memlib/InferReadWrite.scala b/src/main/scala/firrtl/passes/memlib/InferReadWrite.scala
index b941503f..9bd6a4ab 100644
--- a/src/main/scala/firrtl/passes/memlib/InferReadWrite.scala
+++ b/src/main/scala/firrtl/passes/memlib/InferReadWrite.scala
@@ -39,8 +39,11 @@ object InferReadWritePass extends Pass {
def getProductTerms(connects: Connects)(e: Expression): Seq[Expression] = e match {
// No ConstProp yet...
+ // TODO: do const prop before
case Mux(cond, tval, fval, _) if weq(tval, one) && weq(fval, zero) =>
getProductTerms(connects)(cond)
+ case Mux(cond, tval, fval, _) if weq(fval, zero) =>
+ getProductTerms(connects)(cond) ++ getProductTerms(connects)(tval)
// Visit each term of AND operation
case DoPrim(op, args, consts, tpe) if op == And =>
e +: (args flatMap getProductTerms(connects))