1517544cdSsinsanctionpackage xiangshan.backend.fu.fpu 2517544cdSsinsanction 3517544cdSsinsanctionimport org.chipsalliance.cde.config.Parameters 4517544cdSsinsanctionimport chisel3._ 5517544cdSsinsanctionimport chisel3.util._ 6517544cdSsinsanctionimport xiangshan._ 7517544cdSsinsanctionimport xiangshan.backend.fu.{FuConfig, FuncUnit, HasPipelineReg} 8517544cdSsinsanction 9517544cdSsinsanctiontrait FpFuncUnitAlias { this: FuncUnit => 10517544cdSsinsanction protected val inCtrl = io.in.bits.ctrl 11517544cdSsinsanction protected val inData = io.in.bits.data 12*39be24bcSxiaofeibao protected val fp_fmt = inCtrl.fpu.get.fmt 13517544cdSsinsanction 14517544cdSsinsanction protected val frm = io.frm.getOrElse(0.U(3.W)) 15517544cdSsinsanction protected val instRm = inCtrl.fpu.getOrElse(0.U.asTypeOf(new FPUCtrlSignals)).rm 16517544cdSsinsanction protected val rm = Mux(instRm =/= "b111".U, instRm, frm) 17517544cdSsinsanction 18517544cdSsinsanction protected val fuOpType = inCtrl.fuOpType 19517544cdSsinsanction} 20517544cdSsinsanction 21517544cdSsinsanctionclass FpPipedFuncUnit(cfg: FuConfig)(implicit p: Parameters) extends FuncUnit(cfg) 22517544cdSsinsanction with HasPipelineReg 23517544cdSsinsanction with FpFuncUnitAlias 24517544cdSsinsanction{ 25517544cdSsinsanction protected val outCtrl = ctrlVec.last 26517544cdSsinsanction protected val outData = dataVec.last 27517544cdSsinsanction 28517544cdSsinsanction override def latency: Int = cfg.latency.latencyVal.get 29517544cdSsinsanction 30517544cdSsinsanction} 31