aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorAdam Izraelevitz2016-10-31 17:05:08 -0700
committerGitHub2016-10-31 17:05:08 -0700
commita399dc8afe1de04266bbe08108d067ca84089511 (patch)
tree6ac3cb30ff24b88b3aca62b7ed66e02415c91176 /src/main
parent77f55128e55c0f5511c609d2cb4f7fa2cd0aa427 (diff)
Fixed Verilog emission of andr, orr, and xorr (#357)
Fixed Verilog emission reduce ops with efficient implementation
Diffstat (limited to 'src/main')
-rw-r--r--src/main/scala/firrtl/Emitter.scala9
1 files changed, 3 insertions, 6 deletions
diff --git a/src/main/scala/firrtl/Emitter.scala b/src/main/scala/firrtl/Emitter.scala
index 5a4420c6..7b198149 100644
--- a/src/main/scala/firrtl/Emitter.scala
+++ b/src/main/scala/firrtl/Emitter.scala
@@ -223,12 +223,9 @@ class VerilogEmitter extends Emitter {
case And => Seq(cast_as(a0), " & ", cast_as(a1))
case Or => Seq(cast_as(a0), " | ", cast_as(a1))
case Xor => Seq(cast_as(a0), " ^ ", cast_as(a1))
- case Andr => (0 until bitWidth(doprim.tpe).toInt) map (
- Seq(cast(a0), "[", _, "]")) reduce (_ + " & " + _)
- case Orr => (0 until bitWidth(doprim.tpe).toInt) map (
- Seq(cast(a0), "[", _, "]")) reduce (_ + " | " + _)
- case Xorr => (0 until bitWidth(doprim.tpe).toInt) map (
- Seq(cast(a0), "[", _, "]")) reduce (_ + " ^ " + _)
+ case Andr => Seq("&", cast(a0))
+ case Orr => Seq("|", cast(a0))
+ case Xorr => Seq("^", cast(a0))
case Cat => Seq("{", cast(a0), ",", cast(a1), "}")
// If selecting zeroth bit and single-bit wire, just emit the wire
case Bits if c0 == 0 && c1 == 0 && bitWidth(a0.tpe) == BigInt(1) => Seq(a0)