LLVM Discussion Forums

Buffersize means in llvm backen schedule

I notice that llvm10 backend adds instruction schedule info, during learning the argument buffersize makes me confused. In RISC-V, rocket is a in-order processor:

// in llvm/lib/Target/RISCV/RISCVSchedRocket64.td)
let BufferSize = 0 in {
	def Rocket64UnitALU        : ProcResource<1>; // Int ALU
	def Rocket64UnitIMul       : ProcResource<1>; // Int Multiply
	def Rocket64UnitMem        : ProcResource<1>; // Load/Store
	def Rocket64UnitB          : ProcResource<1>; // Branch
	def Rocket64UnitFPALU      : ProcResource<1>; // FP ALU
}

let BufferSize = 1 in {
	def Rocket64UnitIDiv       : ProcResource<1>; // Int Division
	def Rocket64UnitFPDivSqrt  : ProcResource<1>; // FP Divide/Sqrt
}

As it mentioned, Modeling each pipeline as a ProcResource using the BufferSize = 0 since Rocket is in-order, so why there is a buffersize = 1 ?

I try to find some document but failed, is there any introduction ? thks !