Displaying 20 results from an estimated 3000 matches similar to: "[LLVMdev] Scheduler information"
2011 Nov 24
1
[LLVMdev] Scheduler information
[LLVMdev] tag added, sorry for duplicated message.
Hi list,
Could someone help me to understand the internal data dependecy
structure used by the scheduler ?
As far as I can see in /lib/CodeGen/SelectionDAG/ScheduleDAGFast.cpp,
SUnit nodes are created to wrap SDNodes with scheduling related
information and SDeps represent all kind of dependencies between them.
Nevertheless, I cannot figure
2012 Jun 13
0
[LLVMdev] Assert in live update from MI scheduler.
Andy,
I traced my problem to this point:
In ScheduleDAGInstrs.cpp we have the following function:
/// addVRegDefDeps - Add register output and data dependencies from this
SUnit
/// to instructions that occur later in the same scheduling region if they
read
/// from or write to the virtual register defined at OperIdx.
///
/// TODO: Hoist loop induction variable increments. This has to be
///
2010 Aug 08
1
[LLVMdev] Suspicious code in backend scheduler
Hello,
Still trying to write a custom scheduler, I stumbled accross a highly
suspicious code in all schedulers.
In both ScheduleDAGFast.cpp and ScheduleDAGRRList.cpp, one can find this
piece of code:
SUnit *CopyFromSU = CreateNewSUnit(NULL);
and then in the same files:
SUnit *CreateNewSUnit(SDNode *N) {
[...]
SUnit *NewNode = NewSUnit(N);
And finally in ScheduleDAGSDNodes.cpp:
SUnit
2012 Jun 13
2
[LLVMdev] Assert in live update from MI scheduler.
On Jun 13, 2012, at 10:49 AM, Sergei Larin <slarin at codeaurora.org> wrote:
> So if this early exit is taken:
>
> // SSA defs do not have output/anti dependencies.
> // The current operand is a def, so we have at least one.
> if (llvm::next(MRI.def_begin(Reg)) == MRI.def_end())
> return;
>
> we do not ever get to this point:
>
>
2012 Jun 13
0
[LLVMdev] Assert in live update from MI scheduler.
Andy,
You are probably right here - look at this - before phi elimination this
code looks much more sane:
# *** IR Dump After Live Variable Analysis ***:
# Machine code for function push: SSA
Function Live Outs: %R0
BB#0: derived from LLVM BB %entry
%vreg5<def> = IMPLICIT_DEF; IntRegs:%vreg5
%vreg4<def> = TFRI_V4 <ga:@xx_stack>; IntRegs:%vreg4
2012 May 09
0
[LLVMdev] [RFC] Scheduler Rework
On Apr 24, 2012, at 8:59 AM, dag at cray.com wrote:
> Andrew Trick <atrick at apple.com> writes:
>
>> We plan to move to the MachineScheduler by 3.2. The structure is:
>
> How hard will this be to backport to 3.1? Has woprk on this started
> yet?
In my previous message I outlined the steps that I would take to bring up the new scheduler. I'm about to checkin the
2012 Apr 24
2
[LLVMdev] [RFC] Scheduler Rework
Andrew Trick <atrick at apple.com> writes:
> We plan to move to the MachineScheduler by 3.2. The structure is:
How hard will this be to backport to 3.1? Has woprk on this started
yet?
> ScheduleDAG: Abstract DAG of SUnits and SDeps
> |
> v
> ScheduleDAGInstrs: Build the DAG from MachineInstrs, each SUnit tied to an MI
> Delimit the current
2017 Feb 15
2
[cfe-dev] [4.0.0 Release] Release Candidate 2 source and binaries available
> Please try it out, run tests, build your favourite projects and file
> bugs about anything that needs to be fixed, marking them as blockers
> of http://llvm.org/pr31622.
I have encountered very long compile times for three large source files containing generated/unrolled code at -O1.
We are talking about 10+ hours here without completing, so it looks very much like an endless loop.
The
2012 Apr 23
0
[LLVMdev] [RFC] Scheduler Rework
On Apr 20, 2012, at 10:31 AM, dag at cray.com wrote:
> I'd like to begin a project to rework the scheduler to address some
> problems we've discovered on this end. The goal is to get a more
> configurable/flexible scheduler while simplifying maintenance by
> separating policy from implementation to get independent and
> interchangeable parts.
>
> This is going to be
2012 Apr 19
0
[LLVMdev] Target Dependent Hexagon Packetizer patch
Sure I will split it and put it in two patches.
Give me few hours. I need to test those patches.
Sirish
On 4/19/2012 8:40 AM, Tom Stellard wrote:
> On Wed, Apr 18, 2012 at 11:18:05PM -0500, Sirish Pande wrote:
>> Hi,
>>
>> Here's a patch for Hexagon Packetizer for review. This patch does
>> not yield any warnings.
>>
> Would it be possible to split this
2012 Jun 13
4
[LLVMdev] Assert in live update from MI scheduler.
Andy,
Thanks for reply. I was able to trace the problem to the MI DAG dep
constructor. See this:
SU(0): %vreg1<def> = COPY %vreg10<kill>; IntRegs:%vreg1,%vreg10
# preds left : 0
# succs left : 0
# rdefs left : 1
Latency : 1
Depth : 0
Height : 0
SU(1): %vreg10<def> = LDriw %vreg9<kill>, 0;
2014 Dec 14
2
[LLVMdev] ScheduleDAGInstrs.cpp
Hello again,
Sorry -- I think I found the problem somewhere else. I was a bit confused and missed the fact that adjustChainDeps() is called a few lines down and does just what I wanted :-)
I would like to instead ask another question:
Why is I->isCtrl() used in code like
// Iterate over chain dependencies only.
for (SUnit::const_succ_iterator I = SUb->Succs.begin(), E =
2008 Feb 29
0
[LLVMdev] [PATCH] REPOST: Scheduler Fix
It's not building:
usr/include/c++/4.0.0/bits/stl_queue.h: In member function 'void
std::priority_queue<_Tp, _Sequence, _Compare>::push(const typename
_Sequence::value_type&) [with _Tp = llvm::SUnit*, _Sequence = ll\
vm::container_reference_wrapper<std::vector<llvm::SUnit*,
std::allocator<llvm::SUnit*> > >, _Compare = <unnamed>::td_ls_rr_sort]':
2017 May 02
2
When to use auto instead of iterator/const_iterator?
Hi All,
While reading LLVM source code, sometimes I am wondering when should we
use auto instead of iterator/const_iterator.
I want to use the patch [1] I sent before as an example. Could someone give
me advice/guideline here? Also, I have another
question. Sometimes the for-loop uses const_iterator, say
for (SUnit::const_succ_iterator I = SU->Succs.begin(), E =
SU->Succs.end();
2007 May 02
1
[LLVMdev] Instruction Scheduling in LLVM
Hello,
I am working with the SelectionDAG/ScheduleDAG framework to implement a variation of the List scheduling Algorithm in LLVM.
I was trying to understand the existing List scheduler implementation in LLVM. I have a doubt about the SUnits structure which contain flagged nodes together. The instructions within a Sunit are scheduled as a single unit. My understanding is that the nodes in the
2014 Dec 16
3
[LLVMdev] ScheduleDAGInstrs.cpp
Hi,
Thank you for the reply.
>It looks to me like we can choose any subset of edges here and be correct. We're basically trying to prune/pinch the DAG edges here. They can easily blow up with AA sched. I would guess that isCtrl() edges are good ones to bypass because they could be a low-latecy edges, whereas true data dependencies from a load are expected to be >higher latency, so they
2014 Jan 17
3
[LLVMdev] Artificial deps and stores
Andy, et al.,
In ScheduleDAGInstrs::buildSchedGraph, the code for handling stores has this:
if (!ExitSU.isPred(SU))
// Push store's up a bit to avoid them getting in between cmp
// and branches.
ExitSU.addPred(SDep(SU, SDep::Artificial));
This code does not seem to be in any way specific to compares; and in any case, at least on the PPC A2, scheduling stores in
2009 Jan 01
1
[LLVMdev] Win32 JIT issue + bug in ScheduleDAGSNodes.h?
Bill Wendling wrote:
> On Dec 31, 2008, at 5:57 AM, srs wrote
>> Bill Wendling wrote:
>>
>>> On Dec 30, 2008, at 4:51 PM, srs wrote:
>>>
>>>
>>>
>>>> 2. There seems to be an issue in ScheduleDAGSDNodes.h when in debug
>>>> mode. The problem is the evaluation of "&SUnits[0];" which
2014 Jan 18
3
[LLVMdev] Artificial deps and stores
On Jan 17, 2014, at 4:03 PM, Andrew Trick <atrick at apple.com> wrote:
>
> On Jan 17, 2014, at 3:54 PM, Hal Finkel <hfinkel at anl.gov> wrote:
>
>> Andy, et al.,
>>
>> In ScheduleDAGInstrs::buildSchedGraph, the code for handling stores has this:
>>
>> if (!ExitSU.isPred(SU))
>> // Push store's up a bit to avoid them
2008 Dec 31
0
[LLVMdev] Win32 JIT issue + bug in ScheduleDAGSNodes.h?
On Dec 31, 2008, at 5:57 AM, srs wrote:
> Bill Wendling wrote:
>> On Dec 30, 2008, at 4:51 PM, srs wrote:
>>
>>
>>> 2. There seems to be an issue in ScheduleDAGSDNodes.h when in debug
>>> mode. The problem is the evaluation of "&SUnits[0];" which
>>> ASSERT's in
>>> VC++'s vector[] implementation (when