mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-26 12:20:42 +00:00
MI-Sched: Model "reserved" processor resources.
This allows a target to use MI-Sched as an in-order scheduler that will model strict resource conflicts without defining a processor itinerary. Instead, the target can now use the new per-operand machine model and define in-order resources with BufferSize=0. For example, this would allow restricting the type of operations that can be formed into a dispatch group. (Normally NumMicroOps is sufficient to enforce dispatch groups). If the intent is to model latency in in-order pipeline, as opposed to resource conflicts, then a resource with BufferSize=1 should be defined instead. This feature is only casually tested as there are no in-tree targets using it yet. However, Hal will be experimenting with POWER7. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196517 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -697,9 +697,15 @@ void ScheduleDAGInstrs::initSUnits() {
|
||||
for (TargetSchedModel::ProcResIter
|
||||
PI = SchedModel.getWriteProcResBegin(SC),
|
||||
PE = SchedModel.getWriteProcResEnd(SC); PI != PE; ++PI) {
|
||||
if (SchedModel.getProcResource(PI->ProcResourceIdx)->BufferSize == 1) {
|
||||
switch (SchedModel.getProcResource(PI->ProcResourceIdx)->BufferSize) {
|
||||
case 0:
|
||||
SU->hasReservedResource = true;
|
||||
break;
|
||||
case 1:
|
||||
SU->isUnbuffered = true;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user