search for: schedwriter

Displaying 12 results from an estimated 12 matches for "schedwriter".

Did you mean: schedwrites
2018 Apr 05
1
A9 Scheduler
Hi, I am having some trouble understanding the scheduling scheme for the C-A9. Looking at the ARMScheduleA9.td file I find this line that overrides the target SchedWrite with processor specific latencies. def : SchedAlias<WriteALU, A9WriteALU>; However, in this same file, I find the lines presented below, which are mapping the SchedReadWrite to, for example, the ANDri instruction. //
2015 Oct 15
3
what can cause a "CPU table is not sorted" assertion
I'm trying 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
2013 Jul 23
0
[LLVMdev] Questions about MachineScheduler
On Jul 22, 2013, at 11:50 AM, Tom Stellard <tom at stellard.net> wrote: > Hi, > > I'm working on defining a SchedMachineModel for the Southern Islands > family of GPUs, and I have two questions related to the > MachineScheduler. > > 1. I have a resource that can process 15 instructions at the same time. > In the TableGen definitions, should I do: > > def
2013 Jul 22
2
[LLVMdev] Questions about MachineScheduler
Hi, I'm working on defining a SchedMachineModel for the Southern Islands family of GPUs, and I have two questions related to the MachineScheduler. 1. I have a resource that can process 15 instructions at the same time. In the TableGen definitions, should I do: def HWVMEM : ProcResource<15>; or let BufferSize = 15 in { def HWVMEM : ProcResource<1>; } 2. Southern Islands has
2018 Nov 15
2
Per-write cycle count with ReadAdvance - Do I really need that?
...o work with my ARCH. It is about the scheduler info which describes reading my ARCH's vector register. There are different latencies since forwarding/bypass appears. I give it as below example: def : WriteRes<WriteVector, [MyArchVALU]> { let Latency = 6; } ... def MyWriteAddVector : SchedWriteRes<[MyArchVALU]> { let Latency = 6; } def MyWriteMulVector : SchedWriteRes<[MyArchVALU]> { let Latency = 6; } ... Here I defined 3 different Writes with same latency number. Below shows the forwarding. def : ReadAdvance<MyReadVector, 5, [WriteVector]>; def : ReadAdvance<MyRead...
2020 Sep 15
2
[EXTERNAL] Re: Simulation of load-store forwarding with MI scheduler on AArch64
Thanks for prompt response, Andy This will work for cases when address is not modified. However this doesn’t seem to work for pre/post increment load stores. Consider data to address forwarding: $x0 = ldr x0, [x1] $x0, $x2 = ldr x2, [x0, 16]! The second instruction will have it’s own latency for address modification ($x0 register). So I don’t see how we can use ReadAdr stuff here. May be
2013 Oct 21
1
[LLVMdev] MI scheduler produce badly code with inline function
Hi Andy, I'm working on defining new machine model for my target, But I don't understand how to define the in-order machine (reservation tables) in new model. For example, if target has IF ID EX WB stages should I do: let BufferSize=0 in { def IF: ProcResource<1>; def ID: ProcResource<1>; def EX: ProcResource<1>; def WB: ProcResource<1>; } def :
2018 Nov 17
2
Per-write cycle count with ReadAdvance - Do I really need that?
...bout the scheduler info which describes reading my ARCH's vector > register. There are different latencies since forwarding/bypass appears. I > give it as below example: > > def : WriteRes<WriteVector, [MyArchVALU]> { let Latency = 6; } > ... > def MyWriteAddVector : SchedWriteRes<[MyArchVALU]> { let Latency = 6; } > def MyWriteMulVector : SchedWriteRes<[MyArchVALU]> { let Latency = 6; } > ... > > Here I defined 3 different Writes with same latency number. Below shows > the forwarding. > > def : ReadAdvance<MyReadVector, 5, [WriteVector]...
2018 Nov 19
2
Per-write cycle count with ReadAdvance - Do I really need that?
...which describes reading my ARCH's vector >> register. There are different latencies since forwarding/bypass appears. I >> give it as below example: >> >> def : WriteRes<WriteVector, [MyArchVALU]> { let Latency = 6; } >> ... >> def MyWriteAddVector : SchedWriteRes<[MyArchVALU]> { let Latency = 6; } >> def MyWriteMulVector : SchedWriteRes<[MyArchVALU]> { let Latency = 6; } >> ... >> >> Here I defined 3 different Writes with same latency number. Below shows >> the forwarding. >> >> def : ReadAdvance<My...
2013 Oct 16
0
[LLVMdev] MI scheduler produce badly code with inline function
On Oct 15, 2013, at 9:28 PM, Zakk <zakk0610 at gmail.com> wrote: > Hi Andy, thanks for your help!! > The scheduled code by method A is same as B when using the new machine model. > it's make sense, but there is the another problem, the scheduled code is badly. > > load/store instruction always reuse the same register I filed PR17593 with this information. However, I
2013 Oct 16
3
[LLVMdev] MI scheduler produce badly code with inline function
Hi Andy, thanks for your help!! The scheduled code by method A is same as B when using the new machine model. it's make sense, but there is the another problem, the scheduled code is badly. load/store instruction always reuse the same register Source: #define N 2000000 static double b[N], c[N]; void Scale () { double scalar = 3.0; for (int j=0;j<N;j++) b[j] =
2014 Jan 28
3
[LLVMdev] New machine model questions
...h pipeline independently. Some backend maintainers may still want to use itineraries if that level of precision is critical [1]. Another option is extending the new model. [2] I will assume that each queue is fully pipelined (4 ACQ ops can be in-flight). Forcing all this information into a single SchedWriteRes def would look like this: def P5600FLD : SchedWriteRes <[P5600UnitAGQ, P5600UnitFP]> { let Latency = 5; // 4 cycle load + 1 cycle FP writeback let NumMicroOps = 2; } This is bad (for an in-order processor) because it prevents FPLoad + FPx from being scheduled in the same cycle and fai...