xref: /XiangShan/src/main/scala/xiangshan/backend/datapath/RdConfig.scala (revision 3da89fc0a00dfca299f3e2930ac491729cfadab1)
1730cfbc0SXuan Hupackage xiangshan.backend.datapath
2730cfbc0SXuan Hu
3*3da89fc0Sxiaofeibaoimport xiangshan.backend.datapath.DataConfig._
439c59369SXuan Hu
5730cfbc0SXuan Huobject RdConfig {
6730cfbc0SXuan Hu  sealed abstract class RdConfig() {
7730cfbc0SXuan Hu    val port: Int
8730cfbc0SXuan Hu    val priority: Int
939c59369SXuan Hu
1039c59369SXuan Hu    def getDataConfig: DataConfig
11730cfbc0SXuan Hu  }
12730cfbc0SXuan Hu
1339c59369SXuan Hu  case class IntRD(port: Int = -1, priority: Int = Int.MaxValue) extends RdConfig() {
1439c59369SXuan Hu    override def getDataConfig = IntData()
1539c59369SXuan Hu  }
16730cfbc0SXuan Hu
1760f0c5aeSxiaofeibao  case class FpRD(port: Int = -1, priority: Int = Int.MaxValue) extends RdConfig() {
1860f0c5aeSxiaofeibao    override def getDataConfig = FpData()
1960f0c5aeSxiaofeibao  }
2060f0c5aeSxiaofeibao
2139c59369SXuan Hu  case class VfRD(port: Int = -1, priority: Int = Int.MaxValue) extends RdConfig() {
2239c59369SXuan Hu    override def getDataConfig = VecData()
2339c59369SXuan Hu  }
2439c59369SXuan Hu
25*3da89fc0Sxiaofeibao  case class V0RD(port: Int = -1, priority: Int = Int.MaxValue) extends RdConfig() {
26*3da89fc0Sxiaofeibao    override def getDataConfig = V0Data()
27*3da89fc0Sxiaofeibao  }
28*3da89fc0Sxiaofeibao
29*3da89fc0Sxiaofeibao  case class VlRD(port: Int = -1, priority: Int = Int.MaxValue) extends RdConfig() {
30*3da89fc0Sxiaofeibao    override def getDataConfig = VlData()
31*3da89fc0Sxiaofeibao  }
32*3da89fc0Sxiaofeibao
3339c59369SXuan Hu  case class NoRD() extends RdConfig() {
3439c59369SXuan Hu    override val port: Int = -1
3539c59369SXuan Hu
3639c59369SXuan Hu    override val priority: Int = Int.MaxValue
3739c59369SXuan Hu
3839c59369SXuan Hu    override def getDataConfig: DataConfig = NoData()
3939c59369SXuan Hu  }
40730cfbc0SXuan Hu}
41730cfbc0SXuan Hu
42