1c0be7f33SXuan Hupackage xiangshan.backend.datapath 2c0be7f33SXuan Hu 3c0be7f33SXuan Huimport chisel3._ 4c0be7f33SXuan Hu 5c0be7f33SXuan Huclass DataSource extends Bundle { 6*0dbae67aSxiaofeibao-xjtu val value = UInt(3.W) 7c0be7f33SXuan Hu 8*0dbae67aSxiaofeibao-xjtu def readReg: Bool = value(2) 9c0be7f33SXuan Hu 10*0dbae67aSxiaofeibao-xjtu def readZero: Bool = value === DataSource.zero 11c0be7f33SXuan Hu 12*0dbae67aSxiaofeibao-xjtu def readForward: Bool = value === DataSource.forward 13*0dbae67aSxiaofeibao-xjtu 14*0dbae67aSxiaofeibao-xjtu def readBypass: Bool = value === DataSource.bypass 15*0dbae67aSxiaofeibao-xjtu 16*0dbae67aSxiaofeibao-xjtu def readImm: Bool = value === DataSource.imm 17*0dbae67aSxiaofeibao-xjtu 18c0be7f33SXuan Hu} 19c0be7f33SXuan Hu 20c0be7f33SXuan Huobject DataSource { 21c0be7f33SXuan Hu def apply() = new DataSource 22c0be7f33SXuan Hu 23*0dbae67aSxiaofeibao-xjtu def reg: UInt = "b100".U 24c0be7f33SXuan Hu 25*0dbae67aSxiaofeibao-xjtu // read int preg addr is 0 26*0dbae67aSxiaofeibao-xjtu def zero: UInt = "b000".U 27c0be7f33SXuan Hu 28*0dbae67aSxiaofeibao-xjtu def forward: UInt = "b001".U 29c0be7f33SXuan Hu 30*0dbae67aSxiaofeibao-xjtu def bypass: UInt = "b010".U 31*0dbae67aSxiaofeibao-xjtu 32*0dbae67aSxiaofeibao-xjtu def imm: UInt = "b011".U 33c0be7f33SXuan Hu 34c0be7f33SXuan Hu} 35c0be7f33SXuan Hu 36