- Oct 08, 2010
-
-
Jim Grosbach authored
llvm-svn: 116059
-
Kenneth Uildriks authored
Start separating out code metrics into code size metrics and code performance metrics. Partial Specialization will apply the former to function specializations, and the latter to all callsites that can use a specialization, in order to decide whether to create a specialization llvm-svn: 116057
-
Cameron Esfahani authored
Small patch to restore home register stack space allocation for the Win64 case. Add test case. This code eventually needs to be tighter, since it's always allocating it, even in leaf routines. llvm-svn: 116056
-
Bob Wilson authored
callee-saved registers at the end of the lists. Also prefer to avoid using the low registers that are in register subclasses required by certain instructions, so that those registers will more likely be available when needed. This change makes a huge improvement in spilling in some cases. Thanks to Jakob for helping me realize the problem. Most of this patch is fixing the testsuite. There are quite a few places where we're checking for specific registers. I changed those to wildcards in places where that doesn't weaken the tests. The spill-q.ll and thumb2-spill-q.ll tests stopped spilling with this change, so I added a bunch of live values to force spills on those tests. llvm-svn: 116055
-
Chris Lattner authored
llvm-svn: 116054
-
Chris Lattner authored
the i8 versions of instructions in some cases. In test6, we started generating: cmpq $0, -8(%rsp) ## encoding: [0x48,0x81,0x7c,0x24,0xf8,0x00,0x00,0x00,0x00] ## <MCInst #478 CMP64mi32 ## <MCOperand Reg:114> ## <MCOperand Imm:1> ## <MCOperand Reg:0> ## <MCOperand Imm:-8> ## <MCOperand Reg:0> ## <MCOperand Imm:0>> instead of: cmpq $0, -8(%rsp) ## encoding: [0x48,0x83,0x7c,0x24,0xf8,0x00] ## <MCInst #479 CMP64mi8 ## <MCOperand Reg:114> ## <MCOperand Imm:1> ## <MCOperand Reg:0> ## <MCOperand Imm:-8> ## <MCOperand Reg:0> ## <MCOperand Imm:0>> Fix this and add some comments. llvm-svn: 116053
-
Chris Lattner authored
llvm-svn: 116052
-
Chris Lattner authored
llvm-svn: 116051
-
Chris Lattner authored
llvm-svn: 116050
-
Chris Lattner authored
reapply: reimplement the second half of the or/add optimization. We should now with no changes. Turns out that one missing "Defs = [EFLAGS]" can upset things a bit. llvm-svn: 116040
-
Chris Lattner authored
"Reimplement (part of) the or -> add optimization. Matching 'or' into 'add'" With a critical fix: the add pseudos clobber EFLAGS. llvm-svn: 116039
-
Michael J. Spencer authored
llvm-svn: 116038
-
Michael J. Spencer authored
llvm-svn: 116037
-
Michael J. Spencer authored
llvm-svn: 116036
-
Daniel Dunbar authored
llvm-svn: 116034
-
Daniel Dunbar authored
'add'", which seems to have broken just about everything. llvm-svn: 116033
-
Daniel Dunbar authored
on r116007, which I am about to revert. llvm-svn: 116032
-
Daniel Dunbar authored
which depends on r116007, which I am about to revert. llvm-svn: 116031
-
Daniel Dunbar authored
llvm-svn: 116030
-
Eric Christopher authored
as thumb1. Fixes lencod. llvm-svn: 116027
-
Chris Lattner authored
only end up emitting LEA instead of OR. If we aren't able to promote something into an LEA, we should never be emitting it as an ADD. Add some testcases that we emit "or" in cases where we used to produce an "add". llvm-svn: 116026
-
Jim Grosbach authored
llvm-svn: 116024
-
Jim Grosbach authored
llvm-svn: 116022
-
Eric Christopher authored
llvm-svn: 116021
-
Jim Grosbach authored
llvm-svn: 116018
-
Chris Lattner authored
casing FsMOVAPDrr/FsMOVAPSrr. llvm-svn: 116016
-
Michael J. Spencer authored
llvm-svn: 116015
-
Chris Lattner authored
llvm-svn: 116014
-
Michael J. Spencer authored
llvm-svn: 116013
-
Dan Gohman authored
one user. This code will be restructured soon and FormulaSorter is getting in the way. llvm-svn: 116012
-
Dan Gohman authored
llvm-svn: 116011
-
Dan Gohman authored
not just base registers. llvm-svn: 116010
-
Dan Gohman authored
llvm-svn: 116009
-
Dan Gohman authored
the old use to the new one. llvm-svn: 116008
-
Chris Lattner authored
is general goodness because it allows ORs to be converted to LEA to avoid inserting copies. However, this is bad because it makes the generated .s file less obvious and gives valgrind heartburn (tons of false positives in bitfield code). While the general fix should be in valgrind, we can at least try to avoid emitting ADD instructions that *don't* get promoted to LEA. This is more work because it requires introducing pseudo instructions to represents "add that knows the bits are disjoint", but hey, people really love valgrind. This fixes this testcase: https://bugs.kde.org/show_bug.cgi?id=242137#c20 the add r/i cases are coming next. llvm-svn: 116007
-
Jakob Stoklund Olesen authored
connected components. These components should be allocated different virtual registers because there is no reason for them to be allocated together. Add the ConnectedVNInfoEqClasses class to calculate the connected components, and move values to new LiveIntervals. Use it from SplitKit::rewrite by creating new virtual registers for the components. llvm-svn: 116006
-
Dan Gohman authored
This doesn't usually matter, because the other heuristics usually succeed regardless, but it's good to keep the register use bookkeeping consistent. llvm-svn: 116005
-
Devang Patel authored
llvm-svn: 116004
-
John Thompson authored
llvm-svn: 116003
-
Evan Cheng authored
llvm-svn: 116002
-