1*730cfbc0SXuan Hupackage xiangshan.backend.datapath 2*730cfbc0SXuan Hu 3*730cfbc0SXuan Huobject DataConfig { 4*730cfbc0SXuan Hu sealed abstract class DataConfig ( 5*730cfbc0SXuan Hu val name: String, 6*730cfbc0SXuan Hu val dataWidth: Int, 7*730cfbc0SXuan Hu ) { 8*730cfbc0SXuan Hu override def toString: String = name 9*730cfbc0SXuan Hu } 10*730cfbc0SXuan Hu 11*730cfbc0SXuan Hu case class IntData() extends DataConfig("int", 64) 12*730cfbc0SXuan Hu case class FpData() extends DataConfig("fp", 64) 13*730cfbc0SXuan Hu case class VecData() extends DataConfig("vec", 128) 14*730cfbc0SXuan Hu case class ImmData(len: Int) extends DataConfig("int", len) 15*730cfbc0SXuan Hu case class VAddrData() extends DataConfig("vaddr", 39) // Todo: associate it with the width of vaddr 16*730cfbc0SXuan Hu case class MaskSrcData() extends DataConfig("masksrc", VecData().dataWidth) // 128 17*730cfbc0SXuan Hu case class MaskDstData() extends DataConfig("maskdst", VecData().dataWidth / 8) // 16 18*730cfbc0SXuan Hu case class VConfigData() extends DataConfig("vconfig", VecData().dataWidth) // Todo: use 16 bit instead 19*730cfbc0SXuan Hu case class NoData() extends DataConfig("nodata", 0) 20*730cfbc0SXuan Hu 21*730cfbc0SXuan Hu def RegSrcDataSet : Set[DataConfig] = Set(IntData(), FpData(), VecData(), MaskSrcData(), VConfigData()) 22*730cfbc0SXuan Hu def IntRegSrcDataSet: Set[DataConfig] = Set(IntData()) 23*730cfbc0SXuan Hu def FpRegSrcDataSet : Set[DataConfig] = Set(FpData()) 24*730cfbc0SXuan Hu def VecRegSrcDataSet: Set[DataConfig] = Set(VecData(), MaskSrcData(), VConfigData()) 25*730cfbc0SXuan Hu def VfRegSrcDataSet : Set[DataConfig] = Set(FpData(), VecData(), MaskSrcData(), VConfigData()) 26*730cfbc0SXuan Hu} 27