Displaying 20 results from an estimated 5000 matches similar to: "[LLVMdev] Instruction Scheduling in LLVM"
2010 Aug 08
2
[LLVMdev] Usage of pointers to elements of a std::vector that might be reallocated
Hello,
I was trying to interface a custom backend instruction scheduler with llvm
code when I realize something terrible. The scheduling code builds a graph
made up of SUnit * nodes (see ScheduleDAG*.{cpp,h}). These SUnits nodes are
allocated via a std::vector< SUnit >.
This isn't a problem as long as the pointers are taken after the vector is
fully filled and the vector never changes
2010 Aug 08
0
[LLVMdev] Usage of pointers to elements of a std::vector that might be reallocated
> Not only this code does not compile with NDEBUG set
I may be missing something, but why does it not compile with -DNDEBUG?
assert() macro expands to noop when NDEBUG is set.
Eugene
On Sun, Aug 8, 2010 at 2:19 PM, Amaury Pouly <amaury.pouly at gmail.com> wrote:
> Hello,
> I was trying to interface a custom backend instruction scheduler with llvm
> code when I realize
2010 Aug 08
0
[LLVMdev] Usage of pointers to elements of a std::vector that might be reallocated
Right, later in the same file we have:
// Reserve entries in the vector for each of the SUnits we are creating. This
// ensure that reallocation of the vector won't happen, so SUnit*'s won't get
// invalidated.
// FIXME: Multiply by 2 because we may clone nodes during scheduling.
// This is a temporary workaround.
SUnits.reserve(NumNodes * 2);
So for some reason *2 is
2010 Aug 08
2
[LLVMdev] Usage of pointers to elements of a std::vector that might be reallocated
Oh yes you're right, I missed that :) But the point still hold.
Amaury Pouly
2010/8/8 Eugene Toder <eltoder at gmail.com>
> > Not only this code does not compile with NDEBUG set
>
> I may be missing something, but why does it not compile with -DNDEBUG?
> assert() macro expands to noop when NDEBUG is set.
>
> Eugene
>
> On Sun, Aug 8, 2010 at 2:19 PM, Amaury
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
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
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
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
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
2008 Dec 31
4
[LLVMdev] Win32 JIT issue + bug in ScheduleDAGSNodes.h?
Hi all,
While testing my compiler on win32 in JIT mode, I ran into a couple of
issues:
1. I linked the compiler with the lib files resulting from the cmake
created VS.NET build. While everything built just fine, the
ExecutionEngine::create call always returned NULL. The fix was to also
link with JIT.obj (thanks aKor for pointing me in the right direction).
I would have thought that linking
2013 Mar 12
1
[LLVMdev] hazard scheduling nodes
Hi Andy,
The thing is that I was trying to build a sched graph in other places than these two standard scheduling passes. For instance, in pre-emit. I would like to reschedule a basic block on my vliw target just before assembly emission.
I tried to add SUnits for hazards in an experiment, but this gave very weird errors... even while allocating extra space in SUnits vector. For some function, I
2012 Oct 17
1
[LLVMdev] MI DAG constructor indeterminism
Andy,
So if it is not a feature. then couple questions:
First, I also do not see an easy way to restructure work sets in this case
- so let's assume std::map is needed here. Then the way I understand it,
there are five objects that cause the indeterminism:
std::map<const Value *, SUnit *> AliasMemDefs, NonAliasMemDefs;
std::map<const Value *, std::vector<SUnit
2013 Feb 21
2
[LLVMdev] hazard scheduling nodes
Hi,
I am trying to add Hazard scheduling nodes after buildSchedGraph(), with a scheduler derived from ScheduleDAGInstrs. I get weird errors, so I wonder what I am doing wrong?
What I am doing right now is:
I have a created MI with opcode HAZARD that does not have parent, and I greate a SUnit(HazardMI). I use this one HazardMI for all hazard nodes.
I remove all edges using removePred.
I insert
2017 Jun 09
2
[Newbie Question] Compute a schedule region's scheduled cycles.
Also you might need to check use PostRASchedulerList or
PostMachineScheduler,
PostRASchedulerList is considered deprecated as mentioned in [1].
[1] http://lists.llvm.org/pipermail/llvm-dev/2017-April/112348.html
HTH,
chenwj
2017-06-10 4:03 GMT+08:00 陳韋任 <chenwj.cs97g at g2.nctu.edu.tw>:
> Not saying I am totally understand how thing works, but I think you're
> misleading
>
2008 Dec 31
2
[LLVMdev] Win32 JIT issue + bug in ScheduleDAGSNodes.h?
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 _HAS_ITERATOR_DEBUGGING is on).
>>
>> As a work-around, I commented out the debug
2013 Mar 09
0
[LLVMdev] hazard scheduling nodes
On Feb 21, 2013, at 9:11 AM, Jonas Paulsson <jonas.paulsson at ericsson.com> wrote:
> Hi,
>
> I am trying to add Hazard scheduling nodes after buildSchedGraph(), with a scheduler derived from ScheduleDAGInstrs. I get weird errors, so I wonder what I am doing wrong?
>
> What I am doing right now is:
>
> I have a created MI with opcode HAZARD that does not have
2012 Jan 05
1
[LLVMdev] Non-Chain Chains
Following up on my call schedule posting from yesterday, I am now trying
to add edges from the call to the instruction before it.
This seemed easiest to do in SelectionDAGBuilder but it is troublesome.
A couple of questions:
- How do I get the previous instruction that was translated?
prior(CS.getInstruction()) in visitCall returns something invalid.
When I try to call getValue on the
2008 Dec 31
0
[LLVMdev] Win32 JIT issue + bug in ScheduleDAGSNodes.h?
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 _HAS_ITERATOR_DEBUGGING is on).
>
> As a work-around, I commented out the debug code (see "patch" below.)
>
> What would the
2018 Jun 20
2
PostRAScheduler
Is there any specific documentation on this? Is there a point of contact
for this file that I might bug?
So I have an instruction that needs noops inserted and it appears that the
noops are being inserted in the EmitSchedule function of the
PostRAScheduler. From the loop in EmitSchedule it looks like it's inserting
noops whenever SUnit is NULL. I don't see anything in the DAG that appears
2012 Oct 17
0
[LLVMdev] MI DAG constructor indeterminism
On Oct 16, 2012, at 1:43 PM, Sergei Larin <slarin at codeaurora.org> wrote:
>
> Andy,
>
> This is less of a question but rather a status quo verification…
>
> We currently have certain indeterminism in MI scheduler DAG construction – it is introduces by the use of std::map/std::set during edge traversal.
> Result – a random variation in SUnit edge order