search for: iswintojoincrossclass

Displaying 8 results from an estimated 8 matches for "iswintojoincrossclass".

2013 Jan 07
2
[LLVMdev] LLVM ERROR: ran out of registers during register allocation
...ance to take a look into this, and if not, can you do it when you get some spare time? Thanks! 2012/12/19 Borja Ferrer <borja.ferav at gmail.com> > We did something like this back when the register allocator couldn't split >> live ranges. >> > > Yes, I remember the isWinToJoinCrossClass() function, removed here: > > http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/RegisterCoalescer.cpp?r1=152016&r2=155551&diff_format=h > that prevented some coalescing to the cost of leaving many unnecessary > copies around for very constrained regclasses like the one...
2012 Dec 19
0
[LLVMdev] LLVM ERROR: ran out of registers during register allocation
> > We did something like this back when the register allocator couldn't split > live ranges. > Yes, I remember the isWinToJoinCrossClass() function, removed here: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/RegisterCoalescer.cpp?r1=152016&r2=155551&diff_format=h that prevented some coalescing to the cost of leaving many unnecessary copies around for very constrained regclasses like the one I have. > >...
2012 Dec 19
2
[LLVMdev] LLVM ERROR: ran out of registers during register allocation
On Dec 19, 2012, at 8:58 AM, Borja Ferrer <borja.ferav at gmail.com> wrote: > Hello Jakob, > > I think I've found something interesting that may help you get a better idea of what's going on. > > While looking at the debug info I noticed that the coalescer was removing lots of copies that could help the allocator make more cross class copies. As a test, I disabled
2013 Jan 07
0
[LLVMdev] LLVM ERROR: ran out of registers during register allocation
...likely I'll have time to look at this in the near future. I'd recommend you do it yourself. /jakob > 2012/12/19 Borja Ferrer <borja.ferav at gmail.com> > We did something like this back when the register allocator couldn't split live ranges. > > Yes, I remember the isWinToJoinCrossClass() function, removed here: > http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/RegisterCoalescer.cpp?r1=152016&r2=155551&diff_format=h > that prevented some coalescing to the cost of leaving many unnecessary copies around for very constrained regclasses like the one I have. &g...
2011 Mar 26
0
[LLVMdev] Possible missed optimization?
On Mar 26, 2011, at 1:04 PM, Borja Ferrer wrote: > Hello Jakob, thanks for the reply. The three regclasses involved here are all subsets from each other and aren't disjoint. These are the basic descriptions of the regclasses involved to show what i mean: > > DREGS: R31R30, R29R28 down to R1R0 (16 regs) > DLDREGS: R31R30, R29R28 down to R17R16 (8 regs) > PTRREGS:
2013 Jan 09
2
[LLVMdev] LLVM ERROR: ran out of registers during register allocation
...#39;d > recommend you do it yourself. > > /jakob > > > 2012/12/19 Borja Ferrer <borja.ferav at gmail.com> > >> We did something like this back when the register allocator couldn't >>> split live ranges. >>> >> >> Yes, I remember the isWinToJoinCrossClass() function, removed here: >> >> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/RegisterCoalescer.cpp?r1=152016&r2=155551&diff_format=h >> that prevented some coalescing to the cost of leaving many unnecessary >> copies around for very constrained regclass...
2011 Mar 26
2
[LLVMdev] Possible missed optimization?
Hello Jakob, thanks for the reply. The three regclasses involved here are all subsets from each other and aren't disjoint. These are the basic descriptions of the regclasses involved to show what i mean: DREGS: R31R30, R29R28 down to R1R0 (16 regs) DLDREGS: R31R30, R29R28 down to R17R16 (8 regs) PTRREGS: R31R30, R29R28, R27R26 (3 regs) All classes intersect each other
2011 Mar 26
2
[LLVMdev] Possible missed optimization?
...s reloaded again and in the last COPY it says it cant get coalesced i guess because it's trying to coalesce a phys reg, if it was with vreg5 then it would coalesce it. >> Cross class coalescing also has some heuristics to prevent it from creating very small register classes I've seen isWinToJoinCrossClass in SimpleRegisterCoalescing.cpp that does exactly what you mean here, it has a check that says: // This heuristics is good enough in practice, but it's obviously not *right*. // 4 is a magic number that works well enough for x86, ARM, etc. However this piece of code is not getting executed,...