Displaying 17 results from an estimated 17 matches for "predbb".
2014 Jun 17
2
[LLVMdev] Question about 'DuplicateInstruction' function of TailDuplicatePass in CodeGen
Hi all,
I have faced a little bit of a strange transformation from the
TailDuplicatePass In CodeGen. When the pass clones the contents of
TailBB into PredBB, the bundled instructions in TailBB are not bundled
in PredBB. I think the reason why it is not bundled is that the
'DuplicateInstruction' function does not set up the flag of the first
instruction of the bundle in PredBB when it is cloned from TailBB. If
the first instruction of the bu...
2018 Feb 27
2
CallSiteSplitting and musttail calls
I think you realized this now, but to be clear:
More likely, you've found some bugs.
Unfortunately, not all of these utilities have good unit tests (though they
should!).
This would not be the first set of bugs people have found wrt to very
start/end of blocks, or bb == predbb issues.
On Sat, Feb 24, 2018 at 12:58 PM, Fedor Indutny via llvm-dev <
llvm-dev at lists.llvm.org> wrote:
> Update:
>
> I was able to make progress on it today ( See https://reviews.llvm.org/
> D43729 ). Apparently my problems were:
>
> * Iterating through the instruction...
2018 Feb 28
0
CallSiteSplitting and musttail calls
...you realized this now, but to be clear:
> More likely, you've found some bugs.
> Unfortunately, not all of these utilities have good unit tests (though
> they should!).
>
> This would not be the first set of bugs people have found wrt to very
> start/end of blocks, or bb == predbb issues.
>
Coincidentally I stumbled over a similar issue with bb == predbb in
DuplicateInstructionsInSplitBetween too and put up a patch trying to fix
it https://reviews.llvm.org/D43822
>
> On Sat, Feb 24, 2018 at 12:58 PM, Fedor Indutny via llvm-dev
> <llvm-dev at lists.llvm....
2019 Oct 30
2
How to make ScalarEvolution recompute SCEV values?
...lonedLoop = cloneLoopWithPreheader(PreHeader, PreHeader, L, VMap, NameSuffix, LI, &DT, Blocks);
VMap[ExitBlock] = PreHeader; // chain: cloned loop -> original loop
remapInstructionsInBlocks(Blocks, VMap);
// remap original predecessors to the cloned loop
for (BasicBlock *PredBB : AllPredecessors) {
Instruction *TI = PredBB->getTerminator();
for (unsigned i = 0; i < TI->getNumOperands(); i++) {
if (TI->getOperand(i) == PreHeader)
TI->setOperand(i, ClonedLoop->getLoopPreheader());
}
}
return...
2016 Mar 04
2
PHI node to different register class vs TailDuplication
...B#2 BB#3
%vreg2<def> = PHI %vreg0, <BB#2>, %vreg1, <BB#3>; rN:%vreg2
aNlh_0_7:%vreg0 aNlh_rN:%vreg1
mv_a32_r16_rmod1 %vreg3, %vreg2; aN32_0_7:%vreg3 rN:%vreg2
brr_uncond <BB#6>;
Successors according to CFG: BB#6(?%)
Then TailDuplication runs
Tail-duplicating into PredBB: BB#2: derived from LLVM BB %bb2
[...]
From Succ: BB#4: derived from LLVM BB %bb4
and we get:
BB#2: derived from LLVM BB %bb2
Predecessors according to CFG: BB#1
%vreg12<def> = mv16Sym <ga:@a>; rN:%vreg12
%vreg13<def> = mv_nimm6_ar16 0; aNlh_rN:%vreg13
mv_ar16_r16_rmod1...
2008 Jan 22
3
[LLVMdev] Walking all the predecessors for a basic block
Hi all,
Is there a way to walk through ALL the predecessors of a basic block
in a CFG. I tried to iterate over the preds using this method
for (pred_iterator PI = pred_begin(BB), E = pred_end(BB); PI != E; ++I) {
BasicBlock *PredBB = *PI;
}
but this only gives the immediate predecessors for a basic block.
For example, in this sample control flow graph.
entry -> bb1 -> bb2 -> bb4 -> return
| |
bb3 <-|
walking over the predecessors for bb2 only gives bb3 and bb1....
2009 May 19
3
[LLVMdev] llvm-java
On Tue, May 19, 2009 at 12:30 PM, Nicolas Geoffray
<nicolas.geoffray at lip6.fr> wrote:
>> The pi functions can be implemented with copy instructions.
>
> Store instructions?
I would assume something more like "select i1 true, <ty> %val, <ty> undef".
-Eli
2009 May 20
0
[LLVMdev] llvm-java
...as Geoffray
> <nicolas.geoffray at lip6.fr> wrote:
>>> The pi functions can be implemented with copy instructions.
>> Store instructions?
>
> I would assume something more like "select i1 true, <ty> %val, <ty> undef".
%x = phi <ty> [%val, %predbb].
Nick
2015 Jul 28
2
[LLVMdev] RFC: LoopEditor, a high-level loop transform toolkit
...(Instruction *OldI, IRBuilder<> &IRB) {
> if (isControlFlowInst(OldI)) return IRB.CreateExtractElement; // Don't
> vectorize branches
> return createVectorVersionOfInstruction(OldI, VF, IRB); // Defined
> somewhere in LoopVectorize
> }
> };
> BasicBlock *PredBB;
> Delegate D;
> LoopEditor LE(L, DT, SE, LI);
> LoopEditor VectorLE = LE.versionWidenAndInterleaveLoop(UF, PredBB, &D);
> VectorLE.widen(VF); // Widen further, so it's widened by VF*UF. Only
> affects induction variable steps and trip count.
>
> How does that look to y...
2018 Sep 20
2
Interest in fast BitVector?
Some time ago I developed a fast BitVector class to use in some research
here. It uses expression templates to fuse operation loops and runs
much faster than the existing BitVector for some important use-cases.
It also has the ability to efficiently report if a BitVector's contents
changed after some operation. For example:
ETBitVector A = ...
ETBitVector B = ...
ETBitVector C = ...
bool
2008 Jan 22
0
[LLVMdev] Walking all the predecessors for a basic block
..., Prabhat Kumar Saraswat wrote:
> Hi all,
>
> Is there a way to walk through ALL the predecessors of a basic block
> in a CFG. I tried to iterate over the preds using this method
>
> for (pred_iterator PI = pred_begin(BB), E = pred_end(BB); PI != E; +
> +I) {
> BasicBlock *PredBB = *PI;
> }
>
> but this only gives the immediate predecessors for a basic block.
>
> For example, in this sample control flow graph.
>
> entry -> bb1 -> bb2 -> bb4 -> return
> | |
> bb3 <-|
>
>
> walking o...
2008 Jan 23
1
[LLVMdev] Walking all the predecessors for a basic block
...gt; Hi all,
> >
> > Is there a way to walk through ALL the predecessors of a basic block
> > in a CFG. I tried to iterate over the preds using this method
> >
> > for (pred_iterator PI = pred_begin(BB), E = pred_end(BB); PI != E; +
> > +I) {
> > BasicBlock *PredBB = *PI;
> > }
> >
> > but this only gives the immediate predecessors for a basic block.
> >
> > For example, in this sample control flow graph.
> >
> > entry -> bb1 -> bb2 -> bb4 -> return
> > | |
> >...
2013 Jun 04
0
[LLVMdev] MachineBasicBlock::addLiveIn errors
...gt; FBB->addLiveIn(Def);
==== //dwarc/Tools/MetaWare/Toolset/main/dev/llvm/lib/CodeGen/TailDuplication.cpp#6 - /remote/arctools/marksl/marksl_1/llvm/lib/CodeGen/TailDuplication.cpp ====
798c798
< if (!RegsLiveAtExit[*I])
---
> if (!RegsLiveAtExit[*I] && !PredBB->isLiveIn(*I))
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130604/8aee9038/attachment.html>
2018 Feb 24
0
CallSiteSplitting and musttail calls
Update:
I was able to make progress on it today ( See
https://reviews.llvm.org/D43729 ). Apparently my problems were:
* Iterating through the instruction/block list after erasing
block/instruction
* Trying to split block after removing one predecessor
Regarding the latter, it appears that semantics of
`DuplicateInstructionsInSplitBetween` change significantly in such case,
and it starts to loop
2018 Feb 24
2
CallSiteSplitting and musttail calls
Hello!
I've discovered that `CallSiteSplitting` optimization doesn't support
musttail calls. The easiest fix as it stands is disabling it for such call
sites: https://reviews.llvm.org/D43729 . However, I'm not happy with such
contribution.
My more sophisticated attempt has failed due to my poor understanding of
llvm internals. Here is the attempted patch:
2007 Dec 20
4
[LLVMdev] First time!
Hi!
I want to know
How to count the number of predecessors for each basic
block?
Thank You
____________________________________________________________________________________
Never miss a thing. Make Yahoo your home page.
http://www.yahoo.com/r/hs
2009 May 20
3
[LLVMdev] llvm-java
...ay at lip6.fr> wrote:
>>>> The pi functions can be implemented with copy instructions.
>>> Store instructions?
>>
>> I would assume something more like "select i1 true, <ty> %val, <ty>
>> undef".
>
> %x = phi <ty> [%val, %predbb].
FWIW, I strongly recommend going this direction. It'll buy you a lot
of free functionality, like replaceAllUsesWith().
--Owen
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2620 bytes
Desc: not availab...