Displaying 20 results from an estimated 600 matches similar to: "[LLVMdev] MIScheduler + AA: Missed scheduling opportunity in MIsNeedChainEdge. Bug?"
2016 Feb 03
2
[buildSchedGraph] memory dependencies
Hi,
(This only concerns MISNeedChainEdge(), and is separate from D8705)
I found out that the MIScheduler (pre-ra) could not handle a simple test
case (test/CodeGen/SystemZ/alias-01.ll), with 16 independent load / add
/ stores.
The buildSchedGraph() put too many edges between memory accesses, because
1) There was no implementation of areMemAccessesTriviallyDisjoint() for
SystemZ.
2) Type
2015 Jan 30
2
[LLVMdev] [PATCH] Bugfix for missed dependency from store to load in buildSchedGraph().
Hi,
I have revisited the issue in buildSchedGraph() I talked about previously, and attached a few patches. The first tries to fix the issue, and the other two try to illustrate associated issues, emerged from applying it.
Is it OK to commit the first patch?
[PATCH] Bugfix for missed dependency from store to load in buildSchedGraph().
Bugfix for missed dependency from store to load in
2014 Dec 19
2
[LLVMdev] ScheduleDAGInstrs.cpp
Hi,
I write again regarding buildSchedGraph(), as I am still not happy about things there.
I have found at least two examples which do not work out:
1)
SU(2) Store "Value A"
SU(1) Store "Value A"
SU(0) Load "Value A"
If MIsNeedChainEdge() returns false for SU(0) and SU(1), SU(0) is inserted into RejectedMemNodes and removed from its MemUses SU list, as this
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
2015 Feb 10
2
[LLVMdev] [PATCH] Bugfix for missed dependency from store to load in buildSchedGraph().
Hi,
I have committed the patch now (svn id 228686).
Regarding the commenting you requested, I attach a patch. Feel free to make changes.
I found it difficult to explain what the code does in isolated places, and thus kept my
commenting quite short. This makes me feel like the code needs a bit of refactorization
to make it more simple and understandable.
Looking at the possibility of
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 Apr 12
0
[LLVMdev] LLVMBuilder vs LLVMFoldingBuilder
Duncan Sands wrote:
> + GetElementPtrInst *CreateStructGEP(Value *Ptr, unsigned Idx,
> + const char *Name = "") {
> + llvm::Value *Idxs[] = {
> + ConstantInt::get(llvm::Type::Int32Ty, 0),
> + ConstantInt::get(llvm::Type::Int32Ty, Idx)
> + };
> + return Insert(GetElementPtrInst::Create(Ptr, Idxs, Idxs+2, Name));
2007 Jun 06
2
"Bad type" when setting PML4 on x86_64
I''m to porting a lightweight kernel to Xen 3.0.4-x86_64 and have
run into a problem while setting the PML4. Xen complains that
it has a bad type of ''PGT_writable_page'' (e8000001), while it expects
80000000.
However, I''m almost certain that this is not the case. I added a routine
to do a depth first search of the four page table levels looking for this
machine
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
2010 Feb 11
3
[LLVMdev] Adding NonTemporal
While hacking around in the SelectionDAG build code, I've made the
isVolatile, (new) isNonTemporal and Alignment parameters to
SelectionDAG::getLoad/getStore and friends non-default.
I've already caught one bug in the XCore backend by doing this:
if (Offset % 4 == 0) {
// We've managed to infer better alignment information than the load
// already has. Use an aligned
2010 Feb 12
0
[LLVMdev] Adding NonTemporal
On Thursday 11 February 2010 17:40:24 David Greene wrote:
> While hacking around in the SelectionDAG build code, I've made the
> isVolatile, (new) isNonTemporal and Alignment parameters to
> SelectionDAG::getLoad/getStore and friends non-default.
>
> I've already caught one bug in the XCore backend by doing this:
>
> if (Offset % 4 == 0) {
> // We've
2016 Oct 28
2
mischeduler
Hi,
Regarding the mischeduler, I wonder
// For loops that are acyclic path limited, aggressively schedule for
// latency. This can result in very long dependence chains scheduled in
// sequence, so once every cycle (when CurrMOps == 0), switch to normal
// heuristics.
if (Rem.IsAcyclicLatencyLimited && !Zone->getCurrMOps() &&
tryLatency(TryCand, Cand, *Zone))
2013 Feb 27
1
[LLVMdev] MIScheduler / bundling
Hi,
I am looking at the Hexagon MI Scheduling and trying to adapt it to my target.
As far as I can see, Hexagon does not bundle the VLIW-bundles by calling bundleWithPred() on MIs of the completed cycle.
First of all, why is this not done? SlotIndexes seems to have at least some support for this, by calling getBundleStart() for each MI that is looked up.
A follow up question is then, how would
2017 Nov 25
2
mischeduler (pre-RA) experiments
>
> Of course, you want to duplicate as little of the generic scheduling logic
> as you can. So I think the challenge is how to expose the
> generic scheduler's functionality as a base class or composition of
> utilities so that defining your strategy doesn't require too much
> copy-paste.
Isn't GCNMaxOccupancySchedStrategy [1] already an example on
using
2017 Aug 12
3
Mischeduler: Unknown reason for peak register pressure increase
I am working on a project where we are integrating an existing pre-RA scheduler into LLVM and we are trying to match our peak register pressure values with the machine instruction schedulers values while using X86. I am finding some mismatches in test cases like the one attached. The registers "AH" and "AL" are live-out but not live-in and I don't see that they are defined
2017 Nov 23
3
mischeduler (pre-RA) experiments
Hi,
I have been experimenting for a while with tryCandidate() method of the
pre-RA mischeduler. I have by chance found some parameters that give
quite good results on benchmarks on SystemZ (on average 1% improvement,
some improvements of several percent and very little regressions).
Basically, I add a "latency heuristic boost" just above processor
resources checking:
2008 Apr 11
4
[LLVMdev] LLVMBuilder vs LLVMFoldingBuilder
Hi Dominic,
+//===-- llvm/Support/IRBuilder.h - Builder for LLVM Instrs -----*- C++ -*-===//
is this line the right length? It seems shorter than the similar lines below like
this one:
+//===----------------------------------------------------------------------===//
+ GetElementPtrInst *CreateStructGEP(Value *Ptr, unsigned Idx,
+ const char *Name =
2008 Jul 16
1
[LLVMdev] atomic memoperand patch
Just noticed that when we generate a custom lowering for some atomics
that we forgot to transfer the MemOperand to the new instruction that
touches memory.
-- Mon Ping
Index: lib/Target/X86/X86ISelLowering.cpp
===================================================================
--- lib/Target/X86/X86ISelLowering.cpp (revision 53702)
+++ lib/Target/X86/X86ISelLowering.cpp (working copy)
@@
2013 Apr 04
0
[LLVMdev] Is r174746 broken on ARM?
----- Original Message -----
> From: "Dmitry Antipov" <antipov at dev.rtsoft.ru>
> To: "Hal Finkel" <hfinkel at anl.gov>
> Cc: "Renato Golin" <renato.golin at linaro.org>, llvmdev at cs.uiuc.edu
> Sent: Thursday, April 4, 2013 3:22:05 AM
> Subject: Is r174746 broken on ARM?
>
> Hello Hal,
>
> I have a strong suspicion
2013 Apr 04
2
[LLVMdev] Is r174746 broken on ARM?
Hello Hal,
I have a strong suspicion that your constant folding optimization
introduced at r174746 is broken on ARM. There is a bug about it:
http://llvm.org/bugs/show_bug.cgi?id=15581
There is no such issue with 3.2, and reverting r174746 on top of
r178740 also fixes the problem. I'm trying to fix it myself, but
still have no good ideas; so it would be great to have an advice
from you.