summaryrefslogtreecommitdiff
path: root/chiselFrontend/src/main/scala
diff options
context:
space:
mode:
authorSchuyler Eldridge2018-08-14 11:39:28 -0400
committerSchuyler Eldridge2018-09-07 15:42:21 -0400
commit57e8774c34fc28dd34cdec5e8a1bf82f3cd4e0cd (patch)
tree6b5e4c1661e889706e50e937276a45277fc4f0a4 /chiselFrontend/src/main/scala
parentbe7927eeefde1a4616bc6762fab410931304ec6b (diff)
Put do_* methods in SourceInfoTransformMacro group
This places all do_* methods (and two unary methods in SInt and FixedPoint that act like do_* methods) inside the ScalaDoc group "SourceInfoTransformMacro". Classes/objects which need information about this group have an additional bare trait mixed in, `SourceInfoDoc`, that provides information about the group and its priority. Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
Diffstat (limited to 'chiselFrontend/src/main/scala')
-rw-r--r--chiselFrontend/src/main/scala/chisel3/core/Aggregate.scala19
-rw-r--r--chiselFrontend/src/main/scala/chisel3/core/Bits.scala113
-rw-r--r--chiselFrontend/src/main/scala/chisel3/core/Data.scala6
-rw-r--r--chiselFrontend/src/main/scala/chisel3/core/Mem.scala10
-rw-r--r--chiselFrontend/src/main/scala/chisel3/core/Module.scala4
-rw-r--r--chiselFrontend/src/main/scala/chisel3/core/Mux.scala4
-rw-r--r--chiselFrontend/src/main/scala/chisel3/core/SeqUtils.scala4
7 files changed, 141 insertions, 19 deletions
diff --git a/chiselFrontend/src/main/scala/chisel3/core/Aggregate.scala b/chiselFrontend/src/main/scala/chisel3/core/Aggregate.scala
index 235b1d5a..f47b33d9 100644
--- a/chiselFrontend/src/main/scala/chisel3/core/Aggregate.scala
+++ b/chiselFrontend/src/main/scala/chisel3/core/Aggregate.scala
@@ -10,6 +10,7 @@ import chisel3.internal._
import chisel3.internal.Builder.pushCommand
import chisel3.internal.firrtl._
import chisel3.internal.sourceinfo._
+import chisel3.SourceInfoDoc
/** An abstract class for data types that solely consist of (are an aggregate
* of) other Data objects.
@@ -97,7 +98,7 @@ sealed abstract class Aggregate extends Data {
}
}
-trait VecFactory {
+trait VecFactory extends SourceInfoDoc {
/** Creates a new [[Vec]] with `n` entries of the specified data type.
*
* @note elements are NOT assigned by default and have no value
@@ -209,6 +210,7 @@ sealed class Vec[T <: Data] private[core] (gen: => T, val length: Int)
*/
override def apply(p: UInt): T = macro CompileOptionsTransform.pArg
+ /** @group SourceInfoTransformMacro */
def do_apply(p: UInt)(implicit compileOptions: CompileOptions): T = {
requireIsHardware(p, "vec index")
val port = gen
@@ -259,7 +261,7 @@ sealed class Vec[T <: Data] private[core] (gen: => T, val length: Int)
}
}
-object VecInit {
+object VecInit extends SourceInfoDoc {
/** Creates a new [[Vec]] composed of elements of the input Seq of [[Data]]
* nodes.
*
@@ -271,6 +273,7 @@ object VecInit {
*/
def apply[T <: Data](elts: Seq[T]): Vec[T] = macro VecTransform.apply_elts
+ /** @group SourceInfoTransformMacro */
def do_apply[T <: Data](elts: Seq[T])(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Vec[T] = {
// REVIEW TODO: this should be removed in favor of the apply(elts: T*)
// varargs constructor, which is more in line with the style of the Scala
@@ -310,6 +313,7 @@ object VecInit {
*/
def apply[T <: Data](elt0: T, elts: T*): Vec[T] = macro VecTransform.apply_elt0
+ /** @group SourceInfoTransformMacro */
def do_apply[T <: Data](elt0: T, elts: T*)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Vec[T] =
apply(elt0 +: elts.toSeq)
@@ -323,6 +327,7 @@ object VecInit {
*/
def tabulate[T <: Data](n: Int)(gen: (Int) => T): Vec[T] = macro VecTransform.tabulate
+ /** @group SourceInfoTransformMacro */
def do_tabulate[T <: Data](n: Int)(gen: (Int) => T)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Vec[T] =
apply((0 until n).map(i => gen(i)))
}
@@ -330,9 +335,10 @@ object VecInit {
/** A trait for [[Vec]]s containing common hardware generators for collection
* operations.
*/
-trait VecLike[T <: Data] extends collection.IndexedSeq[T] with HasId {
+trait VecLike[T <: Data] extends collection.IndexedSeq[T] with HasId with SourceInfoDoc {
def apply(p: UInt): T = macro CompileOptionsTransform.pArg
+ /** @group SourceInfoTransformMacro */
def do_apply(p: UInt)(implicit compileOptions: CompileOptions): T
// IndexedSeq has its own hashCode/equals that we must not use
@@ -353,6 +359,7 @@ trait VecLike[T <: Data] extends collection.IndexedSeq[T] with HasId {
*/
def forall(p: T => Bool): Bool = macro SourceInfoTransform.pArg
+ /** @group SourceInfoTransformMacro */
def do_forall(p: T => Bool)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Bool =
(this map p).fold(true.B)(_ && _)
@@ -360,6 +367,7 @@ trait VecLike[T <: Data] extends collection.IndexedSeq[T] with HasId {
*/
def exists(p: T => Bool): Bool = macro SourceInfoTransform.pArg
+ /** @group SourceInfoTransformMacro */
def do_exists(p: T => Bool)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Bool =
(this map p).fold(false.B)(_ || _)
@@ -368,6 +376,7 @@ trait VecLike[T <: Data] extends collection.IndexedSeq[T] with HasId {
*/
def contains(x: T)(implicit ev: T <:< UInt): Bool = macro VecTransform.contains
+ /** @group SourceInfoTransformMacro */
def do_contains(x: T)(implicit sourceInfo: SourceInfo, ev: T <:< UInt, compileOptions: CompileOptions): Bool =
this.exists(_ === x)
@@ -375,6 +384,7 @@ trait VecLike[T <: Data] extends collection.IndexedSeq[T] with HasId {
*/
def count(p: T => Bool): UInt = macro SourceInfoTransform.pArg
+ /** @group SourceInfoTransformMacro */
def do_count(p: T => Bool)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): UInt =
SeqUtils.count(this map p)
@@ -387,6 +397,7 @@ trait VecLike[T <: Data] extends collection.IndexedSeq[T] with HasId {
*/
def indexWhere(p: T => Bool): UInt = macro SourceInfoTransform.pArg
+ /** @group SourceInfoTransformMacro */
def do_indexWhere(p: T => Bool)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): UInt =
SeqUtils.priorityMux(indexWhereHelper(p))
@@ -394,6 +405,7 @@ trait VecLike[T <: Data] extends collection.IndexedSeq[T] with HasId {
*/
def lastIndexWhere(p: T => Bool): UInt = macro SourceInfoTransform.pArg
+ /** @group SourceInfoTransformMacro */
def do_lastIndexWhere(p: T => Bool)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): UInt =
SeqUtils.priorityMux(indexWhereHelper(p).reverse)
@@ -409,6 +421,7 @@ trait VecLike[T <: Data] extends collection.IndexedSeq[T] with HasId {
*/
def onlyIndexWhere(p: T => Bool): UInt = macro SourceInfoTransform.pArg
+ /** @group SourceInfoTransformMacro */
def do_onlyIndexWhere(p: T => Bool)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): UInt =
SeqUtils.oneHotMux(indexWhereHelper(p))
}
diff --git a/chiselFrontend/src/main/scala/chisel3/core/Bits.scala b/chiselFrontend/src/main/scala/chisel3/core/Bits.scala
index 476764ee..053c20f2 100644
--- a/chiselFrontend/src/main/scala/chisel3/core/Bits.scala
+++ b/chiselFrontend/src/main/scala/chisel3/core/Bits.scala
@@ -54,6 +54,7 @@ private[chisel3] sealed trait ToBoolable extends Element {
*/
final def toBool(): Bool = macro SourceInfoWhiteboxTransform.noArg
+ /** @group SourceInfoTransformMacro */
def do_toBool(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Bool
}
@@ -104,6 +105,7 @@ sealed abstract class Bits(width: Width)
final def tail(n: Int): UInt = macro SourceInfoTransform.nArg
final def head(n: Int): UInt = macro SourceInfoTransform.nArg
+ /** @group SourceInfoTransformMacro */
def do_tail(n: Int)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): UInt = {
val w = width match {
case KnownWidth(x) =>
@@ -114,7 +116,7 @@ sealed abstract class Bits(width: Width)
binop(sourceInfo, UInt(width = w), TailOp, n)
}
-
+ /** @group SourceInfoTransformMacro */
def do_head(n: Int)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): UInt = {
width match {
case KnownWidth(x) => require(x >= n, s"Can't head($n) for width $x < $n")
@@ -128,6 +130,7 @@ sealed abstract class Bits(width: Width)
*/
final def apply(x: BigInt): Bool = macro SourceInfoTransform.xArg
+ /** @group SourceInfoTransformMacro */
final def do_apply(x: BigInt)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Bool = {
if (x < 0) {
Builder.error(s"Negative bit indices are illegal (got $x)")
@@ -149,6 +152,7 @@ sealed abstract class Bits(width: Width)
*/
final def apply(x: Int): Bool = macro SourceInfoTransform.xArg
+ /** @group SourceInfoTransformMacro */
final def do_apply(x: Int)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Bool = apply(BigInt(x))
/** Returns the specified bit on this wire as a [[Bool]], dynamically
@@ -156,6 +160,7 @@ sealed abstract class Bits(width: Width)
*/
final def apply(x: UInt): Bool = macro SourceInfoTransform.xArg
+ /** @group SourceInfoTransformMacro */
final def do_apply(x: UInt)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Bool = {
val theBits = this >> x
theBits(0)
@@ -172,6 +177,7 @@ sealed abstract class Bits(width: Width)
*/
final def apply(x: Int, y: Int): UInt = macro SourceInfoTransform.xyArg
+ /** @group SourceInfoTransformMacro */
final def do_apply(x: Int, y: Int)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): UInt = {
if (x < y || y < 0) {
Builder.error(s"Invalid bit range ($x,$y)")
@@ -190,6 +196,7 @@ sealed abstract class Bits(width: Width)
// REVIEW TODO: again, is this necessary? Or just have this and use implicits?
final def apply(x: BigInt, y: BigInt): UInt = macro SourceInfoTransform.xyArg
+ /** @group SourceInfoTransformMacro */
final def do_apply(x: BigInt, y: BigInt)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): UInt =
apply(x.toInt, y.toInt)
@@ -222,6 +229,7 @@ sealed abstract class Bits(width: Width)
*/
final def pad(that: Int): this.type = macro SourceInfoTransform.thatArg
+ /** @group SourceInfoTransformMacro */
def do_pad(that: Int)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): this.type = this.width match {
case KnownWidth(w) if w >= that => this
case _ => binop(sourceInfo, cloneTypeWidth(this.width max Width(that)), PadOp, that)
@@ -230,14 +238,15 @@ sealed abstract class Bits(width: Width)
/** Returns this wire bitwise-inverted. */
final def unary_~ (): Bits = macro SourceInfoWhiteboxTransform.noArg
+ /** @group SourceInfoTransformMacro */
def do_unary_~ (implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Bits
-
/** Shift left operation */
// REVIEW TODO: redundant
// REVIEW TODO: should these return this.type or Bits?
final def << (that: BigInt): Bits = macro SourceInfoWhiteboxTransform.thatArg
+ /** @group SourceInfoTransformMacro */
def do_<< (that: BigInt)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Bits
/** Returns this wire statically left shifted by the specified amount,
@@ -247,6 +256,7 @@ sealed abstract class Bits(width: Width)
*/
final def << (that: Int): Bits = macro SourceInfoWhiteboxTransform.thatArg
+ /** @group SourceInfoTransformMacro */
def do_<< (that: Int)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Bits
/** Returns this wire dynamically left shifted by the specified amount,
@@ -256,12 +266,14 @@ sealed abstract class Bits(width: Width)
*/
final def << (that: UInt): Bits = macro SourceInfoWhiteboxTransform.thatArg
+ /** @group SourceInfoTransformMacro */
def do_<< (that: UInt)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Bits
/** Shift right operation */
// REVIEW TODO: redundant
final def >> (that: BigInt): Bits = macro SourceInfoWhiteboxTransform.thatArg
+ /** @group SourceInfoTransformMacro */
def do_>> (that: BigInt)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Bits
/** Returns this wire statically right shifted by the specified amount,
@@ -271,6 +283,7 @@ sealed abstract class Bits(width: Width)
*/
final def >> (that: Int): Bits = macro SourceInfoWhiteboxTransform.thatArg
+ /** @group SourceInfoTransformMacro */
def do_>> (that: Int)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Bits
/** Returns this wire dynamically right shifted by the specified amount,
@@ -280,6 +293,7 @@ sealed abstract class Bits(width: Width)
*/
final def >> (that: UInt): Bits = macro SourceInfoWhiteboxTransform.thatArg
+ /** @group SourceInfoTransformMacro */
def do_>> (that: UInt)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Bits
/** Returns the contents of this wire as a [[Vec]] of [[Bool]]s.
@@ -296,6 +310,7 @@ sealed abstract class Bits(width: Width)
*/
final def asSInt(): SInt = macro SourceInfoTransform.noArg
+ /** @group SourceInfoTransformMacro */
def do_asSInt(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): SInt
/** Reinterpret cast as a FixedPoint.
@@ -306,6 +321,7 @@ sealed abstract class Bits(width: Width)
*/
final def asFixedPoint(that: BinaryPoint): FixedPoint = macro SourceInfoTransform.thatArg
+ /** @group SourceInfoTransformMacro */
def do_asFixedPoint(that: BinaryPoint)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): FixedPoint = {
throwException(s"Cannot call .asFixedPoint on $this")
}
@@ -346,6 +362,7 @@ sealed abstract class Bits(width: Width)
*/
final def ## (that: Bits): UInt = macro SourceInfoTransform.thatArg
+ /** @group SourceInfoTransformMacro */
def do_## (that: Bits)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): UInt = {
val w = this.width + that.width
pushOp(DefPrim(sourceInfo, UInt(w), ConcatOp, this.ref, that.ref))
@@ -382,6 +399,7 @@ abstract trait Num[T <: Data] {
*/
final def + (that: T): T = macro SourceInfoTransform.thatArg
+ /** @group SourceInfoTransformMacro */
def do_+ (that: T)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): T
/** Outputs the product of `this` and `b`. The resulting width is the sum of
@@ -392,6 +410,7 @@ abstract trait Num[T <: Data] {
*/
final def * (that: T): T = macro SourceInfoTransform.thatArg
+ /** @group SourceInfoTransformMacro */
def do_* (that: T)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): T
/** Outputs the quotient of `this` and `b`.
@@ -400,10 +419,12 @@ abstract trait Num[T <: Data] {
*/
final def / (that: T): T = macro SourceInfoTransform.thatArg
+ /** @group SourceInfoTransformMacro */
def do_/ (that: T)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): T
final def % (that: T): T = macro SourceInfoTransform.thatArg
+ /** @group SourceInfoTransformMacro */
def do_% (that: T)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): T
/** Outputs the difference of `this` and `b`. The resulting width is the max
@@ -411,34 +432,41 @@ abstract trait Num[T <: Data] {
*/
final def - (that: T): T = macro SourceInfoTransform.thatArg
+ /** @group SourceInfoTransformMacro */
def do_- (that: T)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): T
/** Outputs true if `this` < `b`.
*/
final def < (that: T): Bool = macro SourceInfoTransform.thatArg
+ /** @group SourceInfoTransformMacro */
def do_< (that: T)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Bool
/** Outputs true if `this` <= `b`.
*/
final def <= (that: T): Bool = macro SourceInfoTransform.thatArg
+ /** @group SourceInfoTransformMacro */
def do_<= (that: T)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Bool
/** Outputs true if `this` > `b`.
*/
final def > (that: T): Bool = macro SourceInfoTransform.thatArg
+ /** @group SourceInfoTransformMacro */
def do_> (that: T)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Bool
/** Outputs true if `this` >= `b`.
*/
final def >= (that: T): Bool = macro SourceInfoTransform.thatArg
+ /** @group SourceInfoTransformMacro */
def do_>= (that: T)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Bool
/** Outputs the absolute value of `this`. The resulting width is the unchanged */
final def abs(): T = macro SourceInfoTransform.noArg
+
+ /** @group SourceInfoTransformMacro */
def do_abs(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): T
/** Outputs the minimum of `this` and `b`. The resulting width is the max of
@@ -446,6 +474,7 @@ abstract trait Num[T <: Data] {
*/
final def min(that: T): T = macro SourceInfoTransform.thatArg
+ /** @group SourceInfoTransformMacro */
def do_min(that: T)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): T =
Mux(this < that, this.asInstanceOf[T], that)
@@ -454,6 +483,7 @@ abstract trait Num[T <: Data] {
*/
final def max(that: T): T = macro SourceInfoTransform.thatArg
+ /** @group SourceInfoTransformMacro */
def do_max(that: T)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): T =
Mux(this < that, that, this.asInstanceOf[T])
}
@@ -473,7 +503,9 @@ sealed class UInt private[core] (width: Width) extends Bits(width) with Num[UInt
final def unary_- (): UInt = macro SourceInfoTransform.noArg
final def unary_-% (): UInt = macro SourceInfoTransform.noArg
+ /** @group SourceInfoTransformMacro */
def do_unary_- (implicit sourceInfo: SourceInfo, compileOptions: CompileOptions) : UInt = 0.U - this
+ /** @group SourceInfoTransformMacro */
def do_unary_-% (implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): UInt = 0.U -% this
override def do_+ (that: UInt)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): UInt = this +% that
@@ -486,6 +518,7 @@ sealed class UInt private[core] (width: Width) extends Bits(width) with Num[UInt
binop(sourceInfo, UInt(this.width + that.width), TimesOp, that)
final def * (that: SInt): SInt = macro SourceInfoTransform.thatArg
+ /** @group SourceInfoTransformMacro */
def do_* (that: SInt)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): SInt = that * this
final def +& (that: UInt): UInt = macro SourceInfoTransform.thatArg
@@ -493,12 +526,16 @@ sealed class UInt private[core] (width: Width) extends Bits(width) with Num[UInt
final def -& (that: UInt): UInt = macro SourceInfoTransform.thatArg
final def -% (that: UInt): UInt = macro SourceInfoTransform.thatArg
+ /** @group SourceInfoTransformMacro */
def do_+& (that: UInt)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): UInt =
binop(sourceInfo, UInt((this.width max that.width) + 1), AddOp, that)
+ /** @group SourceInfoTransformMacro */
def do_+% (that: UInt)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): UInt =
(this +& that).tail(1)
+ /** @group SourceInfoTransformMacro */
def do_-& (that: UInt)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): UInt =
binop(sourceInfo, SInt((this.width max that.width) + 1), SubOp, that).asUInt
+ /** @group SourceInfoTransformMacro */
def do_-% (that: UInt)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): UInt =
(this -& that).tail(1)
@@ -506,17 +543,22 @@ sealed class UInt private[core] (width: Width) extends Bits(width) with Num[UInt
final def | (that: UInt): UInt = macro SourceInfoTransform.thatArg
final def ^ (that: UInt): UInt = macro SourceInfoTransform.thatArg
-// override def abs: UInt = macro SourceInfoTransform.noArg
+ // override def abs: UInt = macro SourceInfoTransform.noArg
def do_abs(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): UInt = this
+ /** @group SourceInfoTransformMacro */
def do_& (that: UInt)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): UInt =
binop(sourceInfo, UInt(this.width max that.width), BitAndOp, that)
+ /** @group SourceInfoTransformMacro */
def do_| (that: UInt)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): UInt =
binop(sourceInfo, UInt(this.width max that.width), BitOrOp, that)
+ /** @group SourceInfoTransformMacro */
def do_^ (that: UInt)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): UInt =
binop(sourceInfo, UInt(this.width max that.width), BitXorOp, that)
- /** Returns this wire bitwise-inverted. */
+ /** Returns this wire bitwise-inverted.
+ * @group SourceInfoTransformMacro
+ */
def do_unary_~ (implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): UInt =
unop(sourceInfo, UInt(width = width), BitNotOp)
@@ -525,8 +567,11 @@ sealed class UInt private[core] (width: Width) extends Bits(width) with Num[UInt
final def andR(): Bool = macro SourceInfoTransform.noArg
final def xorR(): Bool = macro SourceInfoTransform.noArg
+ /** @group SourceInfoTransformMacro */
def do_orR(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Bool = this =/= 0.U
+ /** @group SourceInfoTransformMacro */
def do_andR(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Bool = ~this === 0.U
+ /** @group SourceInfoTransformMacro */
def do_xorR(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Bool = redop(sourceInfo, XorReduceOp)
override def do_< (that: UInt)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Bool = compop(sourceInfo, LessOp, that)
@@ -540,11 +585,14 @@ sealed class UInt private[core] (width: Width) extends Bits(width) with Num[UInt
final def =/= (that: UInt): Bool = macro SourceInfoTransform.thatArg
final def === (that: UInt): Bool = macro SourceInfoTransform.thatArg
+ /** @group SourceInfoTransformMacro */
def do_=/= (that: UInt)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Bool = compop(sourceInfo, NotEqualOp, that)
+ /** @group SourceInfoTransformMacro */
def do_=== (that: UInt)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Bool = compop(sourceInfo, EqualOp, that)
final def unary_! () : Bool = macro SourceInfoTransform.noArg
+ /** @group SourceInfoTransformMacro */
def do_unary_! (implicit sourceInfo: SourceInfo, compileOptions: CompileOptions) : Bool = this === 0.U(1.W)
override def do_<< (that: Int)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): UInt =
@@ -562,6 +610,7 @@ sealed class UInt private[core] (width: Width) extends Bits(width) with Num[UInt
final def bitSet(off: UInt, dat: Bool): UInt = macro UIntTransform.bitset
+ /** @group SourceInfoTransformMacro */
def do_bitSet(off: UInt, dat: Bool)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): UInt = {
val bit = 1.U(1.W) << off
Mux(dat, this | bit, ~(~this | bit))
@@ -572,6 +621,7 @@ sealed class UInt private[core] (width: Width) extends Bits(width) with Num[UInt
// TODO: this eventually will be renamed as toSInt, once the existing toSInt
// completes its deprecation phase.
final def zext(): SInt = macro SourceInfoTransform.noArg
+ /** @group SourceInfoTransformMacro */
def do_zext(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): SInt =
pushOp(DefPrim(sourceInfo, SInt(width + 1), ConvertOp, ref))
@@ -637,7 +687,9 @@ sealed class SInt private[core] (width: Width) extends Bits(width) with Num[SInt
final def unary_- (): SInt = macro SourceInfoTransform.noArg
final def unary_-% (): SInt = macro SourceInfoTransform.noArg
+ /** @group SourceInfoTransformMacro */
def unary_- (implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): SInt = 0.S - this
+ /** @group SourceInfoTransformMacro */
def unary_-% (implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): SInt = 0.S -% this
/** add (default - no growth) operator */
@@ -654,27 +706,36 @@ sealed class SInt private[core] (width: Width) extends Bits(width) with Num[SInt
binop(sourceInfo, SInt(this.width), RemOp, that)
final def * (that: UInt): SInt = macro SourceInfoTransform.thatArg
+ /** @group SourceInfoTransformMacro */
def do_* (that: UInt)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): SInt = {
val thatToSInt = that.zext()
val result = binop(sourceInfo, SInt(this.width + thatToSInt.width), TimesOp, thatToSInt)
result.tail(1).asSInt
}
- /** add (width +1) operator */
+ /** add (width +1) operator
+ */
final def +& (that: SInt): SInt = macro SourceInfoTransform.thatArg
- /** add (no growth) operator */
+ /** add (no growth) operator
+ */
final def +% (that: SInt): SInt = macro SourceInfoTransform.thatArg
- /** subtract (width +1) operator */
+ /** subtract (width +1) operator
+ */
final def -& (that: SInt): SInt = macro SourceInfoTransform.thatArg
- /** subtract (no growth) operator */
+ /** subtract (no growth) operator
+ */
final def -% (that: SInt): SInt = macro SourceInfoTransform.thatArg
+ /** @group SourceInfoTransformMacro */
def do_+& (that: SInt)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): SInt =
binop(sourceInfo, SInt((this.width max that.width) + 1), AddOp, that)
+ /** @group SourceInfoTransformMacro */
def do_+% (that: SInt)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): SInt =
(this +& that).tail(1).asSInt
+ /** @group SourceInfoTransformMacro */
def do_-& (that: SInt)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): SInt =
binop(sourceInfo, SInt((this.width max that.width) + 1), SubOp, that)
+ /** @group SourceInfoTransformMacro */
def do_-% (that: SInt)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): SInt =
(this -& that).tail(1).asSInt
@@ -682,14 +743,19 @@ sealed class SInt private[core] (width: Width) extends Bits(width) with Num[SInt
final def | (that: SInt): SInt = macro SourceInfoTransform.thatArg
final def ^ (that: SInt): SInt = macro SourceInfoTransform.thatArg
+ /** @group SourceInfoTransformMacro */
def do_& (that: SInt)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): SInt =
binop(sourceInfo, UInt(this.width max that.width), BitAndOp, that).asSInt
+ /** @group SourceInfoTransformMacro */
def do_| (that: SInt)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): SInt =
binop(sourceInfo, UInt(this.width max that.width), BitOrOp, that).asSInt
+ /** @group SourceInfoTransformMacro */
def do_^ (that: SInt)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): SInt =
binop(sourceInfo, UInt(this.width max that.width), BitXorOp, that).asSInt
- /** Returns this wire bitwise-inverted. */
+ /** Returns this wire bitwise-inverted.
+ * @group SourceInfoTransformMacro
+ */
def do_unary_~ (implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): SInt =
unop(sourceInfo, UInt(width = width), BitNotOp).asSInt
@@ -704,7 +770,9 @@ sealed class SInt private[core] (width: Width) extends Bits(width) with Num[SInt
final def =/= (that: SInt): Bool = macro SourceInfoTransform.thatArg
final def === (that: SInt): Bool = macro SourceInfoTransform.thatArg
+ /** @group SourceInfoTransformMacro */
def do_=/= (that: SInt)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Bool = compop(sourceInfo, NotEqualOp, that)
+ /** @group SourceInfoTransformMacro */
def do_=== (that: SInt)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Bool = compop(sourceInfo, EqualOp, that)
// final def abs(): UInt = macro SourceInfoTransform.noArg
@@ -794,32 +862,40 @@ sealed class Bool() extends UInt(1.W) with Reset {
final def | (that: Bool): Bool = macro SourceInfoTransform.thatArg
final def ^ (that: Bool): Bool = macro SourceInfoTransform.thatArg
+ /** @group SourceInfoTransformMacro */
def do_& (that: Bool)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Bool =
binop(sourceInfo, Bool(), BitAndOp, that)
+ /** @group SourceInfoTransformMacro */
def do_| (that: Bool)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Bool =
binop(sourceInfo, Bool(), BitOrOp, that)
+ /** @group SourceInfoTransformMacro */
def do_^ (that: Bool)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Bool =
binop(sourceInfo, Bool(), BitXorOp, that)
- /** Returns this wire bitwise-inverted. */
+ /** Returns this wire bitwise-inverted.
+ * @group SourceInfoTransformMacro
+ */
override def do_unary_~ (implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Bool =
unop(sourceInfo, Bool(), BitNotOp)
/** Outputs the logical OR of two Bools.
- */
+ */
def || (that: Bool): Bool = macro SourceInfoTransform.thatArg
+ /** @group SourceInfoTransformMacro */
def do_|| (that: Bool)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Bool = this | that
/** Outputs the logical AND of two Bools.
*/
def && (that: Bool): Bool = macro SourceInfoTransform.thatArg
+ /** @group SourceInfoTransformMacro */
def do_&& (that: Bool)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Bool = this & that
/** Reinterprets this Bool as a Clock. */
def asClock(): Clock = macro SourceInfoTransform.noArg
+ /** @group SourceInfoTransformMacro */
def do_asClock(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Clock = pushOp(DefPrim(sourceInfo, Clock(), AsClockOp, ref))
}
@@ -878,7 +954,9 @@ sealed class FixedPoint private (width: Width, val binaryPoint: BinaryPoint)
final def unary_- (): FixedPoint = macro SourceInfoTransform.noArg
final def unary_-% (): FixedPoint = macro SourceInfoTransform.noArg
+ /** @group SourceInfoTransformMacro */
def unary_- (implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): FixedPoint = FixedPoint.fromBigInt(0) - this
+ /** @group SourceInfoTransformMacro */
def unary_-% (implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): FixedPoint = FixedPoint.fromBigInt(0) -% this
/** add (default - no growth) operator */
@@ -895,10 +973,12 @@ sealed class FixedPoint private (width: Width, val binaryPoint: BinaryPoint)
throwException(s"mod is illegal on FixedPoint types")
final def * (that: UInt): FixedPoint = macro SourceInfoTransform.thatArg
+ /** @group SourceInfoTransformMacro */
def do_* (that: UInt)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): FixedPoint =
binop(sourceInfo, FixedPoint(this.width + that.width, binaryPoint), TimesOp, that)
final def * (that: SInt): FixedPoint = macro SourceInfoTransform.thatArg
+ /** @group SourceInfoTransformMacro */
def do_* (that: SInt)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): FixedPoint =
binop(sourceInfo, FixedPoint(this.width + that.width, binaryPoint), TimesOp, that)
@@ -911,6 +991,7 @@ sealed class FixedPoint private (width: Width, val binaryPoint: BinaryPoint)
/** subtract (no growth) operator */
final def -% (that: FixedPoint): FixedPoint = macro SourceInfoTransform.thatArg
+ /** @group SourceInfoTransformMacro */
def do_+& (that: FixedPoint)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): FixedPoint = {
(this.width, that.width, this.binaryPoint, that.binaryPoint) match {
case (KnownWidth(thisWidth), KnownWidth(thatWidth), KnownBinaryPoint(thisBP), KnownBinaryPoint(thatBP)) =>
@@ -925,8 +1006,10 @@ sealed class FixedPoint private (width: Width, val binaryPoint: BinaryPoint)
}
}
+ /** @group SourceInfoTransformMacro */
def do_+% (that: FixedPoint)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): FixedPoint =
(this +& that).tail(1).asFixedPoint(this.binaryPoint max that.binaryPoint)
+ /** @group SourceInfoTransformMacro */
def do_-& (that: FixedPoint)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): FixedPoint = {
(this.width, that.width, this.binaryPoint, that.binaryPoint) match {
case (KnownWidth(thisWidth), KnownWidth(thatWidth), KnownBinaryPoint(thisBP), KnownBinaryPoint(thatBP)) =>
@@ -941,6 +1024,7 @@ sealed class FixedPoint private (width: Width, val binaryPoint: BinaryPoint)
}
}
+ /** @group SourceInfoTransformMacro */
def do_-% (that: FixedPoint)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): FixedPoint =
(this -& that).tail(1).asFixedPoint(this.binaryPoint max that.binaryPoint)
@@ -948,15 +1032,19 @@ sealed class FixedPoint private (width: Width, val binaryPoint: BinaryPoint)
final def | (that: FixedPoint): FixedPoint = macro SourceInfoTransform.thatArg
final def ^ (that: FixedPoint): FixedPoint = macro SourceInfoTransform.thatArg
+ /** @group SourceInfoTransformMacro */
def do_& (that: FixedPoint)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): FixedPoint =
throwException(s"And is illegal between $this and $that")
+ /** @group SourceInfoTransformMacro */
def do_| (that: FixedPoint)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): FixedPoint =
throwException(s"Or is illegal between $this and $that")
+ /** @group SourceInfoTransformMacro */
def do_^ (that: FixedPoint)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): FixedPoint =
throwException(s"Xor is illegal between $this and $that")
final def setBinaryPoint(that: Int): FixedPoint = macro SourceInfoTransform.thatArg
+ /** @group SourceInfoTransformMacro */
def do_setBinaryPoint(that: Int)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): FixedPoint = this.binaryPoint match {
case KnownBinaryPoint(value) =>
binop(sourceInfo, FixedPoint(this.width + (that - value), KnownBinaryPoint(that)), SetBinaryPoint, that)
@@ -978,8 +1066,11 @@ sealed class FixedPoint private (width: Width, val binaryPoint: BinaryPoint)
final def =/= (that: FixedPoint): Bool = macro SourceInfoTransform.thatArg
final def === (that: FixedPoint): Bool = macro SourceInfoTransform.thatArg
+ /** @group SourceInfoTransformMacro */
def do_!= (that: FixedPoint)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Bool = compop(sourceInfo, NotEqualOp, that)
+ /** @group SourceInfoTransformMacro */
def do_=/= (that: FixedPoint)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Bool = compop(sourceInfo, NotEqualOp, that)
+ /** @group SourceInfoTransformMacro */
def do_=== (that: FixedPoint)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Bool = compop(sourceInfo, EqualOp, that)
def do_abs(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): FixedPoint = {
diff --git a/chiselFrontend/src/main/scala/chisel3/core/Data.scala b/chiselFrontend/src/main/scala/chisel3/core/Data.scala
index 151bc13f..04209cef 100644
--- a/chiselFrontend/src/main/scala/chisel3/core/Data.scala
+++ b/chiselFrontend/src/main/scala/chisel3/core/Data.scala
@@ -8,7 +8,7 @@ import chisel3.internal._
import chisel3.internal.Builder.{pushCommand, pushOp}
import chisel3.internal.firrtl._
import chisel3.internal.sourceinfo.{SourceInfo, SourceInfoTransform, UnlocatableSourceInfo, DeprecatedSourceInfo}
-import chisel3.util.SourceInfoDoc
+import chisel3.SourceInfoDoc
import chisel3.core.BiConnect.DontCareCantBeSink
/** User-specified directions.
@@ -201,7 +201,7 @@ object Flipped {
*
* @groupdesc Connect Utilities for connecting hardware components
*/
-abstract class Data extends HasId with NamedComponent {
+abstract class Data extends HasId with NamedComponent with SourceInfoDoc {
// This is a bad API that punches through object boundaries.
@deprecated("pending removal once all instances replaced", "chisel3")
private[chisel3] def flatten: IndexedSeq[Element] = {
@@ -435,6 +435,7 @@ abstract class Data extends HasId with NamedComponent {
*/
def asTypeOf[T <: Data](that: T): T = macro SourceInfoTransform.thatArg
+ /** @group SourceInfoTransformMacro */
def do_asTypeOf[T <: Data](that: T)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): T = {
val thatCloned = Wire(that.cloneTypeFull)
thatCloned.connectFromBits(this.asUInt())
@@ -455,6 +456,7 @@ abstract class Data extends HasId with NamedComponent {
*/
final def asUInt(): UInt = macro SourceInfoTransform.noArg
+ /** @group SourceInfoTransformMacro */
def do_asUInt(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): UInt
/** Default pretty printing */
diff --git a/chiselFrontend/src/main/scala/chisel3/core/Mem.scala b/chiselFrontend/src/main/scala/chisel3/core/Mem.scala
index 73bf3708..09e30fec 100644
--- a/chiselFrontend/src/main/scala/chisel3/core/Mem.scala
+++ b/chiselFrontend/src/main/scala/chisel3/core/Mem.scala
@@ -8,6 +8,7 @@ import chisel3.internal._
import chisel3.internal.Builder.pushCommand
import chisel3.internal.firrtl._
import chisel3.internal.sourceinfo.{SourceInfo, SourceInfoTransform, UnlocatableSourceInfo, MemTransform}
+import chisel3.SourceInfoDoc
object Mem {
@chiselRuntimeDeprecated
@@ -20,6 +21,8 @@ object Mem {
* @param t data type of memory element
*/
def apply[T <: Data](size: Int, t: T): Mem[T] = macro MemTransform.apply[T]
+
+ /** @group SourceInfoTransformMacro */
def do_apply[T <: Data](size: Int, t: T)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): Mem[T] = {
if (compileOptions.declaredTypeMustBeUnbound) {
requireIsChiselType(t, "memory type")
@@ -31,7 +34,7 @@ object Mem {
}
}
-sealed abstract class MemBase[T <: Data](t: T, val length: Int) extends HasId with NamedComponent {
+sealed abstract class MemBase[T <: Data](t: T, val length: Int) extends HasId with NamedComponent with SourceInfoDoc {
// REVIEW TODO: make accessors (static/dynamic, read/write) combinations consistent.
/** Creates a read accessor into the memory with static addressing. See the
@@ -39,6 +42,7 @@ sealed abstract class MemBase[T <: Data](t: T, val length: Int) extends HasId wi
*/
def apply(x: Int): T = macro SourceInfoTransform.xArg
+ /** @group SourceInfoTransformMacro */
def do_apply(idx: Int)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): T = {
require(idx >= 0 && idx < length)
apply(idx.asUInt)
@@ -49,6 +53,7 @@ sealed abstract class MemBase[T <: Data](t: T, val length: Int) extends HasId wi
*/
def apply(x: UInt): T = macro SourceInfoTransform.xArg
+ /** @group SourceInfoTransformMacro */
def do_apply(idx: UInt)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): T =
makePort(sourceInfo, idx, MemPortDirection.INFER)
@@ -57,6 +62,7 @@ sealed abstract class MemBase[T <: Data](t: T, val length: Int) extends HasId wi
*/
def read(x: UInt): T = macro SourceInfoTransform.xArg
+ /** @group SourceInfoTransformMacro */
def do_read(idx: UInt)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): T =
makePort(sourceInfo, idx, MemPortDirection.READ)
@@ -130,6 +136,7 @@ object SyncReadMem {
*/
def apply[T <: Data](size: Int, t: T): SyncReadMem[T] = macro MemTransform.apply[T]
+ /** @group SourceInfoTransformMacro */
def do_apply[T <: Data](size: Int, t: T)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): SyncReadMem[T] = {
if (compileOptions.declaredTypeMustBeUnbound) {
requireIsChiselType(t, "memory type")
@@ -154,6 +161,7 @@ object SyncReadMem {
sealed class SyncReadMem[T <: Data] private (t: T, n: Int) extends MemBase[T](t, n) {
def read(x: UInt, en: Bool): T = macro SourceInfoTransform.xEnArg
+ /** @group SourceInfoTransformMacro */
def do_read(addr: UInt, enable: Bool)(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): T = {
val a = Wire(UInt())
a := DontCare
diff --git a/chiselFrontend/src/main/scala/chisel3/core/Module.scala b/chiselFrontend/src/main/scala/chisel3/core/Module.scala
index 0cf05496..399f0462 100644
--- a/chiselFrontend/src/main/scala/chisel3/core/Module.scala
+++ b/chiselFrontend/src/main/scala/chisel3/core/Module.scala
@@ -12,10 +12,11 @@ import chisel3.internal._
import chisel3.internal.Builder._
import chisel3.internal.firrtl._
import chisel3.internal.sourceinfo.{InstTransform, SourceInfo}
+import chisel3.SourceInfoDoc
import _root_.firrtl.annotations.{CircuitName, ModuleName}
-object Module {
+object Module extends SourceInfoDoc {
/** A wrapper method that all Module instantiations must be wrapped in
* (necessary to help Chisel track internal state).
*
@@ -25,6 +26,7 @@ object Module {
*/
def apply[T <: BaseModule](bc: => T): T = macro InstTransform.apply[T]
+ /** @group SourceInfoTransformMacro */
def do_apply[T <: BaseModule](bc: => T)
(implicit sourceInfo: SourceInfo,
compileOptions: CompileOptions): T = {
diff --git a/chiselFrontend/src/main/scala/chisel3/core/Mux.scala b/chiselFrontend/src/main/scala/chisel3/core/Mux.scala
index e4ef001f..56c145b5 100644
--- a/chiselFrontend/src/main/scala/chisel3/core/Mux.scala
+++ b/chiselFrontend/src/main/scala/chisel3/core/Mux.scala
@@ -9,8 +9,9 @@ import chisel3.internal.Builder.{pushOp}
import chisel3.internal.sourceinfo.{SourceInfo, MuxTransform}
import chisel3.internal.firrtl._
import chisel3.internal.firrtl.PrimOp._
+import chisel3.SourceInfoDoc
-object Mux {
+object Mux extends SourceInfoDoc {
/** Creates a mux, whose output is one of the inputs depending on the
* value of the condition.
*
@@ -24,6 +25,7 @@ object Mux {
*/
def apply[T <: Data](cond: Bool, con: T, alt: T): T = macro MuxTransform.apply[T]
+ /** @group SourceInfoTransformMacro */
def do_apply[T <: Data](cond: Bool, con: T, alt: T)(implicit sourceInfo: SourceInfo,
compileOptions: CompileOptions): T = {
requireIsHardware(cond, "mux condition")
diff --git a/chiselFrontend/src/main/scala/chisel3/core/SeqUtils.scala b/chiselFrontend/src/main/scala/chisel3/core/SeqUtils.scala
index 69f54102..e87fb045 100644
--- a/chiselFrontend/src/main/scala/chisel3/core/SeqUtils.scala
+++ b/chiselFrontend/src/main/scala/chisel3/core/SeqUtils.scala
@@ -18,6 +18,7 @@ private[chisel3] object SeqUtils {
*/
def asUInt[T <: Bits](in: Seq[T]): UInt = macro SourceInfoTransform.inArg
+ /** @group SourceInfoTransformMacros */
def do_asUInt[T <: Bits](in: Seq[T])(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): UInt = {
if (in.tail.isEmpty) {
in.head.asUInt
@@ -32,6 +33,7 @@ private[chisel3] object SeqUtils {
*/
def count(in: Seq[Bool]): UInt = macro SourceInfoTransform.inArg
+ /** @group SourceInfoTransformMacros */
def do_count(in: Seq[Bool])(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): UInt = in.size match {
case 0 => 0.U
case 1 => in.head
@@ -42,6 +44,7 @@ private[chisel3] object SeqUtils {
*/
def priorityMux[T <: Data](in: Seq[(Bool, T)]): T = macro SourceInfoTransform.inArg
+ /** @group SourceInfoTransformMacros */
def do_priorityMux[T <: Data](in: Seq[(Bool, T)])
(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): T = {
if (in.size == 1) {
@@ -60,6 +63,7 @@ private[chisel3] object SeqUtils {
def oneHotMux[T <: Data](in: Iterable[(Bool, T)]): T = macro SourceInfoTransform.inArg
//scalastyle:off method.length cyclomatic.complexity
+ /** @group SourceInfoTransformMacros */
def do_oneHotMux[T <: Data](in: Iterable[(Bool, T)])
(implicit sourceInfo: SourceInfo, compileOptions: CompileOptions): T = {
if (in.tail.isEmpty) {