Displaying 10 results from an estimated 10 matches for "localspiller".
2009 Feb 05
2
[LLVMdev] LLVM misses some cross-MBB and loop optimizations compared to GCC
Hi,
While testing my new register allocators on some test-cases, I've
noticed that LLVM misses sometimes some optimization opportunities:
1) LocalSpiller::RewriteMBB seems not to propagate the information
about e.g. Spills between MBBs.In many cases, where MBB B1 has only
one predecessor MBB B2, B1 could reuse the information about the
physical registers that are in the live-out set of B2. This could help
to e.g. eliminate some useless reloads from...
2009 Feb 06
0
[LLVMdev] LLVM misses some cross-MBB and loop optimizations compared to GCC
...n you file bugzilla reports? I'll look at the first one soon.
Evan
On Feb 5, 2009, at 8:08 AM, Roman Levenstein wrote:
> Hi,
>
> While testing my new register allocators on some test-cases, I've
> noticed that LLVM misses sometimes some optimization opportunities:
>
> 1) LocalSpiller::RewriteMBB seems not to propagate the information
> about e.g. Spills between MBBs.In many cases, where MBB B1 has only
> one predecessor MBB B2, B1 could reuse the information about the
> physical registers that are in the live-out set of B2. This could help
> to e.g. eliminate some u...
2008 May 09
2
[LLVMdev] Complicated Remat Question
...n %reg1364 is spilled and assigned a stack slot.
When rewriting instructions after regalloc, we come across this instruction:
%XMM3<def> = MOVSDrr %reg1461, %R12<imp-use>
%reg1461 was marked as rematerializable (from when it was created at the time
%reg1235 was spilled). Dutifully, LocalSpiller inserts the remat def
instruction:
%reg1235<def> = FsMOVLPDrm %reg1097, 1, %reg1364, 8, Mem:LD(8,8) [tmp17641765
+ 0]
It then processes all operands of this instruction. It sees %reg1364 and
promptly asserts at line 774 of VirtRegMap.cpp because %reg1364 doesn't
have a corresponding...
2009 Mar 20
0
[LLVMdev] new warnings
...ector&,
std::vector<llvm::MachineOperand*,
std::allocator<llvm::MachineOperand*> >&, const
llvm::TargetRegisterInfo*)':
llvm/llvm/lib/CodeGen/Spiller.cpp:221: warning: unused variable 'TID'
llvm/llvm/lib/CodeGen/Spiller.cpp: In member function 'void
llvm::LocalSpiller::TransferDeadness(llvm::MachineBasicBlock*,
unsigned int, unsigned int, llvm::BitVector&,
std::vector<llvm::MachineOperand*,
std::allocator<llvm::MachineOperand*> >&)':
llvm/llvm/lib/CodeGen/Spiller.cpp:884: warning: unused variable 'TID'
llvm/llvm/lib/CodeGen/...
2008 May 09
0
[LLVMdev] Complicated Remat Question
On Friday 09 May 2008 13:20, David Greene wrote:
> One is that %reg1461 is assigned a register but LocalSpiller still tries to
> remat it instead of just using the register it was assigned to. I think
> it's easy enough to fix this problem, but I don't think this gets at the
> deeper issue.
Duh. Of course this isn't a problem. We have to remat (or load) this because
it's the resu...
2008 Sep 03
2
[LLVMdev] Codegen/Register allocation question.
...out licensing issues and found some time, so I'm
trying to port my PBQP register allocator to 2.4 in order to
contribute it (if you want it). I've run into a bug that has me
confused though.
I'm currently failing the following assertion:
llc: VirtRegMap.cpp:1733:
void<unnamed>::LocalSpiller::RewriteMBB(llvm::MachineBasicBlock&,
llvm::VirtRegMap&): Assertion `KillRegs[0] == Dst' failed.
when attempting to allocate this machine function:
entry:
4 %reg1024<def,dead> = MOV32rr %EDI<kill>
12 %reg1025<def,dead> = MOV64rr %RSI<kill>
20 AD...
2008 Jul 30
2
[LLVMdev] Really nasty remat bug [LONG]
...like this:
#####
[%reg2561 -> R12]
[%reg2562 -> R14]
[%reg2563 -> R12]
[%reg2564 -> R12]
[%reg2565 -> R12]
[%reg2618 -> R12]
[%reg2561 -> fi#165]
[%reg2562 -> fi#165]
[%reg2563 -> fi#165]
[%reg2564 -> fi#165]
[%reg2565 -> fi#165]
[%reg2618 -> fi#184]
#####
Now LocalSpiller comes along to do its work. The code before the spiller runs
looks like this (instructions in [] are added by me to show what a naive
spiller would do, just to show that stack slots line up correctly):
#####
[%reg2563 = remat $32]
2800 %reg2563<def> = SUB64rr %reg2563, %reg1589, %EFLAGS&l...
2006 Aug 14
2
[LLVMdev] Folding instructions
...nsigned
int, llvm::VirtRegMap::ModRef> > > >::erase (this=0x8d1afcc,
__x=@0xbfffe57c) at /usr/include/c++/4.0.0/bits/stl_multimap.h:414
#5 0x0073e0e4 in llvm::VirtRegMap::RemoveFromFoldedVirtMap
(this=0x8d1afa0, MI=0x8b417f0) at VirtRegMap.h:145
#6 0x0019f398 in (anonymous namespace)::LocalSpiller::RewriteMBB
(this=0x8b29460, MBB=@0x8b31230, VRM=@0x8d1afa0) at VirtRegMap.cpp:715
#7 0x007435b8 in (anonymous
namespace)::LocalSpiller::runOnMachineFunction (this=0x8b29460,
MF=@0x8b2b9d0, VRM=@0x8d1afa0) at VirtRegMap.cpp:219
#8 0x00155708 in (anonymous
namespace)::RegAllocChordal_Fer::runOnMac...
2008 Sep 04
0
[LLVMdev] Codegen/Register allocation question.
...or to 2.4 in order to
Nice! We would definitely welcome your contribution.
>
> contribute it (if you want it). I've run into a bug that has me
> confused though.
>
> I'm currently failing the following assertion:
>
> llc: VirtRegMap.cpp:1733:
> void<unnamed>::LocalSpiller::RewriteMBB(llvm::MachineBasicBlock&,
> llvm::VirtRegMap&): Assertion `KillRegs[0] == Dst' failed.
>
>
> when attempting to allocate this machine function:
>
> entry:
> 4 %reg1024<def,dead> = MOV32rr %EDI<kill>
> 12 %reg1025<def,dead>...
2008 May 09
2
[LLVMdev] Complicated Remat Question
On May 9, 2008, at 12:21 PM, David Greene wrote:
> On Friday 09 May 2008 13:20, David Greene wrote:
>
>> One is that %reg1461 is assigned a register but LocalSpiller still
>> tries to
>> remat it instead of just using the register it was assigned to. I
>> think
>> it's easy enough to fix this problem, but I don't think this gets
>> at the
>> deeper issue.
>
> Duh. Of course this isn't a problem. We...