Displaying 20 results from an estimated 20000 matches similar to: "[LLVMdev] isNew && "Node emitted out of order - early""
2010 May 19
1
[LLVMdev] Scheduled Instructions go missing
All,
I'm working on a new scheduler. I have a basic block for
which my scheduler generates bad code. The C code looks
like
int j, *p;
if ((j = *p++) != 0) {...}
My scheduler emits (x86, AT&T)
mov p, %rax
mov (%rax), %rax
mov %rax, j
addq $0x04, p
je ...
Notice there is no test instruction. The default list
scheduler generates
mov p, %rax
mov (%rax), %rax
mov %rax, j
addq $0x04,
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
2010 Feb 04
1
[LLVMdev] Instruction Itineraries
All,
I am working on a scheduler for X86 and would like to
include instruction latencies. It appears that this
information is gathered from instruction itineraries, but
that there isn't an itinerary for X86. I also can't seem
to find documentation on how to add this for X86. Any
pointers would be helpfull.
Aran
-------------- next part --------------
A non-text attachment was
2010 May 07
1
[LLVMdev] Missuse of xmm register on X86-64
All,
I've been working on a new scheduler and have
somehow affected register selection. My problem is that an
xmm register is being used as an index expression.
Specifically,
addss (%xmm1,%rax,4), %xmm0
I like the idea of a floating-point index, but, like the
assembler, I don't know what that means. Any suggestions
on where I should look for a solution to my problem?
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
2010 Mar 26
2
[LLVMdev] X86 Target instruction definitions
All,
Where are the SSE instructions defined? Specifically, I
cannot find the def for ADDSDrr.
Aran
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 194 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20100326/130b2e02/attachment.sig>
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
///
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
2010 Feb 13
1
[LLVMdev] llvm-gcc 4.2
All,
I'm trying to build llvm-gcc 4.2 from svn (as of about a
week ago). I'm getting:
../../llvm-gcc-4.2/libcpp/expr.c: In function 'num_negate':
../../llvm-gcc-4.2/libcpp/expr.c:1114: internal compiler
error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
I would like to do some debugging, but I don't see
where
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
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
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
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 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 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
2013 Aug 21
0
[LLVMdev] PrescheduleNodesWithMultipleUses() causing failure in PickNodeToScheduleBottomUp() ???
Here is a bit more data.
After PrescheduleNodesWithMultipleUses has been run, the following Predecessor/Successor links are 'dumpAll'ed.
(I attach the full dumpAll before & after "Prescheduling SU #7 next to PredSU #4 to guide scheduling in the presence of multiple uses")
SU(3)
Predecessors:
val SU(5): Latency=1
ch SU(7): Latency=1
val SU(7): Latency=1
SU(7):
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]':
2013 Aug 21
2
[LLVMdev] PrescheduleNodesWithMultipleUses() causing failure in PickNodeToScheduleBottomUp() ???
Hi,
I have reasoned through and believe the problem is with the PrescheduleNodesWithMultipleUses.
Take the following DAG (arrow to predecessor):
Destroy Destroy
^ ^
| |
| |
SetUp----->PredSU <-----SU
^ ^ ^
| | |
| | |
----------- |