xref: /XiangShan/src/main/scala/xiangshan/backend/datapath/RdConfig.scala (revision 39c59369af6e7d78fa72e13aae3735f1a6e98f5c)
1730cfbc0SXuan Hupackage xiangshan.backend.datapath
2730cfbc0SXuan Hu
3*39c59369SXuan Huimport xiangshan.backend.datapath.DataConfig.{DataConfig, IntData, NoData, VecData}
4*39c59369SXuan Hu
5730cfbc0SXuan Huobject RdConfig {
6730cfbc0SXuan Hu  sealed abstract class RdConfig() {
7730cfbc0SXuan Hu    val port: Int
8730cfbc0SXuan Hu    val priority: Int
9*39c59369SXuan Hu
10*39c59369SXuan Hu    def getDataConfig: DataConfig
11730cfbc0SXuan Hu  }
12730cfbc0SXuan Hu
13*39c59369SXuan Hu  case class IntRD(port: Int = -1, priority: Int = Int.MaxValue) extends RdConfig() {
14*39c59369SXuan Hu    override def getDataConfig = IntData()
15*39c59369SXuan Hu  }
16730cfbc0SXuan Hu
17*39c59369SXuan Hu  case class VfRD(port: Int = -1, priority: Int = Int.MaxValue) extends RdConfig() {
18*39c59369SXuan Hu    override def getDataConfig = VecData()
19*39c59369SXuan Hu  }
20*39c59369SXuan Hu
21*39c59369SXuan Hu  case class NoRD() extends RdConfig() {
22*39c59369SXuan Hu    override val port: Int = -1
23*39c59369SXuan Hu
24*39c59369SXuan Hu    override val priority: Int = Int.MaxValue
25*39c59369SXuan Hu
26*39c59369SXuan Hu    override def getDataConfig: DataConfig = NoData()
27*39c59369SXuan Hu  }
28730cfbc0SXuan Hu}
29730cfbc0SXuan Hu
30