xref: /XiangShan/src/main/scala/utils/SeqUtils.scala (revision edb1dfaf7d290ae99724594507dc46c2c2125384)
12fbf1245SXuan Hupackage utils
22fbf1245SXuan Hu
3*39c59369SXuan Huimport chisel3._
4*39c59369SXuan Huimport chisel3.util._
52fbf1245SXuan Huobject SeqUtils {
6*39c59369SXuan Hu  type Seq2[+T] = Seq[Seq[T]]
7*39c59369SXuan Hu  type Seq3[+T] = Seq2[Seq[T]]
8*39c59369SXuan Hu  type MixedVec2[T <: Data] = MixedVec[MixedVec[T]]
9*39c59369SXuan Hu  type MixedVec3[T <: Data] = MixedVec2[MixedVec[T]]
10*39c59369SXuan Hu
11*39c59369SXuan Hu  def mapToMixedVec[T, A <: Data](in: Seq[T], f: T => A): MixedVec[A] = {
12*39c59369SXuan Hu    MixedVec(in.map(f))
13*39c59369SXuan Hu  }
14*39c59369SXuan Hu
15*39c59369SXuan Hu  def mapToMixedVec2[T, A <: Data](in: Seq2[T], f: T => A): MixedVec2[A] = {
16*39c59369SXuan Hu    MixedVec(in.map(x => mapToMixedVec(x, f)))
17*39c59369SXuan Hu  }
18*39c59369SXuan Hu
19*39c59369SXuan Hu  def mapToMixedVec3[T, A <: Data](in: Seq3[T], f: T => A): MixedVec3[A] = {
20*39c59369SXuan Hu    MixedVec(in.map(x => mapToMixedVec2(x, f)))
21*39c59369SXuan Hu  }
222fbf1245SXuan Hu}
23