Displaying 20 results from an estimated 1000 matches similar to: "[LLVMdev] Question about VNInfo updates by LiveIntervals::addIntervalsForSpills"
2008 Jan 17
1
[LLVMdev] LiveInterval Questions
On Thursday 17 January 2008 13:03, Evan Cheng wrote:
> > So why does the live range extend throughout the entire basic block?
> >
> > %reg1055 doesn't appear anywhere else in the program so it shouldn't
> > be
> > live-in to the block.
>
> It could be a bug. Can you get me a test case?
I'll see if I can whittle it down. It's a pretty huge
2008 Jan 29
2
[LLVMdev] Possible LiveInterval Bug
I just ran into a problem here. I'm in SimpleRegisterCoalescing at the point
where EXTRACT_SUBREG coalescing updates live ranges of aliased
registers (around line 473 of SimpleRegisterCoalescing.cpp).
There's a call to MergeValueInAsValue at line 50. MergeValueInAsValue has
this code:
void LiveInterval::MergeValueInAsValue(const LiveInterval &RHS,
2008 Jan 17
0
[LLVMdev] LiveInterval Questions
On Jan 16, 2008, at 11:49 AM, David Greene wrote:
> I had been assuming that give a LiveRange a, a.valno->def, if
> valid, would be the same as a.start. But this is apparently not
> always the case. For example:
>
> Predecessors according to CFG: 0x839d130 (#3) 0x8462780 (#35)
> 308 %reg1051 = MOV64rr %reg1227<kill>
> 312 %reg1052 = MOV64rr %reg1228<kill>
2016 Dec 22
5
Understanding SlotIndexes
Hi all,
I'm tracking down a register allocation problem and I'm trying to
understand this piece of code in InlineSpiller::spillAroundUses:
// Find the slot index where this instruction reads and writes OldLI.
// This is usually the def slot, except for tied early clobbers.
SlotIndex Idx = LIS.getInstructionIndex(*MI).getRegSlot();
if (VNInfo *VNI =
2008 Jan 22
4
[LLVMdev] LiveInterval Splitting & SubRegisters
Evan,
Can you explain the basic mechanics of the live interval splitting code?
Is it all in LiveIntervalAnalysis.cpp under addIntervalsForSpills and child
routines? What is it trying to do?
Also, in the ancient subregister coalescing code, there used to be an update
of the SSARegMap to point subregisters to the superregister they were
coalesced to (IIRC). That has since gone away. I used to
2012 Sep 17
0
[LLVMdev] VNInfo Question
In LLVM 3.1, given a VNInfo, how do I get the range information for that
value? I've tried looking at the MachineInstr at the def point, getting
its defined register and looking at LiveIntervals to get an interval for
the register, but that doesn't always return something sane. I'm in the
middle of InlineSpiller so LiveRangeEdit is in play.
Thanks for your help!
2009 Feb 27
2
[LLVMdev] Easiest way to rewrite machine instructions when each live range of a LiveInterval may be assigned a different physical register
Hi,
I'm working on the implementation of Extended Linear Scan register
allocator as described by Sarkar & Bodik.
One of the interesting features of their algorithm is the possibility
to allocate different physical registers to different live-ranges of
the same LiveInterval. Of course, it may require some glue code to be
inserted in cases, where different physical regs were assigned to
2008 Jan 23
2
[LLVMdev] LiveInterval Splitting & SubRegisters
On Wednesday 23 January 2008 02:01, Evan Cheng wrote:
> On Jan 22, 2008, at 12:23 PM, David Greene wrote:
> > Evan,
> >
> > Can you explain the basic mechanics of the live interval splitting
> > code?
> > Is it all in LiveIntervalAnalysis.cpp under addIntervalsForSpills
> > and child
> > routines? What is it trying to do?
>
> It's splitting
2010 May 05
1
[LLVMdev] Register allocation questions
Hello,
I am currently working another register allocator for LLVM, and I have a
few questions.
I have a list of LiveIntervals that interfere with each other, and once
I figure out that I need to spill one of these, I'm using
LiveIntervals::addIntervalsForSpills to generate spill code. I'm not
sure I'm using this function correctly (or if it's even the right thing
to use).
2008 Jan 17
2
[LLVMdev] Another LiveInterval Question
Post-phi-elimination, when can a LiveInterval VNInfo have a ~1 or ~0 def
value? I've seen ~0 on intervals created for spills. Can it happen anywhere
else?
-Dave
2008 Jan 25
0
[LLVMdev] LiveInterval Splitting & SubRegisters
On Jan 23, 2008, at 2:40 PM, David Greene <dag at cray.com> wrote:
> On Wednesday 23 January 2008 02:01, Evan Cheng wrote:
>> On Jan 22, 2008, at 12:23 PM, David Greene wrote:
>>> Evan,
>>>
>>> Can you explain the basic mechanics of the live interval splitting
>>> code?
>>> Is it all in LiveIntervalAnalysis.cpp under
2008 Jan 23
0
[LLVMdev] LiveInterval Splitting & SubRegisters
On Jan 22, 2008, at 12:23 PM, David Greene wrote:
> Evan,
>
> Can you explain the basic mechanics of the live interval splitting
> code?
> Is it all in LiveIntervalAnalysis.cpp under addIntervalsForSpills
> and child
> routines? What is it trying to do?
It's splitting live intervals that span multiple basic blocks. That
is, when an interval is spilled, it
2008 Feb 15
2
[LLVMdev] LiveInterval spilling (was LiveInterval Splitting & SubRegisters)
Hi Evan,
I have a few questions about current implementation of live intervals
spilling, which is required for the implementation of Extended Linear
Scan algorithm.
--- Evan Cheng <evan.cheng at apple.com> wrote:
> > On Wednesday 23 January 2008 02:01, Evan Cheng wrote:
> >> On Jan 22, 2008, at 12:23 PM, David Greene wrote:
> >>> Evan,
> >>>
>
2009 Feb 27
0
[LLVMdev] Easiest way to rewrite machine instructions when each live range of a LiveInterval may be assigned a different physical register
On Feb 27, 2009, at 7:20 AM, Roman Levenstein wrote:
> Hi,
>
> I'm working on the implementation of Extended Linear Scan register
> allocator as described by Sarkar & Bodik.
> One of the interesting features of their algorithm is the possibility
> to allocate different physical registers to different live-ranges of
> the same LiveInterval. Of course, it may require
2011 Dec 03
1
[LLVMdev] New strict-aliasing warning?
When compiling trunk using gcc 4.1.2 on linux/ppc64, I now see a warning
that I don't remember seeing previously:
llvm[2]: Compiling InlineSpiller.cpp for Release+Asserts build
/src/llvm-trunk-dev/include/llvm/ADT/PointerIntPair.h: In member
function ‘const PointerTy* llvm::PointerIntPair<PointerTy, IntBits,
IntType, PtrTraits>::getAddrOfPointer() const [with PointerTy = void*,
unsigned
2007 Aug 07
0
[LLVMdev] Spillers
On 8/7/07, David Greene <dag at cray.com> wrote:
>
> On Monday 06 August 2007 12:15, Anton Vayvod wrote:
>
> > Spill intervals must be precolored because they can't be spilled once
> more.
> > They are the shortest intervals precisely over each def/use of the
> original
> > interval. That is why they also have their weights set to #INF.
>
> Yes,
2008 Jan 17
0
[LLVMdev] Another LiveInterval Question
On Jan 17, 2008, at 1:49 PM, David Greene wrote:
> Post-phi-elimination, when can a LiveInterval VNInfo have a ~1 or ~0
> def
> value? I've seen ~0 on intervals created for spills. Can it happen
> anywhere
> else?
They can be created during coalescing.
Evan
>
>
> -Dave
>
2009 Feb 28
1
[LLVMdev] Easiest way to rewrite machine instructions when each live range of a LiveInterval may be assigned a different physical register
Hi Evan,
Thanks a lot for your reply!
2009/2/27 Evan Cheng <evan.cheng at apple.com>:
>
> On Feb 27, 2009, at 7:20 AM, Roman Levenstein wrote:
>
>> Hi,
>>
>> I'm working on the implementation of Extended Linear Scan register
>> allocator as described by Sarkar & Bodik.
>> One of the interesting features of their algorithm is the possibility
2014 Dec 09
2
[LLVMdev] InlineSpiller.cpp bug?
Hi Jonas,
Thanks for your patience.
After spending some time looking at the additional output you gave me, I agree that your fix is the right one.
I was worried that this problem may arise because we were spilling not real user, but in fact what I thought was the problem is an optimization we could do :).
See my comments inlined for a few nitpicks before you commit.
Thanks again,
-Quentin
On
2008 Jan 16
4
[LLVMdev] LiveInterval Questions
I had been assuming that give a LiveRange a, a.valno->def, if
valid, would be the same as a.start. But this is apparently not
always the case. For example:
Predecessors according to CFG: 0x839d130 (#3) 0x8462780 (#35)
308 %reg1051 = MOV64rr %reg1227<kill>
312 %reg1052 = MOV64rr %reg1228<kill>
316 %reg1053 = MOV64rr %reg1229<kill>
320 %reg1054 = MOV64rr