Displaying 20 results from an estimated 8000 matches similar to: "How to traverse llvm DAG for analysis"
2016 Jun 27
0
How to traverse llvm DAG for analysis
Dear Raul,
Instruction selection and instruction scheduling is, to the best of my
knowledge, done at the MachineInstr (MI) IR level. The documentation
you've read is on the target independent LLVM IR.
You will probably need to read the documentation on LLVM's code
generator. The documents on Writing an LLVM Backend, the LLVM Target
Independent Code Generator, and Machine IR Format
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
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
2017 Apr 22
3
Is subclass of ScheduleDAGMILive a pre-RA scheduler?
Hi All,
The description of ScheduleDAGMILive [1] says:
ScheduleDAGMILive is an implementation of ScheduleDAGInstrs that
schedules machine instructions
while updating LiveIntervals and tracking regpressure.
Does the live interval and register pressure part of ScheduleDAGMILive
mean the subclass of ScheduleDAGMILive
is a pre-RA scheduler? I assume the post-RA scheduler no need to take
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 Mar 29
2
[LLVMdev] VLIWPacketizerList: failing to schedule terminators
On Thu, Mar 29, 2012 at 02:57:27PM -0500, Sergei Larin wrote:
> Tom,
>
> I do not have your call stack, but packetizer calls
> ScheduleDAGInstrs::buildSchedGraph to create dependency model. If this is
> the first time you use the new MI sched infrastructure (like your target has
> not implemented misched yet) there might be some work needed to implement
> couple target
2012 Apr 20
2
[LLVMdev] [RFC] Scheduler Rework
Hey Everyone,
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 challenging because we are still stuck on LLVM 2.9.
We will be upgrading
2013 Jun 28
2
[LLVMdev] MI Scheduler vs SD Scheduler?
Hi,
We are currently in the process of upgrading from LLVM 2.9 to LLVM 3.3. We are working on instruction scheduling
(mainly for register pressure reduction). I have been following the llvmdev mailing list and have learned that a machine instruction (MI)
scheduler has been implemented to replace (or work with?) the selection DAG (SD)
scheduler. However, I could not find any document that
2012 Nov 04
1
[LLVMdev] Building a data flow graph from instructions in BasicBlock
Thanks Kryzstof,
I will look at it. Is there any class that I should look at it ? What about Dataflow.h ? Since I am kind of new, I want to know which classes can help me quicker.
===========================================
Phone : 82-42-860-1838
Fax : 82-42-860-6790 Cell Phone: 82-10-7599-1981 ===========================================
--- On Sat, 11/3/12, Krzysztof Parzyszek
2012 Mar 29
0
[LLVMdev] VLIWPacketizerList: failing to schedule terminators
On Mar 29, 2012, at 1:18 PM, Tom Stellard <thomas.stellard at amd.com> wrote:
> On Thu, Mar 29, 2012 at 02:57:27PM -0500, Sergei Larin wrote:
>> Tom,
>>
>> I do not have your call stack, but packetizer calls
>> ScheduleDAGInstrs::buildSchedGraph to create dependency model. If this is
>> the first time you use the new MI sched infrastructure (like your
2017 Apr 25
2
Is subclass of ScheduleDAGMILive a pre-RA scheduler?
Hi, Matthias.
>From the class hierarchy, ScheduleDAGMILive is also a ScheduleDAGMI. I
am wondering if there will be any problem if
we use subclass of ScheduleDAGMILive as post-RA scheduler? The best
case is ScheduleDAGMILive just waste time
on book-keeping register pressure, but I am not sure if we can still
do those book-keeping after RA.
Talk about post-RA scheduler, I see there is another
2013 May 13
1
[LLVMdev] Scheduling with RAW hazards
On 09/05/2013 18:25, Andrew Trick wrote:
>
> On May 9, 2013, at 4:02 AM, Fraser Cormack <fraser at codeplay.com
> <mailto:fraser at codeplay.com>> wrote:
>
>> I have an instruction that takes no operands, and produces two
>> results, in two consecutive cycles.
>>
>> I tried both of the following to my Schedule.td file:
>>
>>
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
2013 Jul 01
0
[LLVMdev] MI Scheduler vs SD Scheduler?
Sent from my iPhone
On Jun 28, 2013, at 2:38 PM, Ghassan Shobaki <ghassan_shobaki at yahoo.com> wrote:
> Hi,
>
> We are currently in the process of upgrading from LLVM 2.9 to LLVM 3.3. We are working on instruction scheduling (mainly for register pressure reduction). I have been following the llvmdev mailing list and have learned that a machine instruction (MI) scheduler has been
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
2013 Feb 11
0
[LLVMdev] Preferential treatment of labels in MI sched DAG construction
Hi Andy,
I have to resurrect an ancient question regarding scheduling boundaries.
You might remember the reason for introduction of CanHandleTerminators to
ScheduleDAGInstrs. In short, Hexagon is currently uses DAG construction
method (buildSchedGraph) for several purposes, which includes region
formation for general VLIW packetization/bundling. As such we need to handle
pretty much all
2013 Feb 11
1
[LLVMdev] Preferential treatment of labels in MI sched DAG construction
On Feb 11, 2013, at 1:03 PM, Sergei Larin <slarin at codeaurora.org> wrote:
> Hi Andy,
>
> I have to resurrect an ancient question regarding scheduling boundaries.
>
> You might remember the reason for introduction of CanHandleTerminators to
> ScheduleDAGInstrs. In short, Hexagon is currently uses DAG construction
> method (buildSchedGraph) for several purposes,
2013 Jul 02
2
[LLVMdev] MI Scheduler vs SD Scheduler?
Thank you for the answers! We are currently trying to test the MI scheduler. We are using LLVM 3.3 with Dragon Egg 3.3 on an x86-64 machine. So far, we have run one SPEC CPU2006 test with the MI scheduler enabled using the option -fplugin-arg-dragonegg-llvm-option='-enable-misched:true' with -O3. This enables the machine scheduler in addition to the SD scheduler. We have verified this by
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 =
2014 Dec 08
3
[LLVMdev] ScheduleDAGInstrs.cpp
Hi,
Can anyone help me to understand the ScheduleDAGInstrs::buildSchedGraph() method?
I find the handling of AliasChain is disturbing since:
1. A new alias chain add deps to all possibly aliasing SUs, and then clears those lists.
2. When AliasChain is present, the addChainDependency() method is called,
but the target hook areMemAccessesTriviallyDisjoint() called inside