- Nov 28, 2008
-
-
Chris Lattner authored
predecessor is itself. This doesn't make sense, and this is a dead infinite loop anyway. llvm-svn: 60210
-
- Nov 27, 2008
-
-
Chris Lattner authored
wrappers around the interesting code and use an obscure iterator abstraction that dates back many many years. Move EraseDeadInstructions to Transforms/Utils and name it RecursivelyDeleteTriviallyDeadInstructions. llvm-svn: 60191
-
Chris Lattner authored
it ends up being the entry block. llvm-svn: 60180
-
Chris Lattner authored
llvm-svn: 60163
-
- Nov 26, 2008
-
-
Chris Lattner authored
performance in most cases on the Grawp tester, but does speed some things up (like shootout/hash by 15%). This also doesn't impact compile time in a noticable way on the Grawp tester. It also, of course, gets the testcase it was designed for right :) llvm-svn: 60120
-
Chris Lattner authored
llvm-svn: 60088
-
Chris Lattner authored
heuristic: the value is already live at the new memory operation if it is used by some other instruction in the memop's block. This is cheap and simple to compute (moreso than full liveness). This improves the new heuristic even more. For example, it cuts two out of three new instructions out of 255.vortex:DbmFileInGrpHdr, which is one of the functions that the heuristic regressed. This overall eliminates another 40 instructions from 403.gcc and visibly reduces register pressure in 255.vortex (though this only actually ends up saving the 2 instructions from the whole program). llvm-svn: 60084
-
Chris Lattner authored
phrased in terms of liveness instead of as a horrible hack. :) In pratice, this doesn't change the generated code for either 255.vortex or 403.gcc, but it could cause minor code changes in theory. This is framework for coming changes. llvm-svn: 60082
-
Chris Lattner authored
llvm-svn: 60076
-
Chris Lattner authored
-enable-smarter-addr-folding to llc) that gives CGP a better cost model for when to sink computations into addressing modes. The basic observation is that sinking increases register pressure when part of the addr computation has to be available for other reasons, such as having a use that is a non-memory operation. In cases where it works, it can substantially reduce register pressure. This code is currently an overall win on 403.gcc and 255.vortex (the two things I've been looking at), but there are several things I want to do before enabling it by default: 1. This isn't doing any caching of results, so it is much slower than it could be. It currently slows down release-asserts llc by 1.7% on 176.gcc: 27.12s -> 27.60s. 2. This doesn't think about inline asm memory operands yet. 3. The cost model botches the case when the needed value is live across the computation for other reasons. I'll continue poking at this, and eventually turn it on as llcbeta. llvm-svn: 60074
-
Chris Lattner authored
optimize addressing modes. This allows us to optimize things like isel-sink2.ll into: movl 4(%esp), %eax cmpb $0, 4(%eax) jne LBB1_2 ## F LBB1_1: ## TB movl $4, %eax ret LBB1_2: ## F movzbl 7(%eax), %eax ret instead of: _test: movl 4(%esp), %eax cmpb $0, 4(%eax) leal 4(%eax), %eax jne LBB1_2 ## F LBB1_1: ## TB movl $4, %eax ret LBB1_2: ## F movzbl 3(%eax), %eax ret This shrinks (e.g.) 403.gcc from 1133510 to 1128345 lines of .s. Note that the 2008-10-16-SpillerBug.ll testcase is dubious at best, I doubt it is really testing what it thinks it is. llvm-svn: 60068
-
- Nov 25, 2008
-
-
Chris Lattner authored
can recursively match things) and scales by 0 by ignoring them. This triggers once in 403.gcc, saving 1 (!!!!) instruction in the whole huge app. llvm-svn: 60013
-
Chris Lattner authored
into a new AddressingModeMatcher class. This makes it easier to reason about and reduces passing around of stuff, but has no functionality change. llvm-svn: 60012
-
Chris Lattner authored
new FindMaximalLegalAddressingModeForOperation helper method. llvm-svn: 60011
-
Chris Lattner authored
llvm-svn: 60010
-
Chris Lattner authored
llvm-svn: 60009
-
- Nov 24, 2008
-
-
Chris Lattner authored
llvm-svn: 59990
-
Chris Lattner authored
llvm-svn: 59989
-
Chris Lattner authored
llvm-svn: 59985
-
Chris Lattner authored
llvm-svn: 59976
-
Chris Lattner authored
with an undef. llvm-svn: 59972
-
- Sep 24, 2008
-
-
Evan Cheng authored
llvm-svn: 56549
-
Eric Christopher authored
llvm-svn: 56546
-
- Sep 04, 2008
-
-
Dan Gohman authored
llvm-svn: 55779
-
- Jul 27, 2008
-
-
Dan Gohman authored
llvm-svn: 54128
-
- Jun 08, 2008
-
-
Duncan Sands authored
of apint codegen failure is the DAG combiner doing the wrong thing because it was comparing MVT's using < rather than comparing the number of bits. Removing the < method makes this mistake impossible to commit. Instead, add helper methods for comparing bits and use them. llvm-svn: 52098
-
- Jun 06, 2008
-
-
Duncan Sands authored
and better control the abstraction. Rename the type to MVT. To update out-of-tree patches, the main thing to do is to rename MVT::ValueType to MVT, and rewrite expressions like MVT::getSizeInBits(VT) in the form VT.getSizeInBits(). Use VT.getSimpleVT() to extract a MVT::SimpleValueType for use in switch statements (you will get an assert failure if VT is an extended value type - these shouldn't exist after type legalization). This results in a small speedup of codegen and no new testsuite failures (x86-64 linux). llvm-svn: 52044
-
- May 23, 2008
-
-
Dan Gohman authored
use it instead of duplicating its functionality. llvm-svn: 51499
-
- May 16, 2008
-
-
Gabor Greif authored
API change for {BinaryOperator|CmpInst|CastInst}::create*() --> Create. Legacy interfaces will be in place for some time. (Merge from use-diet branch.) llvm-svn: 51200
-
- May 13, 2008
-
-
Dan Gohman authored
several things that were neither in an anonymous namespace nor static but not intended to be global. llvm-svn: 51017
-
- May 08, 2008
-
-
Gordon Henriksen authored
Patch by Matthijs Kooijman! llvm-svn: 50861
-
- Apr 27, 2008
-
-
Chris Lattner authored
When choosing between constraints with multiple options, like "ir", test to see if we can use the 'i' constraint and go with that if possible. This produces more optimal ASM in all cases (sparing a register and an instruction to load it), and fixes inline asm like this: void test () { asm volatile (" %c0 %1 " : : "imr" (42), "imr"(14)); } Previously we would dump "42" into a memory location (which is ok for the 'm' constraint) which would cause a problem because the 'c' modifier is not valid on memory operands. Isn't it great how inline asm turns 'missed optimization' into 'compile failed'?? Incidentally, this was the todo in PowerPC/2007-04-24-InlineAsm-I-Modifier.ll Please do NOT pull this into Tak. llvm-svn: 50315
-
Chris Lattner authored
llvm-svn: 50313
-
- Apr 25, 2008
-
-
Dan Gohman authored
to the block that defines their operands. This doesn't work in the case that the operand is an invoke, because invoke is a terminator and must be the last instruction in a block. Replace it with support in SelectionDAGISel for copying struct values into sequences of virtual registers. llvm-svn: 50279
-
- Apr 06, 2008
-
-
Chris Lattner authored
llvm-svn: 49283
-
- Mar 21, 2008
-
-
Dan Gohman authored
from their aggregate operands by moving the getresult instructions. llvm-svn: 48657
-
- Mar 19, 2008
-
-
Evan Cheng authored
llvm-svn: 48556
-
- Feb 26, 2008
-
-
-
Eli Friedman authored
try to simplify them. llvm-svn: 47610
-
Evan Cheng authored
operands into inline asm block. llvm-svn: 47589
-