<div dir="ltr">Hi, <div><br></div><div>I'm experimenting with the MachineScheduler by providing a subtarget scheduling model. </div><div><br></div><div>Say I have a 2-wide in-order machine that has 2 load/store unit, so I can issue 2 independent loads per cycle. </div><div><br></div><div>By referencing TargetSchedule.td, </div><div><br></div><div>it seems like I should do</div><div><br></div><div>def MyTargetLdStUnit : ProcResource<2> { let BufferSize = 0 ;}</div><div><br></div><div>But right now the scheduler only schedule 1 load/cycle even if there is another independent load, so I noticed that in </div><div><br></div><div>void SchedBoundary::bumpNode(SUnit *SU) in MachineScheduler.cpp</div><div><br></div><div>When the scheduler reserve the resource for an instruction, it does not take the number of units into account, </div><div><br></div><div>ReservedCycles[PIdx] = isTop() ? NextCycle + PI->Cycles <br></div><div><br></div><div>Later when the scheduler tries to issue the second load in the same cycle,  it calls SchedBoundary::checkHazard and reads ReservedCycles[PIdx] which is next cycle, so it takes the load out from the available queue and push it into the pending queue.</div><div><br></div><div>Is this a bug or I did not model things right</div><div><br></div><div>Thanks,</div><div>Patrick</div></div>