Displaying 7 results from an estimated 7 matches for "loadlatency".
2015 Nov 17
2
DFAPacketizer, Scheduling and LoadLatency
> In particular, the LoadLatency is used in defaultDefLatency:
>
> /// Return the default expected latency for a def based on it's opcode.
> unsigned TargetInstrInfo::defaultDefLatency(
> const MCSchedModel &SchedModel, const MachineInstr *DefMI) const {
> if (DefMI->isTransient())
> return...
2015 Nov 16
3
DFAPacketizer, Scheduling and LoadLatency
...ass describes load instructions
InstrItinData<BR, [InstrStage<1, [Slot0]>]>
..............................
]>;
def MyTargetModel : SchedMachineModel {
// Max issue per cycle == bundle width.
let IssueWidth = 2;
let Itineraries = MyTargetItineraries;
let LoadLatency = 2;
}
Nowhere in my itinerary description it says that load instruction takes 2
cycles. In the code I couldn't find a path (but I could have missed) how a
value from LoadLatency propagates to a load instruction? So how does the
packetzer and the scheduler know that a load instruction latency...
2016 Jan 06
2
DFAPacketizer, Scheduling and LoadLatency
...output.
>>
>> Do you know what could be the problem? Am I missing something? To give
>> you a full disclosure, I'm using LLVM 3.5 and at the moment I can't
>> switch to the latest version.
>>
>> Any help is appreciated.
>>
>
> I think that the LoadLatency is used as a last resort when there is no
> itinerary available for a given instruction. In your case, there is one
> and so the LoadLatency is ignored, and instead the latency from the
> itinerary is used.
>
>
> -Krzysztof
>
> --
> Qualcomm Innovation Center, Inc. is a...
2013 Apr 30
1
[LLVMdev] Instruction Scheduling - migration from v3.1 to v3.2
...use it is designed to directly query the fields in the SchedMachineModel tablegen class using another hook to select high latency ops:
virtual bool isHighLatencyDef(int opc) const;
Instructions that are not high latency default to one cycle.
Example:
def GenericModel : SchedMachineModel {
let LoadLatency = 4;
let HighLatency = 10;
}
If it really helps, you could redeclare defaultDefLatency as a virtual hook and override it.
(2) The "old" style of pipeline itineraries.
This is closest to the old behavior. If an itinerary is defined, you get to override two hooks:
virtual int TargetIn...
2016 Apr 26
3
How to get started with instruction scheduling? Advice needed.
...SchedMachineModel SchedModel = ?;
}
// Cortex-A9 machine model for scheduling and other instruction cost heuristics.
def CortexA9Model : SchedMachineModel {
let IssueWidth = 2; // 2 micro-ops are dispatched per cycle.
let MicroOpBufferSize = 56; // Based on available renamed registers.
let LoadLatency = 2; // Optimistic load latency assuming bypass.
// This is overriden by OperandCycles if the
// Itineraries are queried instead.
let MispredictPenalty = 8; // Based on estimate of pipeline depth.
let Itineraries = CortexA9Itineraries;
// FIXME:...
2016 Apr 20
2
How to get started with instruction scheduling? Advice needed.
So if I use the SchedMachineModel method, can I just skip itineraries?
Phil
On Wed, Apr 20, 2016 at 12:29 PM, Sergei Larin <slarin at codeaurora.org>
wrote:
> Target does make a difference. VLIW needs more hand-holding. For what you
> are describing it should be fairly simple.
>
>
>
> Best strategy – see what other targets do. ARM might be a good start for
> generic
2015 Oct 15
3
what can cause a "CPU table is not sorted" assertion
...to create a simplified 2 slot VLIW from an OR1K. The codebase
I'm working with is here <https://github.com/openrisc/llvm-or1k>. I've
created an initial MyTargetSchedule.td
def MyTargetModel : SchedMachineModel {
// HW can decode 2 instructions per cycle.
let IssueWidth = 2;
let LoadLatency = 4;
let MispredictPenalty = 16;
// This flag is set to allow the scheduler to assign a default model to
// unrecognized opcodes.
let CompleteModel = 0;
}
def WriteALU : SchedWrite;
def WriteBranch : SchedWrite;
let SchedModel = MyTargetModel in {
// SLOT0 can handles everything
def Slot...